-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add flip foldMap
#87
Comments
It seems to be a pattern that these functions come in flipped and non-flipped versions, so it doesn't seem unreasonable. I think the question of what it should be named is probably key. If the name seems to obviously indicate what it does, then it seems good to add. If the name isn't obvious, then it would require people to look up, and probably makes code using it harder to understand. I don't have any good ideas for a name, but I think that's the key question. |
What about |
While I did write that article, I don't think the word "summarize" is sufficiently precise to make a good name. Here are some candidates off the top of my head:
|
I stand by my suggestion of |
Agreed |
flipped foldMap:
(Foldable t, Monoid c) => t a -> (a -> c) -> c
It is similar to
whenJust
, but more pure, whilewhenJust
is inherently effectful since it returns unit.It can be used e.g. in the HTML AST of an Elm-style render function, when you want to optionally render something. In that case you'd wanna render nothing at all (mempty) when you get a Nothing.
In that case, the instantiation would be
Maybe a -> (a -> HTML) -> HTML
. If you hadmbMyNumber
, you could doflippedFoldMap mbMyNumber renderNumber
instead ofcase mbMyNumber of Nothing -> mempty; Just x -> renderNumber x
.I am posting the issue here because I think the function is very general, and I was expecting
whenJust
to do just this. So maybe other people will have the same suspicion, and it would make sense to have this function next to the existingwhenJust
. The problem is, I don't know what to call this flipped foldMap.On IRC, dsal made me aware that
whenJust = flip traverse_
. Maybe the fact thatwhenJust
could be more general than it is, means that the general version should also be available? It seems weird to argue thatflip traverse_
should be specialized butflip foldMap
shouldn't. Either way, to have this added, we'd need a name, and the best name I can think of iswhenJust
, but it is taken. Would love to hear whether you think this function belongs here or not, and what it should be called.Thanks for your library, it has been very useful.
The text was updated successfully, but these errors were encountered: