diff options
author | Julian T <julian@jtle.dk> | 2022-01-11 12:01:29 +0100 |
---|---|---|
committer | Julian T <julian@jtle.dk> | 2022-01-11 12:01:29 +0100 |
commit | 84ae9c0267a32488d5163e4fec325fb723703090 (patch) | |
tree | 7b5dc72eee1ce86c401500f0085f1cf4fa7ea427 /sem7/pp/larger.hs | |
parent | 97a67fae19de5c824d4baa7ead1965f97f28483e (diff) |
Add exam notes for db and pp
Diffstat (limited to 'sem7/pp/larger.hs')
-rw-r--r-- | sem7/pp/larger.hs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sem7/pp/larger.hs b/sem7/pp/larger.hs index 5618faf..2cf8e57 100644 --- a/sem7/pp/larger.hs +++ b/sem7/pp/larger.hs @@ -1,5 +1,26 @@ import Data.Maybe +-- Fra lec5 +valid :: (Integral a, Ord a) => [(a, b)] -> Bool +valid = recur empty + where recur _ [] = True + recur known (pair:rest) = + if key `member` known + then False + else recur (insert key known) rest + where key = fst pair + + +-- TODO, case where key is not in is unhandled +lookup' :: (Integral a, Ord a) => [(a, b)] -> a -> b +lookup' (pair:rest) key = if (fst pair) == key + then (snd pair) + else lookup' rest key + +-- I dont see how findfun and lookup are not the same +findfun = lookup' + + data LTree = LLeaf String | LNode LTree LTree data LTreeRoot = LTreeRoot LTree Float |