3 data AList a = ANil | ACons a (AList a)
6 listtoalist (x:xs) = ACons x (listtoalist xs)
9 alisttolist (ACons a as) = (a : alisttolist as)
11 mapalist f ANil = ANil
12 mapalist f (ACons a as) = ACons (f a) (mapalist f as)
16 incchar c# = chr# (ord# c# +# 1#)
19 = let as1# = mapalist{-BChar-} tochar as0
20 as2# = mapalist{-CharChar-} incchar as1#
21 as3 = mapalist{-CharB-} fromchar as2#
24 dolist xs = alisttolist (doalist (listtoalist xs))
28 putStr (unlines (map dolist (lines input)))
31 data AListChar = ANilChar | AConsChar Char# AListChar
33 mapalistBChar f ANil = ANilChar
34 mapalistBChar f (ACons a as) = AConsChar (f a) (mapalistBChar f as)
36 mapalistCharChar f ANilChar = ANilChar
37 mapalistCharChar f (AConsChar a as) = AConsChar (f a) (mapalistCharChar f as)
39 mapalistCharB f ANilChar = ANil
40 mapalistCharB f (AConsChar a as) = ACons (f a) (mapalistCharB f as)