Add Zero and One to Data.Functor (mirroring V1, U1)

Eric Seidel eric at seidel.io
Thu Jan 26 16:43:05 UTC 2017


I see the argument against One (duplicating types), but from a user’s perspective I imagine it would be quite annoying to import Zero from Data.Functor, but then be forced to 

1. remember that Proxy is isomorphic to One
2. import Proxy from elsewhere

We could add a type alias One = Proxy, and maybe even a pattern synonym for the constructor, to alleviate the UX issue. But that might bring issues of its own.

I’m neutral on the actual proposal though, as I don’t consider myself a potential user.

Eric

> On Jan 26, 2017, at 07:52, Edward Kmett <ekmett at gmail.com> wrote:
> 
> I'm similarly weakly +1 on adding Data.Functor.Zero, but -1 on One because of the existence of Proxy.
> 
> -Edward
> 
> On Wed, Jan 25, 2017 at 8:36 PM, Ryan Scott <ryan.gl.scott at gmail.com> wrote:
> You linked to the Trac issue [1], but for the purposes of motivating
> this proposal, I think it's important that we reiterate why you want
> this.
> 
> First of all, I think we should be clear that you're proposing to add
> these in the modules:
> 
> * Data.Functor.One
> * Data.Functor.Zero
> 
> Right? Not literally "Data.Functor", as the title might mislead you
> into believing.
> 
> Also, for a reason why you might want these - there are currently
> analogs in the GHC.Generics [2] module:
> 
> * data U1 a = U1 -- isomorphic to One
> * data V1 a -- isomorphic to Zero
> 
> But this is an unfortunate situation, since I'd rather not recommend
> that folks import a generics library to use what should be
> general-purpose datatypes.
> 
> Now, as for the proposal itself:
> 
> * I'm weakly +1 in favor of Zero. I think it'd be nice to have a
> proper * -> * counterpart to Void in base (that isn't V1, obviously).
> * I'm weakly -1 in favor of One, simply because we already have
> Data.Proxy, which came first.
> 
> Ryan S.
> -----
> [1] https://ghc.haskell.org/trac/ghc/ticket/13177
> [2] http://hackage.haskell.org/package/base-4.9.1.0/docs/GHC-Generics.html
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
> 
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries



More information about the Libraries mailing list