84 lines
1.5 KiB
Plaintext
84 lines
1.5 KiB
Plaintext
---
|
|
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
|