type 'k leaf = {a_bb : 'k -> string;}
Я не могу понять, что означает эта строка кода в ocaml. Может ли кто-нибудь помочь?Что означает синтаксис ocaml?
type 'k leaf = {a_bb : 'k -> string;}
Я не могу понять, что означает эта строка кода в ocaml. Может ли кто-нибудь помочь?Что означает синтаксис ocaml?
Он объявляет новый тип leaf
параметрического по типу переменной 'k
, который является типом записи с одним полем a_bb
типа 'k -> string
где 'k
является параметром мы уже упоминали ранее.
Пример значения типа 'k leaf
будет:
{ a_bb = fun _ -> "Hello World!" }
Но 'k
может также быть специализированы к конкретному типу, например,
{ a_bb = fun b -> if b then "Hello World!" else "Argh!" }
имеет тип bool leaf
, так как аргумент функции в поле a_bb
должен быть логическим значением для выражения if b then (...)
, чтобы иметь смысл.
Вы можете получить доступ к функции в области a_bb
с помощью проекции, как так:
fun v -> v.a_bb
Спасибо так много. Это дало мне понять. – user2524261