module Lib (e, modify, Format (..)) where type Code = Int type Input = String data Format = Tail Input | Node Code Format deriving (Show) instance Read Format where readsPrec _ s = [(Tail s, [])] e :: Int -> Format -> Format e code input = Node code input modify :: (Int -> Int) -> Format -> Format modify f (Tail input) = Tail input modify f (Node code input) = Node (f code) input