<div dir="ltr">> <span style="font-family:arial,sans-serif;font-size:13px">It's first time I see function type (and where is definition?) in record</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">> syntax. Can somebody explain this?</span><div>
<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">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:</span></div>
<div style><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:13px"> data Foo a = Foo a</span></div><div style><span style="font-family:arial,sans-serif;font-size:13px"><br>
</span></div><div style><font face="arial, sans-serif">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:</font></div><div style>
<font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif"> myFoo = Foo 3</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">Likewise, when you construct an Ord value, you supply a function as the value for the 'less' parameter:</font></div>
<div style><br></div><div style><font face="arial, sans-serif"> numOrd = Ord { less = (<) }</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">or you could use a different function for a different purpose:</font></div>
<div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif"> listLengthOrd = Ord { less = \ a b => length a < length b }</font></div><div style><font face="arial, sans-serif"><br>
</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">Hope that helps,</font></div><div style><font face="arial, sans-serif"><br>
</font></div><div style><font face="arial, sans-serif">Peter</font></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 20 February 2013 21:18, Emanuel Koczwara <span dir="ltr"><<a href="mailto:poczta@emanuelkoczwara.pl" target="_blank">poczta@emanuelkoczwara.pl</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I'm watching Philip Wadler "Faith, Evolution, and Programming<br>
Languages" (very cool by the way):<br>
<a href="http://www.youtube.com/watch?v=8frGknO8rIg" target="_blank">http://www.youtube.com/watch?v=8frGknO8rIg</a><br>
<br>
At 00:24:14 there is strange thing on the slide:<br>
<br>
data Ord a = { less :: a -> a -> Bool }<br>
<br>
It's first time I see function type (and where is definition?) in record<br>
syntax. Can somebody explain this?<br>
<br>
Emanuel<br>
<br>
<br>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
</blockquote></div><br></div>