From 84ae9c0267a32488d5163e4fec325fb723703090 Mon Sep 17 00:00:00 2001 From: Julian T Date: Tue, 11 Jan 2022 12:01:29 +0100 Subject: Add exam notes for db and pp --- sem7/pp/larger.hs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'sem7/pp/larger.hs') 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 -- cgit v1.2.3