Livejournal
Log in
Post
Friends
My journal
rdia
(Untitled)
Jan 15, 2019 20:47
Не только лишь все знают, что в Ocaml'е параметры функций (
Read more...
)
Leave a comment
Comments 3
iamjaph
January 16 2019, 08:16:54 UTC
А когда вы, обычно, используете f (x, y), а когда f x y?
Сам вижу ясно только случаи:
* первый - когда (x, y) - это тип
* второй - когда реально нужно каррирование для передачи f x куда-то.
А вот в других вариантах трудно определиться.
Reply
rdia
January 16 2019, 11:28:16 UTC
Сейчас традиционно используется второй вариант f x y. Это практичнее, поскольку язык позволяет делать частичное применение. То есть, вместо
let result = List.map (fun y -> f(1,y)) []
писать
let result = List.map (f 1) []
Если частичным применением ее злоупотреблять, то получается проще и приятнее для чтения.
Поэтому сейчас в кортеж оборачивается строго по нужде - когда надо вернуть из функции несколько значений. Или, как вы говорите - тип такой.
Из типовых ситуаций, на ум приходит лишь fold_left, с хитрым аккумулятором.
Reply
iamjaph
January 16 2019, 12:34:39 UTC
Спасибо.
Reply
Leave a comment
Up
Comments 3
Сам вижу ясно только случаи:
* первый - когда (x, y) - это тип
* второй - когда реально нужно каррирование для передачи f x куда-то.
А вот в других вариантах трудно определиться.
Reply
let result = List.map (fun y -> f(1,y)) []
писать
let result = List.map (f 1) []
Если частичным применением ее злоупотреблять, то получается проще и приятнее для чтения.
Поэтому сейчас в кортеж оборачивается строго по нужде - когда надо вернуть из функции несколько значений. Или, как вы говорите - тип такой.
Из типовых ситуаций, на ум приходит лишь fold_left, с хитрым аккумулятором.
Reply
Reply
Leave a comment