- basic pattern matching
- function application and composition
- where and let bindings
- infix operators and extended infix operators
- guard syntax
- “if ... then ... else” and “case” expressions
$-> a $-> b apply f x = f x infixr 0 apply as $ applyFlipped $:: forall a b. a $-> (a $-> b) $-> b applyFlipped x f = f x infixr 1 applyFlipped as # compose $:: forall a b c. (b $-> c) $-> (a $-> b) $-> a $-> c compose f g x = f (g x) infixr 9 compose as $$<<< composeFlipped $:: forall a b c. (a $-> b) $-> (b $-> c) $-> a $-> c composeFlipped f g = compose g f infixr 9 compose as $$>>>