import List -- intersperse
import Test.Prop

data Sterm = z | s Sterm | a (Sterm,Sterm) | m (Sterm,Sterm)
stlist = [z, s(z), a(z,z), a(s(z),m(s(z),s(z)))]

data Term = Term String [Term]
azz = Term "a" [ Term "0" [], Term "0" []]

pp (Term root args) = root ++ ppargs args
ppargs args = if args==[] then ""
              else "(" ++ concat (intersperse "," (map pp args)) ++ ")"

prop_1 = pp azz -=- "a(0,0)"

prop_2 = pp (Term "*" [Term "1" [], Term "2" []]) -=- "*(1,2)"
