<div dir="ltr">I'm afraid the answers so far haven't been as clear as they should.  You want (), and no one at all will be surprised by this use of ().<div><br></div><div>() is the type that says the value should contain no information.  There is one possible value; and since all values of () are the same, there's no information contained in the choice of value.  It is completely standard to use () for situations exactly like this, where a type was designed with the possibility of some information being communicated, but in this case there's really nothing to say.  Your situation is exactly analogous to common uses, like IO () as the type for IO actions with no result.</div><div><br></div><div>So where does Void fit in?  Void is a type that cannot occur at all!  There are NO possible values for Void.  The result is that there are no possible values for Foo Void e.  And therefore, if you define Batch i e using Void, the only values of Batch i e are those that have an empty list, so Batch i e is isomorphic to Int.  This is NOT what you want.</div><div><br></div><div>(The above is ignoring bottoms.  It's true that you can create other possible values of Foo Void e by using undefined as a value for Void.  This isn't a road you want to go down.)</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Mar 25, 2017 at 2:21 AM, Bardur Arantsson <span dir="ltr"><<a href="mailto:spam@scientician.net" target="_blank">spam@scientician.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 2017-03-25 00:45, David Feuer wrote:<br>
> Using Void states that the list will always be empty, because the only<br>
> way to put elements in it would be to fill in the Void fields with<br>
> bottoms.<br>
<br>
</span>Right, so I kind of took it to mean "don't even bother trying to look at<br>
this -- there's nothing here", but I guess it could get kind of awkward<br>
if you were to, say, try to sort the list further. You'd have to<br>
purposefully avoid the field explicitly...<br>
<br>
Haven't go to it, but I'm probably going to go with a newtype and punt<br>
the naming by just doing Foo' vs Foo. After all, naming is really hard. :).<br>
<div class="HOEnZb"><div class="h5"><br>
Regards,<br>
<br>
______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</div></div></blockquote></div><br></div>