@pupeno: Morning Pablo. Nice meeting you last night.
@benedek: The first rule of Monad club is you can’t explain Monad’s?
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!)
Good morning.
@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
mogge
‘morning
@agile_geek: indeed. they are simpler than they look
@pupeno: Clojure doesn’t really have monads but I just want to understand the concept. Monad lib for Clojure here - https://github.com/funcool/cats - that started the thread about Monads!
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...
for the majority of projects anyway
agile_geek: This might clarify things - http://two-wrongs.com/the-what-are-monads-fallacy
If it's so hard for anyone to understand monads, that says something about them...
"Attempting to learn how to use monads by understanding what they are is like asking "What is a musical instrument?"" Dear lord
I don't want to learn such a thing in order to code
@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.
I'd be interested in examples where we used monads in Clojure without knowing it
if we ever do
@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?
@jonpither: am i being caught here? 😉
http://stackoverflow.com/questions/21752258/why-are-clojures-let-and-for-both-monads
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...
as they are not the same
@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?
abs does. only being careful as @jonpither is after my monadic lies... ;)
@benedek: is it a 'dangerous' metaphor (the design patterns metaphor) ? it seems like a pretty good match to me
"invocation patterns" maybe ?
analogy is a much better word / thx @agile_geek
i guess it is still like comparing apples and oranges..
@agile_geek: wrt project-dojo. Neat.
@xlevus working on which day per month to run it on and location. May have to pay for pizzas and beer myself!
If the weather keeps up. how does the arctic sound?
Frozen pizza
How many people usually come to Dojos?
@xlevus up to 20
@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
also, how cool is this :) https://github.com/funcool/canal
wow, nice!
yeah i guess this funcool stuff started the conversation
really nice stuff
so are you building a component system based on monads? (would be nicer than the protocol/record based ones)
that would be quite cool actually
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
@otfrom: cheers Bruce. I’ll take a look.
When I first joined and searched for channels, I searched for “London” and couldn’t find this channel. Is lndclj something well known? Because it may be preventing people from finding the channel.