Можно ли не ставить пробел между функцией и аргументом?

Рейтинг: 1Ответов: 1Опубликовано: 06.04.2023

Можно ли вызывать функцию с каким-то аргументом без пробела между ними?

main=putStr"test"

Например, такой код компилируется. Пытался посмотреть в https://www.haskell.org/onlinereport/haskell2010, но не смог найти правило, разрешающее это.

Ответы

▲ 3

Кажется, понял. Никто не запрещает не ставить пробел в соответствии с грамматикой:

program →   { lexeme | whitespace }
lexeme  →   qvarid | qconid | qvarsym | qconsym
|   literal | special | reservedop | reservedid
literal →   integer | float | char | string

Т.е. программа putStr "test" это лексемы putStr и "test" + whitespace . Но можно использовать и просто лексемы putStr и "test" без пробела, т.к. { означет 0+, а | - ИЛИ.