This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
- # admin-announcements (1)
- # beginners (16)
- # boot (22)
- # cider (96)
- # clojure (146)
- # clojure-dev (5)
- # clojure-germany (7)
- # clojure-greece (3)
- # clojure-italy (5)
- # clojure-japan (76)
- # clojure-russia (6)
- # clojure-seattle (1)
- # clojure-sg (1)
- # clojure-uk (19)
- # clojure-ukraine (1)
- # clojurescript (114)
- # code-reviews (11)
- # datomic (42)
- # editors (4)
- # euroclojure (3)
- # jobs (18)
- # ldnclj (59)
- # off-topic (1)
- # om (17)
- # reagent (5)
- # yada (43)
Just looking at changes in Clojure 1.7 https://github.com/clojure/clojure/blob/master/changes.md and in amongst the lovely reader conditional and transducer goodness I quite like the format for exceptions printed to a stream..it’s a small thing but anything that helps debugging and readability is always good in my book.
Seriously, if anyone has a really good tutorial on monads point me to it (I’ve read what seems like dozens but it goes in one ear and out the other!)
@agile_geek: nice meeting you too. Are you talking about monads in Haskell or are there monads in Clojure now too?
@agile_geek: BTW, here’s the code: https://github.com/pupeno/london-colure-dojo-2015-06-30-gameweb
agile_geek: I remember liking this one when I was using Haskell: http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html but I don’t know if I like it because it was good or entertaining.
@benedek: ppl keep saying that. Same people said Clojure was simple but I’m a bit slow so took me a while to rewire my brain!
i may be mistaken (and then i dont really understand them at all 😉 ) but i think if you use clojure you use the underlying concepts all the time. using them explicitly (like algo.monads lib) might not make a practical sense...
agile_geek: This might clarify things - http://two-wrongs.com/the-what-are-monads-fallacy
"Attempting to learn how to use monads by understanding what they are is like asking "What is a musical instrument?"" Dear lord
@jonpither: I think the concept of a monad can be useful but I indeed agree that having to grok it to be able to code is unacceptable which is why I don’t think Haskell is a practical programming language for every day use.
@jonpither: I agree I don’t need to understand them. I didn’t need to know the names of common OO patterns to use them..but it helped when I wanted a short hand to refer to them when talking to other programmers. I suspect, but don’t know (see “I don’t understand Monads”) that Monads may be similar?
is perhaps close to what i meant. which basically that if you understand monads you might understand the underlying concepts of certain constructs in clojure/lisp better — again i maybe wrong here and you don’t necessarily need monads for good understanding either
yeah i agree @agile_geek i consider monads a bit like design patterns in OO. but again this is a ‘dangerous’ metaphor in a sense...
@benedek: true. I was using the analogy to point out that once you can name/recognise something you can reason about it in shorthand form…if that makes sense?
@benedek: is it a 'dangerous' metaphor (the design patterns metaphor) ? it seems like a pretty good match to me
@xlevus working on which day per month to run it on and location. May have to pay for pizzas and beer myself!
@benedek: thinking about it a bit more... individual monads are invocation patterns : the concept of monad is perhaps a meta-pattern... a pattern for invocation patterns
yeah, i see what you mean. their practical use in clojure is still a big question for me tbh
i wanted to use them in a bigish project to pass around a context (state monad perhaps) but never really got around it and it would have been a huge refactor
benedek: i've been looking at https://github.com/james-henderson/yoyo for configuring systems... but this is basically built around a continuation monad
so i tried doing the same thing with a cont-m implementation... turned out to be quite straightforward :
i started thinking this way because i have a bigish project with a load of objects configured with a declarative container approach, and functions which i realised look just like readers... i though that monads maybe offered an approach which would avoid me buggily re-inventing a wheel
but retro-fitting looks hard, so i'm keeping the approach for a greenfield project
so are you building a component system based on monads? (would be nicer than the protocol/record based ones)
yoyo's continuation monad based approach to object construction seems great so far, so i'm probably going to use that... beyond that, i'm not sure how it will pan out
i'm pretty much a n00b with monads, so i'm going to play around and see what emerges
agile_geek: this one looks relevant to your interests https://www.youtube.com/watch?v=VSdnJDO-xdg