make it typecheck
This commit is contained in:
parent
c1efa3c5e1
commit
6ad975083e
1 changed files with 2 additions and 2 deletions
|
@ -54,7 +54,7 @@ pattern match to handle the different cases. The compiler checks whether your p
|
||||||
functional programming is that you can pass functions to other functions
|
functional programming is that you can pass functions to other functions
|
||||||
(*higher-order functions*). Also, *recursion* is fundamental for functional
|
(*higher-order functions*). Also, *recursion* is fundamental for functional
|
||||||
programming: a function calls itself -- combined with a variant type (such as
|
programming: a function calls itself -- combined with a variant type (such as
|
||||||
`type list = Nil | Cons of a * a list`) it is trivial to show termination.
|
`type 'a list = Nil | Cons of 'a * 'a list`) it is trivial to show termination.
|
||||||
|
|
||||||
*Side effects* make the program interesting, because they
|
*Side effects* make the program interesting, because they
|
||||||
communicate with other systems or humans. Side effects should be isolated and
|
communicate with other systems or humans. Side effects should be isolated and
|
||||||
|
@ -73,7 +73,7 @@ OCaml has a object and class system, which I do not use. OCaml also contains
|
||||||
exceptions (and annoyingly the standard library (e.g. `List.find`) is full of
|
exceptions (and annoyingly the standard library (e.g. `List.find`) is full of
|
||||||
them), which I avoid as well. Libraries should not expose any exception (apart from out of memory, a really exceptional situation). If your
|
them), which I avoid as well. Libraries should not expose any exception (apart from out of memory, a really exceptional situation). If your
|
||||||
code might end up in an error state (common for parsers which process input
|
code might end up in an error state (common for parsers which process input
|
||||||
from the network), return a variant type as value (`type result = Ok of 'a | Error of 'b`).
|
from the network), return a variant type as value (`type ('a, 'b) result = Ok of 'a | Error of 'b`).
|
||||||
That way, the caller has to handle
|
That way, the caller has to handle
|
||||||
both the success and failure case explicitly.
|
both the success and failure case explicitly.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue