aboutsummaryrefslogtreecommitdiff
path: root/sem7/pp/larger.hs
diff options
context:
space:
mode:
authorJulian T <julian@jtle.dk>2022-01-11 12:01:29 +0100
committerJulian T <julian@jtle.dk>2022-01-11 12:01:29 +0100
commit84ae9c0267a32488d5163e4fec325fb723703090 (patch)
tree7b5dc72eee1ce86c401500f0085f1cf4fa7ea427 /sem7/pp/larger.hs
parent97a67fae19de5c824d4baa7ead1965f97f28483e (diff)
Add exam notes for db and pp
Diffstat (limited to 'sem7/pp/larger.hs')
-rw-r--r--sem7/pp/larger.hs21
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