General Discussion

Beer & Pizza & a room full of Haskellers.  What more could you need!

Join or login to comment.

  • Michael X.

    Have we ever discussed free monads? Tekmo has recommended them to me on no fewer than 4 occasions and while I was able to cobble something together, I realize I don't have a good intuition for them.

    2 · April 16, 2014

    • eli f.

      Then if you want to grok Free Monads, you can take a look at Gabriel Gonzalez' very good post on the subject: http://www.haskellfor...­

      April 22, 2014

    • eli f.

      Then if you are wondering what I'm talking about when I refer to finally tagless, check out Gabriel's post on that too: http://www.haskellfor...­

      April 22, 2014

  • Dan S.

    I'll be presenting my thoughts on monads in a presentation suitable for those just learning them, but hopefully still thought provoking for experienced Haskellers

    2 · March 16, 2014

    • eli f.

      @picoVerse: I'm not clear what you mean. There are a lot of ways to encode "OOP" (depending on what you mean by OOP) in haskell, and there are some belabored analogies you can draw to monads. I look forward to talking to you more in meetspace about it :).

      April 16, 2014

    • Richard C.

      Thanks, Dan, for presenting. Do you have a copy of your slides or something similar that you could share with the group?

      April 22, 2014

  • Bartosz M.

    The blog post I was talking about -- lazy streams in C++ as a monad plus -- is out:

    1 · April 21, 2014

  • Richard C.

    I had fun and learnt a lot. Clearly, there is a lot more for me to learn but I'm excited.

    April 22, 2014

  • Aaron W.

    Here's the predicate example again. (Adding braces might improve the syntax after Meetup messes up the whitespace.)

    import Data.Char
    import Control.Applicative

    chrs = "ab12!@"

    -- the obvious approach:
    isAlDig1 c = isAlpha c || isDigit c

    -- do-notation
    isAlDig2 :: Char -> Bool
    isAlDig2 = do { a <- isAlpha; d <- isDigit; return (a || d) }

    -- lift the binary function into applicative
    isAlDig3 = liftA2 (||) isAlpha isDigit

    -- use applicative apply and compose operators
    isAlDig4 = (||) <$> isAlpha <*> isDigit

    main = sequence_ [ do {
    sequence_ [ putStr $ show (c, predicate c) | c <- chrs ] ;
    putStrLn "" }
    | predicate <- [isAlDig1, isAlDig2, isAlDig3, isAlDig4]

    1 · April 20, 2014

  • picoVerse

    I am working on a patent I would like to present to the group.

    April 16, 2014

    • Ian K.

      Forgot one extremely comprehensive link:­

      April 16, 2014

    • eli f.

      I personally agree with Ian Kelling on this. If you want, we can debate this briefly at the meeting, but I don't want us discussing patents/potential patents unless there is concensis it is OK.

      April 17, 2014

People in this
Meetup are also in:

Create a Meetup Group and meet new people

Get started Learn more

Meetup has allowed me to meet people I wouldn't have met naturally - they're totally different than me.

Allison, started Women's Adventure Travel

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy