LINUX.ORG.RU

История изменений

Исправление 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 не стирается внутри, а передается наружу с новой лямбдой уникально типизированной для каждого вызова.