type LinkedList<'T> =
Cons of 'T * LinkedList<'T>
| Nil
module LinkedList =
let map f = function
Cons (head, tail) -> Cons (f head, map tail)
| Nil -> Nil
module Program =
let start = Cons (1, Cons (2, Cons (3, Nil)))
let end = LinkedList.map (~-) start
printf "%A\n%A" start end
dHlwZSBMaW5rZWRMaXN0PCdUPiA9CiAgQ29ucyBvZiAnVCAqIExpbmtlZExpc3Q8J1Q+CnwgTmlsCgptb2R1bGUgTGlua2VkTGlzdCA9CiAgbGV0IG1hcCBmID0gZnVuY3Rpb24KICAgIENvbnMgKGhlYWQsIHRhaWwpIC0+IENvbnMgKGYgaGVhZCwgbWFwIHRhaWwpCiAgfCBOaWwgICAgICAgICAgICAgICAtPiBOaWwKCm1vZHVsZSBQcm9ncmFtID0KICBsZXQgc3RhcnQgPSBDb25zICgxLCBDb25zICgyLCBDb25zICgzLCBOaWwpKSkKICBsZXQgZW5kICAgPSBMaW5rZWRMaXN0Lm1hcCAofi0pIHN0YXJ0CgogIHByaW50ZiAiJUFcbiVBIiBzdGFydCBlbmQ=