3 points by rocketnia 3225 days ago | link | parent Your examples can be simplified quite a bit. ^_^`````` ; Move a chain of n cards from i to j. (zap [let (taken leftovers) (split _.i n) (copy _ i leftovers j (join taken _.j))] the-piles) ; Reveal the top card of the nth pile. (def copdate (orig . kvs) (apply copy orig (mappend [list _.0 (_.1:orig _.0)] pair.kvs))) (zap [copdate _ n [cons (list _.0 t) cdr._]] the-piles) `````` In principle I agree, disabling the programmer's ability to use mutation without reason is just frustrating. But I don't expect an example to help show this; most examples we could come up with would probably have easy-in-hindsight solutions like this. I think the point is that mutation gives us more easy ways to do things, so that we can quickly experiment and stuff.
 2 points by akkartik 3222 days ago | link `````` ; Reveal the top card of the nth pile. (def copdate (orig . kvs) (apply copy orig (mappend [list _.0 (_.1:orig _.0)] pair.kvs))) (zap [copdate _ n [cons (list _.0 t) cdr._]] the-piles) `````` How the heck is this 'simplified' compared to:`````` (set:cadar the-piles.n) `````` ? :)-----
 1 point by rocketnia 3222 days ago | link I see you want to push the example to its limit a bit. ^_^ Well, I assume this hypothetical language would be stocked with utilities that made up for what its pureness missed out on. How believable are these?`````` (def zipdate (func subject . indices) (iflet (first . rest) indices (copdate subject first [apply zipdate func _ rest]) func.subject)) (def zet (subject . args) (apply zipdate [do t] subject args)) (zap zet the-piles n 0 1)``````-----
 1 point by evanrmurphy 3221 days ago | link Was he calling it a simplification of one of waterhouse's more complex snippets, such as the one below?`````` (= the-piles (join (take (- n 1) the-piles) (list:cons (list (car the-piles.n) t) (cdr the-piles.n)) (drop n the-piles)))``````-----