blob: 5618faf024c0a79db5590a391ac0fcb6c53988bc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import Data.Maybe
data LTree = LLeaf String | LNode LTree LTree
data LTreeRoot = LTreeRoot LTree Float
treemerge :: LTreeRoot -> LTreeRoot -> LTreeRoot
treemerge (LTreeRoot ta la) (LTreeRoot tb lb) = LTreeRoot (LNode ta tb) (la + lb)
data Bit = Zero | One
instance Show Bit where
show Zero = "0"
show One = "1"
createBitList :: String -> Maybe [Bit]
createBitList [] = Just []
createBitList (c:rest) | c == '0' = createBitList rest >>= Just . (:) Zero
| c == '1' = createBitList rest >>= Just . (:) One
| otherwise = Nothing
maketable :: LTree -> [([Bit], String)]
maketable = recur []
where recur prefix (LLeaf val) = [(reverse prefix, val)]
recur prefix (LNode left right) =
recur (Zero : prefix) left ++
recur (One : prefix) right
testTree = LNode (LLeaf "Hej") (LNode (LLeaf "Med") (LLeaf "Dig"))
|