<div dir="ltr">It is possible to go part of the way.  See for example, the NonEmpty type in the semigroups package.  It is a list that always has at least one element by restricting the operations you can do to the type without turning it into a normal list.  You could easily adapt that solution to a sixteen element list, but it might not be a reasonable amount of trouble to go through.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 17, 2015 at 1:26 PM, Kelong Cong <span dir="ltr"><<a href="mailto:kelongcong@gmail.com" target="_blank">kelongcong@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I have a function that takes a list as its parameter. The list must always have the same length, for example 16. Instead of producing a "Nothing" or bottom out when an invalid list is supplied, are there ways to verify this at compile time? If not, are there alternative data types that has this kind of functionality?<br></div><div><br></div><div>Thanks,</div><div>Kelong</div><div><br></div></div>
<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>