У меня есть простой fonction, представляющий функцию карты:Скобки значение в функции отображения (OCaml)
let f a b = fold_right (fun x y -> a(x)::y) b []
Я хотел бы знать, значения в скобках для (х) :: у
спасибо!
У меня есть простой fonction, представляющий функцию карты:Скобки значение в функции отображения (OCaml)
let f a b = fold_right (fun x y -> a(x)::y) b []
Я хотел бы знать, значения в скобках для (х) :: у
спасибо!
Круглые скобки вокруг x
в a(x)
не имеют никакого значения - они полностью избыточны. Автор кода мог бы так же хорошо написать:
let f a b = fold_right (fun x y -> a x :: y) b []
Спасибо! Это была точность, которую мне нужно было для лучшего понимания проблемы. – moumoute6919
То, что вы часто встречаете, имеет дело с парами списков пар. Искусственный пример:
res, (k, v)::acc
означает, что мы возвращаем пару res
и ассоциативный список (k, v)::acc
. Я обычно использую (и предпочитаю) минимальное количество скобок, которые фиксируют смысл, но другие советуют добавлять скобки для удобочитаемости.
Когда вы вычислить пару «на лету», вам не нужны никакие дополнительные круглые скобки, так как функция приложения и большинство операторов имеют более высокий приоритет, чем ,
и ::
- искусственный пример:
f x, (a x, v+1)::acc
вы имеете в виду круглые скобки вокруг 'x' или вокруг' fun'? – sepp2k
Скобки вокруг x – moumoute6919
Я не думаю, что они необходимы. Работает для меня без круглых скобок. Для ясности я бы, вероятно, написал 'fold_right (fun x y -> (a x) :: y) b []'. –