duck =
[ quack = (prn "Quack")
fly = (prn "Flap, Flap") ]
person %n =
[ quack = (prn "@%n walks in the forest and imitates ducks to draw them")
fly = (prn "@%n takes an airplane") ]
quack-and-fly [ quack %q fly %f ] = %q; %f
quack-and-fly duck
quack-and-fly person "Jules Verne"
Oh my, am I going to invent a dynamically typed Haskell with immutable objects? I guess next will be laziness and monads...