
Hi, Dnia 2013-02-21, czw o godzinie 02:48 +0000, Peter Hall pisze:
It's first time I see function type (and where is definition?) in record syntax. Can somebody explain this?
There's no definition, it's a parameter to the constructor, so the function can be anything. Taking a much simpler example, you'll be familiar with, if you do:
data Foo a = Foo a
then the first argument to the Foo constructor also doesn't have a definition. But when you use it to construct a value, then you provide one:
myFoo = Foo 3
Likewise, when you construct an Ord value, you supply a function as the value for the 'less' parameter:
numOrd = Ord { less = (<) }
or you could use a different function for a different purpose:
listLengthOrd = Ord { less = \ a b => length a < length b }
Hope that helps,
Peter
Thanks, it is clear now. I was missing that fields can be functions (a field can hold a function). -- here second field is a function data Command a = Command a (a -> a) -- do something "useful" with that executeCommand :: Command a -> a executeCommand (Command param function) = function param -- test executeCommand (Command 5 succ) == 6 Thank you, it was so simple :) Emanuel