<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;">Hi Patrik, 
<div><br /></div>
<div>The reason for the requirement of “Eq a” in your `sortListOfLists` is that you are calling myOrderFunc which carries the signature “Eq a”. If you remove the `Eq` declaration in `myOrderFunc` the compiler then would not complain about the absence of `Eq` in `sortListOfLists`. For a detailed explanation you could reference chapter 6 of Real World Haskell.</div>
<div><br /></div>
<div>Yes, you could pass the function a list of strings as well. A string is just a list of Chars. The type signature `a` does not restrict the range of types you could pass to the function. A list of lists of lists would even work. e.g. </div>
<div> <br /></div>
<blockquote style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #1abc9c;">
<div>ghci> sortListOfLists [["hello"], ["this", "is"], ["just", "a", "test”]]</div>
<div>[["hello"],["this","is"],["just","a","test"]]</div>
</blockquote>
</div>
<div name="messageSignatureSection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;"><br />
Regards,
<div>Qingbo Liu</div>
</div>
<div name="messageReplySection" style="font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, sans-serif;"><br />
On Nov 22, 2017, 16:17 -0500, Patrik Iselind <patrik.mrx@gmail.com>, wrote:<br />
<blockquote type="cite" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #1abc9c;">Hi,<br />
<br />
I'm following the Real World Haskell book and in chapter three came<br />
across the exercise to sort a list of lists. I attach what i have so far.<br />
<br />
My question is the following. Why do i need to add "Eq a =>" to the type<br />
definition of sortListOfLists? The type of a should be irrelevant as i<br />
see it, my function couldn't care less what the type of the contents of<br />
the lists in the list are, or? All my function cares about is the length<br />
of those lists in the list. The designator a in the type declaration for<br />
sortListOfLists denote the type of the contents in the lists of lists as<br />
i understand it. So a list of lists containing object i can test for<br />
equality.<br />
<br />
Another thought i have is if i really have to specify that i expect list<br />
of lists. Couldn't that be list of something else with a length, a<br />
string perhaps, just as well? In other words a type like sortListOfLists<br />
:: a -> a. As i see it that should be just as valid as the type of what<br />
i return is the same as that which i get as input regardless of it being<br />
a list or not.<br />
<br />
--<br />
Patrik Iselind<br />
<br />
<br />
_______________________________________________<br />
Beginners mailing list<br />
Beginners@haskell.org<br />
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners<br /></blockquote>
</div>
</body>
</html>