ldnclj

Find us on #clojure-uk
agile_geek 2015-12-20T12:03:26.000759Z

@otfrom not arguing with that but you still need to understand what the impact of laziness and eagerness is & which fns use which to avoid bear traps. This implicit knowledge is generally not as simple as imperative statements.

mccraigmccraig 2015-12-20T13:37:55.000760Z

yes - some language features can have complex implications e.g. laziness, mutability, async, concurrency. if you primarily want a quick solution with minimal risk of surprising or difficult-to-find bugs you would probably do well to avoid all of these things :simple_smile:

agile_geek 2015-12-20T15:04:17.000761Z

I'm fine with having to know this stuff but we sometimes claim simplicity when it's not perhaps as obvious & initiative as we claim.

bronsa 2015-12-20T16:09:31.000762Z

it's more chunking than laziness the issue usually

bronsa 2015-12-20T16:09:53.000763Z

as long as you have either pure 1-element at-at-time lazyness or pure eagerness, it's easy to reason about

bronsa 2015-12-20T16:10:20.000764Z

but when you mix chunking with laziness, you're suddently mixing eagerness and lazyness in non intuitive ways

agile_geek 2015-12-20T18:39:19.000765Z

in my case it was an issue of understanding which fn's are eager and which lazy. You need implicit knowledge of which is which. My point is you can't tell intuitively which are which, you need to remember.

agile_geek 2015-12-20T18:39:31.000766Z

Nothing to do with chunking

agile_geek 2015-12-20T18:41:36.000767Z

For example, Clojure has immutable data structures by default and very explicit constructs for state management (atom, refs, agent, var). However, laziness/eagerness is not explicit! Not to me anyway.

agile_geek 2015-12-20T18:43:15.000768Z

I am sure most of you really don't understand my struggle with this stuff as it comes naturally but I have real problems with it. With more imperative languages it's obvious when actions happen.

agile_geek 2015-12-20T18:44:05.000769Z

I am simply stating that my personal experience is this stuff is hard to reason about.

mccraigmccraig 2015-12-20T20:37:04.000771Z

@agile_geek: i remember struggling with lazy stuff, and i've certainly had some (not dissimilar) struggles with async stuff more recently... i guess i learnt how to hunt down those kind of bugs, how to avoid them, and how to recognise their causes

mccraigmccraig 2015-12-20T20:37:42.000772Z

but yeah, the errors can be distinctly non-obvious

mccraigmccraig 2015-12-20T20:38:24.000773Z

and i have resorted to binary-chop debugging at least once :)

2015-12-20T20:38:28.000774Z

I still struggle with clojure and resources (io, network, databases, etc)