2013-06-14 2 views
1

У меня есть простой fonction, представляющий функцию карты:Скобки значение в функции отображения (OCaml)

let f a b = fold_right (fun x y -> a(x)::y) b [] 

Я хотел бы знать, значения в скобках для (х) :: у

спасибо!

+0

вы имеете в виду круглые скобки вокруг 'x' или вокруг' fun'? – sepp2k

+0

Скобки вокруг x – moumoute6919

+1

Я не думаю, что они необходимы. Работает для меня без круглых скобок. Для ясности я бы, вероятно, написал 'fold_right (fun x y -> (a x) :: y) b []'. –

ответ

3

Круглые скобки вокруг x в a(x) не имеют никакого значения - они полностью избыточны. Автор кода мог бы так же хорошо написать:

let f a b = fold_right (fun x y -> a x :: y) b [] 
+0

Спасибо! Это была точность, которую мне нужно было для лучшего понимания проблемы. – moumoute6919

0

То, что вы часто встречаете, имеет дело с парами списков пар. Искусственный пример:

res, (k, v)::acc 

означает, что мы возвращаем пару res и ассоциативный список (k, v)::acc. Я обычно использую (и предпочитаю) минимальное количество скобок, которые фиксируют смысл, но другие советуют добавлять скобки для удобочитаемости.

Когда вы вычислить пару «на лету», вам не нужны никакие дополнительные круглые скобки, так как функция приложения и большинство операторов имеют более высокий приоритет, чем , и :: - искусственный пример:

f x, (a x, v+1)::acc 

 Смежные вопросы

  • Нет связанных вопросов^_^