rand | : | [nat] ⟶ nat |
s | : | [nat] ⟶ nat |
bool | : | [nat] ⟶ boolean |
false | : | boolean |
true | : | boolean |
filter | : | [nat → boolean × list] ⟶ list |
nil | : | list |
0 | : | nat |
cons | : | [nat × list] ⟶ list |
consif | : | [boolean × nat × list] ⟶ list |
X | : | nat |
F | : | nat → boolean |
H | : | nat |
T | : | list |
rand(X) | ⇒ | X |
rand(s(X)) | ⇒ | rand(X) |
bool(0) | ⇒ | false |
bool(s(0)) | ⇒ | true |
filter(F, nil) | ⇒ | nil |
filter(F, cons(H, T)) | ⇒ | consif(F · H, H, filter(F, T)) |
consif(true, H, T) | ⇒ | cons(H, T) |
consif(false, H, T) | ⇒ | T |