language syntax § Functional § Pure Functions § Immutable Data § Sequence § Polymorphism § Separate polymorphism from derivation § Time Model § Separate values, identities, state, and time
language syntax § Functional mostly § Pure Functions § Immutable Data § Sequence § Polymorphism a la carte § Separate polymorphism from derivation § Time Model § Separate values, identities, state, and time
§ You can postpone expensive computations that may not in fact be needed. § You can work with huge data sets that do not fit into memory. § You can delay I/O until it is absolutely needed. Programming Clojure – Stu Halloway and Aaron Bedra
processes § dealing with lots of things happening at once § structure § Parallelism: § more than 1 thing happening at the same time § doing lots of things at once § execution
by breaking it into pieces that can execute independently § Concurrency requires communication to coordinate independent executions § Up to now everything has been immutable § Well … you can communicate immutable things without worrying so the model has been inherently concurrent § But … let’s model some things that change http://www.infoq.com/presentations/An-Introduction-to-Clojure-Time-Model
a fact § Time: concept that we overlay on causal events § Identity: concept we lay on a series of values over time § State: the value of an identity at a point in time Key Insight: Separate Identity and State