История изменений
Исправление MOPKOBKA, (текущая версия) :
В OСaml нету перегрузки, и я посчитал что нету способа рассмотреть тип после его перехода в функцию. Но сегодня я понял что через вывод типов можно его все же проверить его:
(* REPL *)
(* auto f(auto x) { return [](){return x;}; } *)
>>> let f x = fun () -> x;;
val f : 'a -> unit -> 'a = <fun>
>>> f 10;;
- : unit -> int = <fun>
>>> f "hello";;
- : unit -> string = <fun>
x не стирается внутри, а передается наружу с новой лямбдой уникально типизированной для каждого вызова.
Исходная версия MOPKOBKA, :
В OСaml нету перегрузки, и я посчитал что нету способа рассмотреть тип после его перехода в функцию. Но сегодня я понял что через вывод типов можно его все же проверить его:
(* REPL *)
>>> let f x = fun () -> x;;
val f : 'a -> unit -> 'a = <fun>
>>> f 10;;
- : unit -> int = <fun>
>>> f "hello";;
- : unit -> string = <fun>
x не стирается внутри, а передается наружу с новой лямбдой уникально типизированной для каждого вызова.