Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Brad Compton (he/him)
@Bradcomp
Looks great @davidchambers
David Chambers
@davidchambers
Thanks for your feedback. :)
David Chambers
@davidchambers
Small pull request seeks :eyes:: sanctuary-js/sanctuary-def#82.
It'll mean we can use $.__ or S.__ without having to rely on R.__ (or define our own placeholder value).
David Chambers
@davidchambers

Adding this line to my ~/.vimrc just blew me away:

let g:markdown_fenced_languages = ['haskell', 'javascript']

Now JavaScript code within code blocks in Markdown files has syntax highlighting. :)

Stefano Vozza
@svozza
Nice!
Aldwin Vlasblom
@Avaq

Is there a nice analogue to || when working with Maybe (like Fluture#or)? If I have two Maybe as, I want to use the first Just, or Nothing, so:

or( Just('a') , Nothing ) = Just('a')
or( Nothing , Just('b') ) = Just('b')
or( Just('a') , Just('b') ) = Just('a')
or( Nothing, Nothing ) = Nothing

Or am I looking over a better way to do this kind of thing?

Maybe#concat comes really close, but then it tries to concat its value.
Brad Compton (he/him)
@Bradcomp
@avaq Sanctuary has an or function that I think does just that.
Aldwin Vlasblom
@Avaq
Oh wow, yeah. Now that you mention it, I have seen that come by. Never had a use-case for it. Awesome :D
Thanks
Brad Compton (he/him)
@Bradcomp
:+1:
Keith Alexander
@kwijibo
David Chambers
@davidchambers
What are you expecting the result to be, @kwijibo?
Keith Alexander
@kwijibo
@davidchambers tbh, I was curious (what the result would be), which was why I tried :) Just has a concat method, so presumably is a SemiGroup, but won't accept another Just as an argument?
David Chambers
@davidchambers
If you look closely at the error message you'll see that it's complaining about the a rather than the Maybe a.
Maybe#concat only applies to a types which satisfy the Semigroup constraint (i.e. provide a concat method).

This is valid:

Maybe String ~> Maybe String -> Maybe String

This is invalid:

Maybe Number ~> Maybe Number -> Maybe Number
The values inside the maybes must themselves support concatenation.
Keith Alexander
@kwijibo
gotcha
David Chambers
@davidchambers
@ram-bot
S.Just('abc').concat(S.Just('def'))
ram-bot
@ram-bot
Just("abcdef")
Brad Compton (he/him)
@Bradcomp
What is the benefit of Maybe having a concat rather than just doing this:?
S.lift2(concat)(S.Just([1]), S.Just([2]))
David Chambers
@davidchambers
It's still useful for interoperability, @Bradcomp.
Brad Compton (he/him)
@Bradcomp
I guess you get better type checking too
Well, until S.concat is a thing
Keith Alexander
@kwijibo
I was wondering what would happen if you concat'd Just(1) with Nothing()
Just, Nothing, or "who knows"
David Chambers
@davidchambers
S.concat actually already exists, @Bradcomp, but as you say the other FL functions are coming soon!
Brad Compton (he/him)
@Bradcomp
Sorry!
David Chambers
@davidchambers
Just(1) specifically, @kwijibo, or are you wondering what happens when one concats just and nothing in general?
No problem, @Bradcomp. I'm itching to get all these pull requests finished. I'm close. I'm also trying to sort out a work permit in Berlin, and I don't know any German yet. My plan to work full-time on Sanctuary is being undermined by bureaucracy. :scream:
Brad Compton (he/him)
@Bradcomp
That's exciting! I would love to see all that stuff merged as well.
Keith Alexander
@kwijibo
S.Nothing().concat(S.Nothing()) //=> S.Nothing() <-- that's nice :)
David Chambers
@davidchambers
:)
Keith Alexander
@kwijibo
@davidchambers I was just wondering if it would be like true || false
David Chambers
@davidchambers
In what sense?
Keith Alexander
@kwijibo
that || is a type of combining, for booleans, and concat is a method for combining values
but there are other ways of combining booleans of course
David Chambers
@davidchambers
You may also be interested in S.or.
Keith Alexander
@kwijibo
yeah that was probably what made me think about it
(so what does it mean to concat them?)
David Chambers
@davidchambers
I can imagine wanting to do something like this:
@ram-bot
R.reduce(S.concat, S.Nothing(), [S.Just('foo'), S.Nothing(), S.Just('baz'), S.Just('quux')])
ram-bot
@ram-bot
Cannot read property '@@transducer/step' of undefined
David Chambers
@davidchambers
That should evaluate to Just('foobazquux').
Brad Compton (he/him)
@Bradcomp
I see! Using lift2(concat) instead resolves to Nothing()
David Chambers
@davidchambers
Ah, good point!
Keith Alexander
@kwijibo
Interesting :)