Name of 1-Tuple Data Type

Oleg Grenrus oleg.grenrus at iki.fi
Thu Jan 18 08:36:37 UTC 2018


Are we talking about the following:

    {-# LANGUAGE MagicHash, KindSignatures #-}

    import GHC.Exts

    data Unit# (a :: TYPE 'UnliftedRep) = Unit# a

    -- | Also known as:
    --
    --
https://hackage.haskell.org/package/vector-0.12.0.1/docs/Data-Vector-Fusion-Util.html#t:Box
    --
https://hackage.haskell.org/package/OneTuple-0.2.1/docs/Data-Tuple-OneTuple.html#t:OneTuple
    data Unit  (a :: TYPE 'LiftedRep)   = Unit a

    -- | Also known as
    --
    --
https://hackage.haskell.org/package/vector-0.12.0.1/docs/Data-Vector-Fusion-Util.html#t:Id
    --
https://hackage.haskell.org/package/Only-0.1/docs/Data-Tuple-Only.html
    --
https://hackage.haskell.org/package/generics-sop-0.3.2.0/docs/Generics-SOP-BasicFunctors.html#t:I
    newtype Identity a = Identity a


-- 

Some libraries (cassava, postgresql-simple - today they use different
`Only`!)
need a wrapper around a type to provide `Field a => Row a` instances,

I haven't needed a `Box` around lifted type, except when putting things
into strict containers. That name weren't proposed, but I don't feel
strongly for or against. Yet, I think `Box#` and `Box` have nice
intuition in them.

- Oleg


On 18.01.2018 10:27, Andreas Abel wrote:
> I deem this feature outside of the mainstream, so it should not occupy
> a short nice name.
>
> I suggest  UnaryTuple.
>
> On 18.01.2018 09:22, Simon Peyton Jones via Libraries wrote:
>> I quite like Solo.
>>
>> Simon
>>
>> *From:*Libraries [mailto:libraries-bounces at haskell.org] *On Behalf Of
>> *Theodore Lief Gannon
>> *Sent:* 18 January 2018 02:42
>> *To:* Ryan Reich <ryan.reich at gmail.com>
>> *Cc:* Haskell Libraries <Libraries at haskell.org>
>> *Subject:* Re: Name of 1-Tuple Data Type
>>
>> I've seen Only in the wild, and it's probably my favorite of the
>> initial suggestions for the same reasons as Ryan. Mono is my second
>> pick from that list.
>>
>> Id is very clean, but I could see pedagogical issues arising from
>> name confusion. Sing(le(ton)) is a terrible idea for the same reason.
>>
>> Venturing my own paint swatch: Solo fits in nicely with the
>> established size-specific names (pair, triple, etc.) and has all the
>> good traits: short, self-explanatory, nothing with a confusingly
>> similar name (that I know of).
>>
>> On Jan 17, 2018 4:35 PM, "Ryan Reich" <ryan.reich at gmail.com
>> <mailto:ryan.reich at gmail.com>> wrote:
>>
>>     Only has two virtues I can see easily: it's short (shorter than
>>     almost all the others), and it has the same feel as Maybe.
>>
>>     There is also Id, the name of the mathematical function that this
>>     type (and corresponding data) constructor is. Less pithy but even
>>     less intrusive.
>>
>>     On Jan 17, 2018 15:47, "Andrew Martin" <andrew.thaddeus at gmail.com
>>     <mailto:andrew.thaddeus at gmail.com>> wrote:
>>
>>         Required background information:
>>         https://ghc.haskell.org/trac/ghc/ticket/14673
>>
>>         GHC has a one-tuple (both a boxed variant and an unboxed
>>         variant). The unboxed variant currently must be fully applied
>>         whenever it is used. This is in stark contrast to all the other
>>         n-tuples (n > 1). It stems entirely from an issue of syntax. The
>>         solution decided on is to provide a normal prefix name for the
>>         1-tuple. The name that GHC uses internally for this type is
>>         `Unit#` (there is also a boxed variant Unit). However, in the
>>         haskell community, the word "unit" already refers to the nullary
>>         tuple, not the unary tuple. So, we're bikeshedding the name.
>>
>>         Here are some possible options:
>>
>>         * Unary (as in unary tuple)
>>
>>         * Single (as in single, double, triple)
>>
>>         * Singleton (as is singleton, doubleton, tripleton)
>>
>>         * Only
>>        
>> (https://hackage.haskell.org/package/Only-0.1/docs/Data-Tuple-Only.html
>>        
>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fhackage.haskell.org%2Fpackage%2FOnly-0.1%2Fdocs%2FData-Tuple-Only.html&data=02%7C01%7Csimonpj%40microsoft.com%7C3db602b14f26474965ff08d55e1d285f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636518401685292292&sdata=fMbHCFU%2Br3JHwmI8a4QgHD26fhoclfklE3xA0O6tCE4%3D&reserved=0>)
>>
>>         * OneTuple
>>        
>> (https://hackage.haskell.org/package/OneTuple-0.2.1/docs/Data-Tuple-OneTuple.html
>>        
>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fhackage.haskell.org%2Fpackage%2FOneTuple-0.2.1%2Fdocs%2FData-Tuple-OneTuple.html&data=02%7C01%7Csimonpj%40microsoft.com%7C3db602b14f26474965ff08d55e1d285f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636518401685292292&sdata=rRLW8KJoKT5IQ5Y6s3kMrUOiUGk6xa77zb5VvGuAfGw%3D&reserved=0>)
>>
>>         * Uni (means "one" in latin or greek or something like that)
>>
>>         * Mono (means "one" in latin or greek or something like that)
>>
>>         I would appreciate any feedback on the suggestions I provided or
>>         any additional suggestions for the name. If you have concerns
>>         about the feature itself, comment on the GHC Trac ticket. I'd
>>         prefer to keep this thread focused on just the problem of coming
>>         up with a name.
>>
>>         --
>>         -Andrew Thaddeus Martin
>>
>>         _______________________________________________
>>         Libraries mailing list
>>         Libraries at haskell.org <mailto:Libraries at haskell.org>
>>         http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>        
>> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Flibraries&data=02%7C01%7Csimonpj%40microsoft.com%7C3db602b14f26474965ff08d55e1d285f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636518401685292292&sdata=AytyB%2BhKwE1TDDc8ohTJ9gDcCZgcizoyt8Tmue0u9Zs%3D&reserved=0>
>>
>>
>>     _______________________________________________
>>     Libraries mailing list
>>     Libraries at haskell.org <mailto:Libraries at haskell.org>
>>     http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>    
>> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Flibraries&data=02%7C01%7Csimonpj%40microsoft.com%7C3db602b14f26474965ff08d55e1d285f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636518401685292292&sdata=AytyB%2BhKwE1TDDc8ohTJ9gDcCZgcizoyt8Tmue0u9Zs%3D&reserved=0>
>>
>>
>>
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>
>
>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20180118/793484d6/attachment-0001.sig>


More information about the Libraries mailing list