wiki/haskell/courses/upenn_cs194/week_1.page

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