Как Haskell оценивает выражение - PullRequest
0 голосов
/ 17 декабря 2018

Почему это работает

> (* 30) 4
120

, но это не

> * 30 40
error: parse error on input ‘*’

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

(* 30) - это секция , которая по-прежнему обрабатывает * как двоичный (инфиксный) оператор, только тот, в котором отсутствует аргумент, сокращение от (\x -> x * 30).Сами круглые скобки являются частью синтаксиса, а не явными (но избыточными) круглыми скобками, которые можно заключить в произвольное выражение.

Вы можете думать о (*) как о вырожденном разделе, в котором отсутствует оба аргумента.Вы не можете использовать инфиксный оператор в позиции префикса без использования скобок.

0 голосов
/ 17 декабря 2018

Haskell использует специальный синтаксис для частичного применения инфиксных операторов (*, +, ^ и т. Д.).Это будет работать только в скобках из того, что я понимаю.https://wiki.haskell.org/Section_of_an_infix_operator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...