[Haskell-cafe] Use cases of empty type classes
David Feuer
david.feuer at gmail.com
Thu Mar 10 19:59:23 UTC 2016
The constraints package currently uses
class Any => Bottom where
no :: Dict a
It should probably actually use
no :: a
but that's a minor point.
There are two ideas:
1. The class constraint Any is a stuck type family, so it's utterly
impossible to create an instance of Bottom. Thus any entailment c :-
Bottom implies that c is unsatisfiable.
2. There's an entailment
bottom :: Bottom :- c
bottom = Sub no
On Thu, Mar 10, 2016 at 1:42 PM, Mitchell Rosen <mitchellwrosen at gmail.com>
wrote:
> One empty typeclass I use often not only has no methods, but also has no
> members.
>
> class Void
>
> This is useful in type families that return Constraint, when you want to
> say this constraint is "unsatisfiable". I suppose returning something like
> "True ~ False" would also suffice, but isn't as pretty.
>
> On Monday, March 7, 2016 at 10:10:48 PM UTC-8, Tomas Tauber wrote:
>>
>> Hi everyone,
>>
>> I have one question. What are current use cases of type classes with no
>> methods?
>>
>> I saw early uses in type-level programming (e.g. HList [1]).
>> In the OO world, interfaces with no methods are called marker interfaces
>> -- their use cases range from things that could be done with datatype
>> generic programming in Haskell (e.g. serialization) to metadata annotations
>> (e.g. RandomAccess [2]).
>>
>> Regards,
>>
>> Tomas Tauber
>>
>>
>> [1] http://okmij.org/ftp/Haskell/HList-ext.pdf
>> [2] https://docs.oracle.com/javase/8/docs/api/java/util/RandomAccess.html
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskel... at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160310/c6557c06/attachment.html>
More information about the Haskell-Cafe
mailing list