1. Orthogonality
A orthogonal language is one in which you can express a lot by combining a small number of operators at a lot of different ways.
2. Programming Language Features (from Peter Norvig):
(1) Class Abstraction
(2) Functional Abstraction
(3) Syntactic Abstraction
(4) Declarative Abstraction
(5) Coroutines
(6) Parallelism
3. Lazy Evaluation: A redex is evaluated at most once.
A orthogonal language is one in which you can express a lot by combining a small number of operators at a lot of different ways.
2. Programming Language Features (from Peter Norvig):
(1) Class Abstraction
(2) Functional Abstraction
(3) Syntactic Abstraction
(4) Declarative Abstraction
(5) Coroutines
(6) Parallelism
3. Lazy Evaluation: A redex is evaluated at most once.