練習

foldlをどう書いたっけな

list1 = fromhsl [ 1,2,3,4]
val = listfoldr (-) 0 list1
main = putStrLn  (show val)

data List a = Nil | Cons a (List a)

fromhsl [] = Nil
fromhsl (x:xs) = Cons x (fromhsl xs)
tohsl Nil = []
tohsl (Cons x xs) = x : (tohsl xs) 

llen (Nil) = 0
llen (Cons x xs) = 1 + llen xs
listhead (Cons x xs) = x
listtail (Cons x Nil) = x
listtail (Cons x xs) = listtail xs

listfoldr f z (Nil) = z
listfoldr f z (Cons x xs) = f x (listfoldr f z xs)