Да, такая картина есть.
Предположим, что вы имеете дело с функцией, которая должна принимать целое число и возвращать строку, и что по умолчанию она будет возвращать "Do nothing"
для каждого целого числа:
let func : (int -> string) ref = ref (fun _ -> "Do nothing")
let _ = (!func) 1
- : string = "Do nothing"
Если вы хотите сказать, что "Do this"
должно быть возвращено, когда аргумент равен 1, вы можете сделать:
let () =
let old = !func in
func := (function 1 -> "Do this" | n -> old n)
let _ = (!func) 1
- : string = "Do this"