Можно ли не ставить пробел между функцией и аргументом?
Можно ли вызывать функцию с каким-то аргументом без пробела между ними?
main=putStr"test"
Например, такой код компилируется. Пытался посмотреть в https://www.haskell.org/onlinereport/haskell2010, но не смог найти правило, разрешающее это.
Ответы (1 шт):
Автор решения: Egor
→ Ссылка
Кажется, понял. Никто не запрещает не ставить пробел в соответствии с грамматикой:
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+, а | - ИЛИ.