<div dir="ltr">&gt; <span style="font-family:arial,sans-serif;font-size:13px">It&#39;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">&gt; 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&#39;s no definition, it&#39;s a parameter to the constructor, so the function can be anything. Taking a much simpler example, you&#39;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&#39;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 &#39;less&#39; parameter:</font></div>

<div style><br></div><div style><font face="arial, sans-serif">   numOrd = Ord { less = (&lt;) }</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 =&gt; length a &lt; 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">&lt;<a href="mailto:poczta@emanuelkoczwara.pl" target="_blank">poczta@emanuelkoczwara.pl</a>&gt;</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&#39;m watching Philip Wadler &quot;Faith, Evolution, and Programming<br>
Languages&quot; (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 -&gt; a -&gt; Bool }<br>
<br>
It&#39;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>