diff --git a/haskell/sessions/16_03/notes.md b/haskell/sessions/16_03/notes.md new file mode 100644 index 0000000..389ff98 --- /dev/null +++ b/haskell/sessions/16_03/notes.md @@ -0,0 +1,64 @@ +## Table +| Topic | Description | Confidence | +|-------|-------------|------------| +| Signatures | Checking whether the expression types are correct | 😐 | +| Programming | Writing code to solve an algorithmic problem | 😐 | +| Higher order functions | Demonstrate understanding of higher order functions, usually by chaining them | 😊 | +| List comprehensions | Demonstrate understanding of list comprehensions | 😊 | +| Recursion/infinite lists | Infinitely generating lists, usually by recursion and/or list comprehensions | 😐 | +| ADTs | Algebraic Data Types, usually defining a data type and writing functions that operate on it | 😕 | +| Proof on lists | Proving properties of functions that operate on lists | 😕 | +| Proof on trees/ADTs | Proving properties of functions that operate on trees or ADTs | 😕 | + +```hs +expr = (:) . (:) + +(:) :: a -> [a] -> [a] +(.) :: (c -> d) -> (b -> c) -> b -> d + +=> + +a -> ([a] -> [a]) = b -> c + +b = a +c = [a] -> [a] + +--- + +a' -> [a'] -> [a'] = c -> d +a -> [a] -> [a] = b -> c + +b = a +c = [a] -> [a] + +a' = [a] -> [a] +[[a] -> [a]] -> [[a] -> [a]] = d + + +expr :: b -> d + => +expr :: a -> [[a] -> [a]] -> [[a] -> [a]] +``` + + + +```hs +f = \x y -> x (x (x y)) +``` + +Rigorous solution of the above. + + +## Look into +> How does one do the equations? + +> CLI is functional lol + +> Lazy and singly-linked lists + +> Y combinator - ? + + +## Resources +- [course](https://www.cis.upenn.edu/~cis1940/spring15/lectures.html) +- [standard list](https://hackage.haskell.org/package/base-4.21.0.0/docs/Data-List.html) \ No newline at end of file