Hacker News new | ask | show | jobs
by isaacimagine 1544 days ago
There are a number of patterns that have arisen over the years to deal with these problems. For the large-object problem, look into persistent data structures or the 'Functional but in Place' paradigm (compiler optimizes modification on a copied unshared array to a mutation).

For the parent-child problem, typed handles, continuation-based state propagation, and reifying state updates for a declarative interpreter may be used.

Monads and effects are common in strongly typed functional languages, but have less bearing on lisp, which usually embraces dynamism to some extent.