Foundations Of Programming Languages Better: 15312

15-312: Foundations of Programming Languages

Here is proper, structured content for , a typical senior-level undergraduate or introductory graduate course (as taught at Carnegie Mellon University, which uses this course number).

-- Infer.hs inferType :: Expr -> TypeScheme inferType (Lam x e) = Forall x (inferType e) inferType (App e1 e2) = case inferType e1 of Mono (Fun t1 t2) -> Mono t2 Forall x t -> inferType (subst x t2 t) where subst x t (TV y) | x == y = t subst x t (TCon c ts) = TCon c (map (subst x t) ts) 15312 foundations of programming languages

The "Statics" of a language define what it means for a program to be "well-formed" before it ever runs. You explore: 15-312: Foundations of Programming Languages Here is proper,

In the early days of computing, programmers spoke directly to machines in raw binary—ones and zeros. It was precise, but painfully slow. As machines grew more powerful, humans built languages to bridge the gap between human thought and machine execution. But each language had its own rules, quirks, and limitations. Key Philosophy : The course treats a programming

Feature: Type Inference with Parametric Polymorphism

Key Philosophy

: The course treats a programming language as a mathematical object rather than an ad-hoc collection of features.

API Documentation: