Concurrent Clean : [quiz] リスト要素の正規化(2)
http://karetta.jp/article/blog/oneline/008668
maxInt =: 0x7fffffff ::Tree a = Node a [Tree a] norm t = let (norm_t, m) = f maxInt t m in norm_t where f n (Node i ts) m = let g t (ts,n) = let (t2,n2) = f n t m in ([t2:ts], n2) (ts2,n2) = foldr g ([],n) ts in (Node (i / m) ts2, min i n2) t :: Tree Int t = Node 9 [Node 15 [], Node 12 [Node 3 [], Node 15[]], Node 27 [Node 6 [Node 18 [], Node 15 []]]] Start = norm t