Proposal: add `on` to the Prelude

Elliot Cameron eacameron at gmail.com
Wed Sep 11 01:50:46 UTC 2019


Part of me would too...but I just don't know when this line of reasoning
stops. Do we add (>>>) and (<<<) from Category too? Then (&&&)? Of course
then we might want first, second... Oh and (<$) isn't exported but ($>) is?
Fix that too. Then come join, fix, void, when, unless, bool, fromMaybe.....
I've come to the conclusion that Prelude should err on the side of very
small because Haskell is just too diverse a place to expect everyone to
agree on all these little things. We should all be making project-specific
Preludes instead IMO.

On Tue, Sep 10, 2019 at 9:41 PM chessai . <chessai1996 at gmail.com> wrote:

> I would also prefer if (&) and `for` were exported from the Prelude.
>
> On Tue, Sep 10, 2019, 9:33 PM Elliot Cameron <eacameron at gmail.com> wrote:
>
>> 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
>>>
>> _______________________________________________
>> 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/e3717c43/attachment.html>


More information about the Libraries mailing list