Proposal: add `on` to the Prelude

Elliot Cameron eacameron at gmail.com
Wed Sep 11 01:32:29 UTC 2019


Hilariously, I'm mild -1 on this. Haskell is an extremely import-heavy
language. Anyone who isn't willing to just write their own mini-Prelude
should be ready to import things like `on`. Why isn't `for` exported in
Prelude? What about `&`? Both of these are extremely useful and common,
even moreso than *on*! And their implementation is *even shorter*. It's a
slippery slope.

On Tue, Sep 10, 2019 at 6:59 PM David Feuer <david.feuer at gmail.com> wrote:

> Indeed, there are a lot more conflicts than I'd have expected. Ignoring
> functions with the same type, Hoogle shows this name in the below packages.
> I have no sense of the overall significance of the specific packages or
> (equally importantly) of the `on` function within each.
>
> haskell-gi-base:
> on :: forall object info m . (GObject object, MonadIO m, SignalInfo info)
> => object -> SignalProxy object info -> HaskellCallbackType info -> m
> SignalHandlerId
>
> brick:
> on :: Color -> Color -> Attr
>
> esqueletto:
> on :: SqlExpr (Value Bool) -> SqlQuery ()
>
> relational-query (both):
> on :: MonadQuery m => Predicate Flat -> m ()
> on :: MonadQuery m => QueryA m (Predicate Flat) ()
>
> threepenny-gui:
> on :: (element -> Event a) -> element -> (a -> UI void) -> UI ()
>
> miso:
> on :: MisoString -> Decoder r -> (r -> action) -> Attribute action
>
> wild-bind:
> on :: i -> v -> Binder i v ()
>
> massiv-io:
> on :: Pixel X Bit
>
> selda-postgresql:
> on :: Text -> Text -> PGConnectInfo
>
>
> On Tue, Sep 10, 2019, 6:42 PM Ryan Trinkle <ryan.trinkle at gmail.com> wrote:
>
>> One note: this does conflict with some other libraries, for instance
>> GTK2HS
>>
>> On Tue, Sep 10, 2019 at 6:26 PM chessai . <chessai1996 at gmail.com> wrote:
>>
>>> +1
>>>
>>> On Tue, Sep 10, 2019, 5:53 PM David Feuer <david.feuer at gmail.com> wrote:
>>>
>>>> Every time I reach for Data.Function.on, I feel like a total dolt for
>>>> having to import a module to get a function whose implementation is barely
>>>> longer than the import. And it's a really good function too! Can we please
>>>> add it to the Prelude?
>>>>
>>>>   on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
>>>>   (.*.) `on` f = \x y -> f x .*. f y
>>>> _______________________________________________
>>>> 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
>>>
>> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20190910/15e13413/attachment.html>


More information about the Libraries mailing list