From 379b6353396ca2401241d714733d570629835ffe Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Fri, 6 Feb 2015 08:39:37 +0100 Subject: added practicum files, updated gitignore --- files/practicum/BinTreeMapEnFold.icl | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 files/practicum/BinTreeMapEnFold.icl (limited to 'files/practicum/BinTreeMapEnFold.icl') diff --git a/files/practicum/BinTreeMapEnFold.icl b/files/practicum/BinTreeMapEnFold.icl new file mode 100644 index 0000000..c74a454 --- /dev/null +++ b/files/practicum/BinTreeMapEnFold.icl @@ -0,0 +1,34 @@ +module BinTreeMapEnFold + +import StdEnv + +:: BTree a = Tip a | Bin (BTree a) (BTree a) + +testboom = Bin (Bin (Bin (Tip 1) (Tip 2)) (Tip 3)) (Bin (Bin (Tip 4) (Tip 5)) (Bin (Tip 6) (Bin (Tip 7) (Tip 8)))) + +mapbtree :: (a -> b) (BTree a) -> BTree b +mapbtree f (Tip a) = Tip (f a) +mapbtree f (Bin t1 t2) = Bin (mapbtree f t1) (mapbtree f t2) + +foldbtree :: (a a -> a) (BTree a) -> a +foldbtree f (Tip a) = a +foldbtree f (Bin t1 t2) = f (foldbtree f t1) (foldbtree f t2) + +f1 :: // meest algemene type +f1 = foldbtree (+) + +f2 :: // meest algemene type +f2 = foldbtree (+) o (mapbtree (const 1)) + +f3 :: // meest algemene type +f3 = foldbtree (\x y -> 1 + max x y) o (mapbtree (const 0)) + +f4 :: // meest algemene type +f4 = foldbtree (++) o (mapbtree (\x -> [x])) + +Start :: (Int,Char,Int,Char,Int,Char,[Int],Char) +Start = (f1 testboom, '\n' + ,f2 testboom, '\n' + ,f3 testboom, '\n' + ,f4 testboom, '\n' + ) -- cgit v1.2.3