Comments 14
Ага, теперь я осознал, НАСКОЛЬКО близок F# к OCaml!
Остаётся только гадать какие же синтаксические правила заставили в list literal разделять элементы точкой с запятой, а не пробелом.
Неужели кто-то считает что
[1; 2; 3; 4; 5]
читать проще чем
[1 2 3 4 5]
?
[1; 2; 3; 4; 5]
читать проще чем
[1 2 3 4 5]
?
Да, не перевелись ещё кодеры, ценящие синтаксический мусор в сорцах.
Ровно до того момента, пока вы не захотите наполнить его чем-то сложнее int'а (например, выражениями).
Вот я и интересуюсь, какие правила в достаточно простом языке OCaml могли этому помешать. Куда уж запутаннее синтаксис чем в языке matlab (не к ночи будь помянут), а проблем не возникло.
octave:1> [1 2+3 sin(4)]
ans =
1.00000 5.00000 -0.75680
Не говоря уж языках без инфиксной арифметики и прочих тиклях.
octave:1> [1 2+3 sin(4)]
ans =
1.00000 5.00000 -0.75680
Не говоря уж языках без инфиксной арифметики и прочих тиклях.
Аргументы в скобках. В окамле — без. А скобки означают touple.
Ясно. Проблема в отсутствии обозначения для операции вызова функции, что в общем случае не обязательно плохо. Точки с запятой всё-равно можно было бы убрать, но тогда синтаксис контекстно-зависимым станет.
Сколько ни вижу новых языков, самым читаемым остаётся TCL 88-го года. :)
Нет, конечно, я не говорю, что он лучше чем OCaml, у них области применения даже не пересекаются.
Сколько ни вижу новых языков, самым читаемым остаётся TCL 88-го года. :)
Нет, конечно, я не говорю, что он лучше чем OCaml, у них области применения даже не пересекаются.
Вообще-то, tuple обозначается запятыми:
# 1,2,3
;;
— : int * int * int = (1, 2, 3)
#
А скобки — это ээ, скобки. Группируют выражение. В т.ч. и пустое выражение unit.
# 1,2,3
;;
— : int * int * int = (1, 2, 3)
#
А скобки — это ээ, скобки. Группируют выражение. В т.ч. и пустое выражение unit.
Совсем не обязательно лепить ;; в конце каждой конструкции. Если посмотреть на реальные проекты на окамле, то можно увидеть, что этот оператор практически никогда не используется.
Я понимаю что приведенные исходники набирались, вероятно, в консоли, где (;;) нужен интерпретатору, но нормальные исходники могут обходиться без этого мусора.
Я понимаю что приведенные исходники набирались, вероятно, в консоли, где (;;) нужен интерпретатору, но нормальные исходники могут обходиться без этого мусора.
UFO just landed and posted this here
Sign up to leave a comment.
Введение в OCaml: Типы данных и сопоставление [3]