updates to cs194 + language overview
parent
23c6661b1d
commit
1fe0979739
|
@ -0,0 +1,83 @@
|
|||
---
|
||||
title: Week One Notes
|
||||
toc: no
|
||||
format: markdown
|
||||
...
|
||||
|
||||
# Week One - Haskell Basics
|
||||
|
||||
## What Is Haskell?
|
||||
|
||||
* Created in late 1980s by academics
|
||||
* Functional
|
||||
* Pure
|
||||
* Lazy
|
||||
* Statically Typed
|
||||
|
||||
## Course Themes
|
||||
|
||||
* Types
|
||||
* Abstraction
|
||||
* Wholemeal Programming
|
||||
|
||||
## Literate Haskell
|
||||
|
||||
* Only lines preceded by '>' are code
|
||||
* All other lines are comments
|
||||
|
||||
## Declarations of Variables
|
||||
|
||||
~~~ {.haskell}
|
||||
x :: Int
|
||||
x = 3
|
||||
~~~
|
||||
|
||||
* Declares a variable `x` of type `Int`
|
||||
* Defines the value of the variable `x` to be `3`
|
||||
* `=` is *definition*, not *assignment*
|
||||
* variables are just names for values
|
||||
|
||||
## Basic Types
|
||||
|
||||
* `Int` - Machine-sized integers
|
||||
* `Integer` - Arbitrary-precision integers
|
||||
* `Double` - Double-precision floating point
|
||||
* `Bool` - Booleans
|
||||
* `Char` - Unicode characters
|
||||
* `String` - Lists of characters with special syntax
|
||||
|
||||
## GHCi
|
||||
|
||||
* A Haskell Read Eval Print Loop (REPL)
|
||||
* `:load` - load a haskell file
|
||||
* `:reload` - reload the file
|
||||
* `:type` - return the type of an expression
|
||||
* `:?` - give a list of commands
|
||||
|
||||
## Arithmetic
|
||||
|
||||
* Infix operators, `+`, `-`, `*`, `\`, `^`
|
||||
* Negation needs parens: `(-3)`
|
||||
* `div` for integer division
|
||||
* `mod` for integer remainder
|
||||
* Backticks turn named functions to infix operators
|
||||
|
||||
## Boolean Logic
|
||||
|
||||
*
|
||||
|
||||
## Defining Basic Functions
|
||||
|
||||
## Pairs
|
||||
|
||||
## Using Functions, Multiple Arguments
|
||||
|
||||
## Lists
|
||||
|
||||
## Constructing Lists
|
||||
|
||||
## Functions on Lists
|
||||
|
||||
## Combining Functions
|
||||
|
||||
## A Word About Error Messages
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
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]().
|
Loading…
Reference in New Issue