Вот я и интересуюсь, какие правила в достаточно простом языке OCaml могли этому помешать. Куда уж запутаннее синтаксис чем в языке matlab (не к ночи будь помянут), а проблем не возникло.
octave:1> [1 2+3 sin(4)]
ans =
1.00000 5.00000 -0.75680
Не говоря уж языках без инфиксной арифметики и прочих тиклях.
Ясно. Проблема в отсутствии обозначения для операции вызова функции, что в общем случае не обязательно плохо. Точки с запятой всё-равно можно было бы убрать, но тогда синтаксис контекстно-зависимым станет.
Сколько ни вижу новых языков, самым читаемым остаётся TCL 88-го года. :)
Нет, конечно, я не говорю, что он лучше чем OCaml, у них области применения даже не пересекаются.
Совсем не обязательно лепить ;; в конце каждой конструкции. Если посмотреть на реальные проекты на окамле, то можно увидеть, что этот оператор практически никогда не используется.
Я понимаю что приведенные исходники набирались, вероятно, в консоли, где (;;) нужен интерпретатору, но нормальные исходники могут обходиться без этого мусора.
Пролог — это не функциональный язык. OCaml ближе к LISP'у.
Пролог работает по правилам вывода, т.е. из известных выводит неизвестные, перебирая доступные правила (факты).
Здесь же выполнение идет от аргументов функции к ее результату, фактически линейное с callback'ами.
Введение в OCaml: Типы данных и сопоставление [3]