996
|
1 module Misc (
|
|
2 stringToNodeTree,
|
|
3 nodeTreeToString,
|
|
4 numberToNodeTree,
|
|
5 nodeTreeToNumber,
|
|
6 apply
|
|
7 )
|
|
8 where
|
|
9
|
|
10 import Node
|
|
11
|
|
12
|
|
13 stringToNodeTree :: String -> Node
|
|
14 stringToNodeTree "" = Nil
|
|
15 stringToNodeTree (c:t) = Cons (numberToNodeTree (fromEnum c)) (stringToNodeTree t)
|
|
16
|
|
17 nodeTreeToString :: Node -> String
|
|
18 nodeTreeToString Nil = ""
|
|
19 nodeTreeToString (Cons a b) = (toEnum (nodeTreeToNumber a):nodeTreeToString b)
|
|
20
|
|
21 numberToNodeTree :: (Integral a) => a -> Node
|
|
22 numberToNodeTree 0 = Nil
|
|
23 numberToNodeTree (n+1) = Cons Nil (numberToNodeTree n)
|
|
24
|
|
25 nodeTreeToNumber :: (Integral a) => Node -> a
|
|
26 nodeTreeToNumber Nil = 0
|
|
27 nodeTreeToNumber (Cons Nil a) = (nodeTreeToNumber a) + 1
|
|
28
|
|
29
|
|
30 apply :: Node -> Node -> Node
|
|
31 apply a b = (Application a b) |