added practicum files, updated gitignore
[fp1415.git] / files / practicum / StdGameTree_en_StdRoseTree / StdRoseTree.dcl
1 definition module StdRoseTree
2
3 import StdClass
4
5 /** This module defines rose trees.
6 */
7 :: RoseTree a = Node a [RoseTree a]
8 :: Children a :== a -> [a]
9 :: PruneDepth :== Int
10
11 iteratetree :: !(Children a) a -> RoseTree a
12
13 root :: !(RoseTree a) -> a
14 children :: !(RoseTree a) -> [RoseTree a]
15 depth :: !(RoseTree a) -> Int
16
17 maptree :: (a -> b) !(RoseTree a) -> RoseTree b
18 prunetree :: !PruneDepth !(RoseTree a) -> RoseTree a
19 bonsai :: !(RoseTree a) -> RoseTree a | Eq a
20 paths :: !(RoseTree a) -> [[a]]