Re[8]: Ocaml
От: Кодт Россия  
Дата: 19.08.13 09:23
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Кстати, to add insult to injury, у окамла же целых два официальных синтаксиса есть — дефолтный и revised:

DM>http://caml.inria.fr/pub/docs/manual-camlp4/manual007.html
DM>Некоторые опытные камловоды предпочитают revised.

Это не insult, а инфаркт!
У окамла есть ряд вкусностей — параметризованные модули, рассыпные варианты, объекты наконец.
Но подход к каждой из них словно разные люди одновременно и не сговариваясь.
А теперь ещё и ревизия, где понадёргали из фадиеза и, прости господи, из Си.

К>>подчёркиваю, я в окамл только по праздникам играю


DM>Разумеется, программирование на окамле — всегда праздник!

Ага, и выражение лица — как у того студента из приключений Шурика.
Перекуём баги на фичи!
Re[8]: Ocaml
От: Кодт Россия  
Дата: 19.08.13 09:39
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Внутре обычного модуля мы же можем определять типы с параметрами ('a t), а это уже ничто иное, как отображение типов. Для этого окамловский функтор не требуется. Даже больше, мы можем определять естественные преобразования (отображения функторов), вроде List.hd, которое, как и подобает ест.преобразованию есть функция из объектов одной категории в стрелки другой (из типа 'a в функцию 'a list -> 'a). Если теоркатовские функторы изображать окамловскими функторами, то чем изображать естественные преобразования? Там и слова такого уже нет.


А внутри одного типа мы можем вообще без параметризованных типов обойтись, будут экземпляры типа, функции над ним и функции высшего порядка.
А внутри одного значения будет id, id, id

Т.е. вниз мы двигаться умеем. А окамл даёт возможность двигаться и вверх, вводя модули и стрелки над модулями.

К>>Я потому и спрашиваю: нет ли смысла и возможности сделать...

DM>Да, нет смысла.
Да нет наверное

К>>Что мешало им хотя бы скобки блоков одинаково расставлять? sig...end, struct...end, let...;;, type...CRLF ?!


DM>У let и type нет закрывающей скобки, можно прямо подряд писать. К CRLF и отступам чувствительности нет.

У let есть ;;, а у type — любой терминальный символ, который не может встретиться в объявлении типа.
type foo = bla bla bla bla bla bla type bar = .....
         (                         )


К>>И из-за адского, хотя и непротиворечивого, синтаксиса у них парсер, по-видимому, тупо рекурсивный спуск делает, до первой ошибки. Которую он диагностирует как "Syntax error".

DM>Кажися, там все же LR парсер а-ля yacc. Собственно, ocamlyacc входит в поставку.

Ну да, но работает он тупо, до первой звезды.
Перекуём баги на фичи!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.