- domain/codomain
- deterministic
def blah1() = if(false) throw new Exception else 2
def blah2() = {
val a = throw new Exception
if(false) a else 2
}
// blah1(): 2
// blah2(): java.lang.Exception at ...
a + identity == a # Left identity
identity + a == a # Right identity
a + b == b + a
a + ( b + c ) == (a + b ) + c
a + a == a