Это очень хороший вопрос, на который я не уверен, что у меня есть хороший ответ. Позвольте мне попробовать, хотя.
Позвольте мне начать с переворачивания столов и задать вам вопрос: почему это сбивает с толку?
На самом деле ситуация очень похожа на Ocaml. Там также последнее значение является возвращаемым значением функции. Если вы хотите что-то «сделать» до того, как вам понадобится локальная привязка let x = ... in ...
или для функций, возвращающих void, вам нужно использовать точку с запятой expr1; expr2
.
При создании синтаксиса Opa мы не очень любили точки с запятой;). Итак:
- в Opa также последнее значение является возвращаемым значением функции,
- вы также можете ввести локальные привязки до
x = ...
(так что это более многословно, чем Ocaml: вы не пишете let
и не пишете in
)
- мы не используем точки с запятой вместо выражений типа void до того, как последние вводятся с
do
, поэтому Ocaml e1; e2
в Opa становится do e1 e2
(учтите, вы обычно ставите e2
новая строка).
Так что я не думаю, что здесь есть фундаментальные изменения по сравнению с Окамлем. Но в действительности, как прокомментировал Cedrics выше, мы получаем смешанные отзывы о синтаксисе Opa и пытаемся найти лучший способ решения этой проблемы (идеи приветствуются).