--- title: Haskell Language toc: no format: markdown ... Haskell is a programming language; a formal notation for describing computation. It can be described in terms of its [syntax]() and [semantics](). It is also often helpful to know about the [origins]() and [intuitions]() behind its concepts as well. It is one thing to know *about* a language, and quite another to know how to *use* it well. Learning to express ideas a language effectively involves the [pragmatics]() of the language. # Haskell Programs A program in Haskell is a collection of [modules](), including at least the `Main` module. Modules consist of [declarations](), which define elements of the program. The declarations contain [expressions](), which denote [values]() and have [types](). All of the above are built syntactically from the [lexical structure]() of text in files. # Haskell Tools Although Haskell is a useful language for communication of ideas about computation between humans, it also forms a practical language for executing programs on computers when coupled with [implementations]().