读过 Practical Foundations for Programming Languages
Traditionally, languages are biased towards either eager or lazy evaluation. Eager lan- guages use a by-value dynamics for function applications, and evaluate the components of data structures when they are created. Lazy languages adopt the opposite strategy, pre- ferring a by-name dynamics for functions, and a lazy dynamics for data structures. The overhead of laziness is reduced by managing sharing to avoid redundancy. Experience has shown, however, that the distinction is better drawn at the level of types. It is important to have both lazy and eager types, so that the programmer controls the use of laziness, rather than having it enforced by the language dynamics. 引自第323页Bob: Don't believe what they say/market/advertise, see what new things they offer. They don't even know sum and product
Bob: Don't believe what they say/market/advertise, see what new things they offer. They don't even know sum and product
Modernized Algol introduces the concept of block structurce, i.e. the scope of assignab...
These (memoization and splay tree) are examples of benign storage effects, uses of muta...