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