session 2

This commit is contained in:
Boyan 2025-03-16 17:25:05 +01:00
parent 0dd25768c8
commit 923a17f7ff
2 changed files with 18 additions and 8 deletions

View File

@ -38,3 +38,9 @@ Because it is the simplest recursive data structure. It is a recursive data stru
The tree is simply too complex. Linked lists are easy.
## [16th of March - Deriving types]
> How does one do this systematically?
> Lazy and singly-linked lists, what's the relation?

View File

@ -10,6 +10,10 @@
| 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 | 😕 |
## Deducing types systematically
### (:).(:)
```hs
expr = (:) . (:)
@ -41,24 +45,24 @@ expr :: a -> [[a] -> [a]] -> [[a] -> [a]]
```
### `f = \x y -> x (x (x y))` [^1]
```hs
f = \x y -> x (x (x y))
```
Rigorous solution of the above.
## Look into
## Questions
> How does one do the equations?
> CLI is functional lol
> CLI is functional?
> Lazy and singly-linked lists
> Lazy and singly-linked lists, what's the relation?
> Y combinator - ?
> 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)
- [standard list](https://hackage.haskell.org/package/base-4.21.0.0/docs/Data-List.html)
[^1]: need to find the actual rigorous way of doing this