<div dir="ltr">On Thu, Mar 28, 2013 at 6:32 AM, Jason Dusek <span dir="ltr">&lt;<a href="mailto:jason.dusek@gmail.com" target="_blank">jason.dusek@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
One way to think of it is, CTime is time and should follow the<br>
rules of the time. Another way is, CTime is a C type and should<br>
follow the rules of C types.  The latter perspective seems more<br>
appropriate for Foreign.C.* (we are likely to seek out some<br>
other module for modelling time).<br></blockquote><div><br></div><div>Phrasing this perhaps more clearly: the point of the FFI types is to reflect foreign types. This may well include doing things which are legal in the foreign type but not necessarily sensible for the conceptual type --- and that may even be necessary in order to, say, convert that foreign type to something more appropriate for Haskell.</div>
<div><br></div><div>It ain&#39;t pretty; but it&#39;s the FFI, it&#39;s not going to be pretty. Or well behaved (just in case an interface that requires us to expose unsafePerformIO didn&#39;t make that clear...).</div><div>
<br></div></div>-- <br><div dir="ltr"><div>brandon s allbery kf8nh                               sine nomine associates</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>                                  <a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a></div>
<div>unix, openafs, kerberos, infrastructure, xmonad        <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a></div></div>
</div>