Notes (OFVB 01/31): Starting Off
Questions
1
- `- : int = 17`
- `- : int = 11`
- `- : int = 1
, this shows/` has left precedence - `- : bool = true`
- `- : bool = false
,<>` is “not equal”, which is super confusing notation. - `- : bool = true`
- `- : bool = false`
- `- : bool = false`
- `- : char = ‘%’`
- error, because
(+)has type `- : int -> int -> int =`
2
mod has higher precedence than +
3
evaluates to 11, spaces don’t matter
4
max_int + 1 is min_int, and min_int - 1 is max_int
5
Exception: Division_by_zero
6
mod is just remainder after integer division, with the negative sign following the dividend (the first arg).
7
Because although there is some structural analogy between {true, false, &&, ||} and {1, 0, *, +}, the former is closed and the latter is not. E.g. true || true = true, but 1 + 1 = 2. The values 1 and 0 live in a bigger space of values, i.e. the integers. We use types to restrict the space of possible values in our code, so that if we accidentally call a function expecting an integer with a boolean argument, we find out our mistake at compile-time rather than at run-time.
8
'p' < 'q' is true, because p comes before q in the alphabet. I look forward to learning how and where OCaml defines the char ordering.