[Haskell-cafe] Use cases of empty type classes

KwangYul Seo kwangyul.seo at gmail.com
Wed Mar 9 12:45:19 UTC 2016


Hi,

Simon Marlow's paper[1] introduces a type class named `Exception` which has
no methods.

Here `Exception` is defined as a synonym for `Typeable` and `Show`:

class (Typeable a, Show a) => Exception a


[1] "An Extensible Dynamically-Typed Hierarchy of Exceptions
http://community.haskell.org/~simonmar/papers/ext-exceptions.pdf



On Wed, Mar 9, 2016 at 12:48 AM, Geraldus <heraldhoi at gmail.com> wrote:

> Thanks everybody.  I found this helpful (:
>
> вт, 8 мар. 2016 г. в 19:58, Alex Rozenshteyn <rpglover64 at gmail.com>:
>
>> You can use them to claim something about multiple type classes at once,
>> with some advantages over using ConstraintKinds for the same purpose:
>> https://www.reddit.com/r/haskell/comments/49em92/haskells_typeclasses_we_can_do_better/d0rwvi8?context=2
>>
>>
>> On Tue, Mar 8, 2016 at 6:36 AM Adam Bergmark <adam at bergmark.nl> wrote:
>>
>>> I have two use cases for them
>>>
>>>
>>>    - In fay-jquery there’s an empty Selectable class that has instances
>>>    for all elements that can be passed to the jQuery function, there is no
>>>    need for methods since we in the background just pass the object along, but
>>>    we want to make sure we don’t pass something nonsensical.
>>>    - In a rest API serving JSON you need ToJSON and FromJSON instances
>>>    for each type, but since internal APIs may also use JSON it’s possible that
>>>    you by accident pass a type that isn’t versioned and supposed to be
>>>    included in the public API. There I can have an empty PublicApiType class
>>>    with instances for all public types to give a type error if I pass
>>>    something internal by mistake.
>>>
>>>
>>> /Adam Bergmark
>>>
>>>
>>> On Tue 08 Mar 2016 at 07:10 Tomas Tauber <Tomas Tauber
>>> <Tomas+Tauber+%3Ctomtau at connect.hku.hk%3E>> 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
>>>> Haskell-Cafe 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
>>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe 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/20160309/fc5e5880/attachment.html>


More information about the Haskell-Cafe mailing list