added practicum files, updated gitignore
[fp1415.git] / files / practicum / GenTree.dcl
1 definition module GenTree
2
3 import StdClass
4
5 :: GenTree a b = Node a [GenTree a b] | Leaf b
6
7 :: Either a b = This a | That b
8
9 root :: (GenTree a b) -> Either a b
10 trees :: (GenTree a b) -> [GenTree a b]
11
12 isNodeMember :: a (GenTree a b) -> Bool | Eq a
13 isLeafMember :: b (GenTree a b) -> Bool | Eq b
14 allNodes :: (GenTree a b) -> [a]
15 allLeaves :: (GenTree a b) -> [b]
16 allMembers :: (GenTree a a) -> [a]
17
18 map2 :: (a -> c,b -> d) (GenTree a b) -> GenTree c d