ocaml: основной синтаксис для функции нескольких аргументов - PullRequest
0 голосов
/ 20 сентября 2018

Я изучаю OCaml, и на данный момент я начинающий.Я пытаюсь привыкнуть к синтаксису, и я просто потратил 15 минут на отладку глупой синтаксической ошибки.

let foo a b = "bar";; let biz = foo 2. -1.;;

Я получил ошибку This expression has type 'a -> string but an expression was expected of type int.Я исправил ошибку, но это побудило меня узнать, как лучше всего справиться с этой синтаксической особенностью.

По сути, OCaml рассматривает то, что я предполагал как числовую константу -1., как два отдельных токена: - и1. и я передаю только 1 аргумент foo.На других языках, с которыми я знаком, этого не происходит, потому что аргументы разделяются запятой (или в Схеме есть круглые скобки).

Как обычно обрабатывать эту особенность синтаксиса в OCaml?Он заключен в круглые скобки (foo 2. (-1.)) или есть какой-то другой способ?

1 Ответ

0 голосов
/ 21 сентября 2018

Существует унарный оператор минус ~-., который можно использовать, чтобы избежать этой проблемы: foo ~-.1. (и его целочисленный аналог ~-), но обычно проще добавить круглые скобки вокруг проблемного выражения.

...