Jim Snavely on 24 Mar 2012 21:39:25 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: what internet communities did you old-timers use to learn/discuss lambda topics?


You're right that good FP learning spots are hard to find.  Its a
weird nook in between academia and industry.

Most of my FP exposure is in Haskell, so the Haskell community is what
I know. Since there's a strong emphasis on
concepts, most of what you learn about Haskell is generically
applicable to all FP languages.

http://learnyouahaskell.com/ -- highly recommended, extremely clear
and accessible

Great resources for learning FP stuff in Haskell are:
http://www.reddit.com/r/haskell
http://themonadreader.wordpress.com/
http://www.haskell.org/mailman/listinfo/haskell-cafe
http://stackoverflow.com/questions/tagged/haskell

The good, kind and brilliant folk at the Haskell IRC will tell you
most anything you need to know.
The IRC channel can be intimidating, but they've always been very
helpful and hospitable to this mere mortal.

http://www.haskell.org/haskellwiki/IRC_channel

A helpful map to the world of functional type classes is Brent
Yorgey's Typeclassopedia.
http://www.haskell.org/haskellwiki/Typeclassopedia
I met Brent at last years's Haskell Hackathon here in philly. He was
friendly and indulgent of my nascent haskelling.

RE: monads - I don't know where you are on your monad journey - its
taken me a long time - and the only progress I ever made was from
writing actual programs. The more I read, the more confused I became.
(Maybe I would have had an easier time if I learned FP in school
rather than fending for myself?) But as soon as I started copying and
modifying monadic programs, I started to get it.

An important thing to understand is that monads are a generic
functional structure with many applications they're not just for IO,
or stateful updates, etc. In the order that I have learned about them:

IO monad - handles reads and writes outside of the program (to disk,
or network, etc)
Maybe monad - handles actions that might result in failure
State monad - single threads stateful updates through code
Parser monad(s) - manages progressive consumption of input /
production of structured, parsed data

If you're are just starting to understand monads, I suggest you play
with the Maybe monad. Its one of this simplest to understand, and with
the most concrete motivation.

The single clearest explanation of monads I have read is:
http://learnyouahaskell.com/a-fistful-of-monads

Some notes I took summarizing LYAH's monad walkthrough:

 functors < applicative functors < monads

 functors = Things you can map over. (e.g. lists)
 applicative functors = data in a context, which pure functions can
operate on, preserving that context
 monads = applicative functors that allow you to chain a series of
function calls together with their contexts

You can find LOTS of good monad tutorials here:
http://www.haskell.org/haskellwiki/Tutorials#Using_monads
But as I said, none of that helped me until I actually started writing
monadic code.

Also, please take all this with a LARGE grain of salt. Writing monadic
code (code using monads) is different than writing your own monads.
(which I've never done)

--Jim Snavely

On Sat, Mar 24, 2012 at 8:21 PM, Dustin Getz <dustin.getz@gmail.com> wrote:
> hi guys, i'm looking for a community on the internet somewhere which is
> friendly to newbish long-form discussion about clojure, functional
> programming, monads.
>
> any recommendations?
>
> some of the best spots are hard to find, which is why i'm asking here
> instead of just slamming my questions into
> comp.lang.clojure. discussion-oriented questions unfortunately tend to get
> moderated on stackoverflow.
>
> side note, Hunter H and I were talking about a month ago about doing a
> casual, loosely-organized mailing-list based discussion/study of SICP and
> lamba topics in general. Is this of interest to anyone? If there is interest
> I'll set up a new mailing list and start throwing out questions & discussion
> points and we'll see what happens, or maybe there are places on the internet
> where we can join an existing community. where did some of you old-timers
> learn your stuff?



-- 
--Jim