LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Даже хаскелевые темплейты вышли удачнее.

Спасибо. Если кто-нибудь напишет подобное сопоставление темплейтов Хаскеля с макросистемой лиспа, буду премного благодарен. Хаскель для меня эзотеричен.

Для меня в данном туториале было важно то, что я увидел многое из того, с чем столкнулся при разработке Яре, и даже похожие решения: отдельный интерфейс к лексеру, отдельный к парсеру. Отличие символов языка и символов платформы. Два отдельных парсера. И увидел те проблемы, к-рые ожидал.

Фигня с типами, как я и написал в документе, мне кажется следующей из наличия в языке вывода типов. От этого он во многом неявный и нужно прочитать будущее, чтобы узнать тип.

Я давно предчувствовал, что вывод типов - это не только пряники, поэтому я к этой игрушке всегда холодно относился.

В Яре типы в основном задаются явно, как в самом распоследнем Паскале, поэтому (я надеюсь что) удастся получить доступ к информации о типах своевременно. Впрочем, как я уже писал, я вообще не планирую делать типы в Яре. Для лиспа я делал такую вещь:

(defstruct Моя-Структура Поле1 Поле2)
(defun foo () 
 (perga
  (:lett Перем Моя-Структура (MAKE-Моя-структура :Поле1 1))
  (^ Перем Поле1) ; раскрывается во время 
       ; компиляции в (Моя-Структура-Поле1 Имя)
  ))) 
Для этого как раз нужна информация о типе. Мне частично удалось достать инфу о типе из реализаций SBCL и LW (она там есть, в отличие от Scala), но это не так просто. Было бы удобно иметь слой переносимости, который бы был написан со знанием дела и позволял доставать эту инфу.

Исходная версия den73, :

Даже хаскелевые темплейты вышли удачнее.

Спасибо. Если кто-нибудь напишет подобное сопоставление темплейтов Хаскеля с макросистемой лиспа, буду премного благодарен. Хаскель для меня эзотеричен.

Для меня в данном туториале было важно то, что я увидел многое из того, с чем столкнулся при разработке Яре, и даже похожие решения: отдельный интерфейс к лексеру, отдельный к парсеру. Отличие символов языка и символов платформы. Два отдельных парсера. И увидел те проблемы, к-рые ожидал.

Фигня с типами, как я и написал в документе, мне кажется следующей из наличия в языке вывода типов. От этого он во многом неявный и нужно прочитать будущее, чтобы узнать тип.

Я давно предчувствовал, что вывод типов - это не только пряники, поэтому я к этой игрушке всегда холодно относился.

В Яре типы в основном задаются явно, как в самом распоследнем Паскале, поэтому (я надеюсь что) удастся получить доступ к информации о типах своевременно. Впрочем, как я уже писал, я вообще не планирую делать типы в Яре. Для лиспа я делал такую вещь:

(defstruct Моя-Структура Поле1 Поле2)
(defun foo () 
 (perga
  (:lett Перем Моя-Структура (MAKE-Моя-структура :Поле1 1))
  (^ Перем Поле1) ; раскрывается во время компиляции в (Моя-Структура-Поле1 Имя)
  ))) 
Для этого как раз нужна информация о типе. Мне частично удалось достать инфу о типе из реализаций SBCL и LW (она там есть, в отличие от Scala), но это не так просто. Было бы удобно иметь слой переносимости, который бы был написан со знанием дела и позволял доставать эту инфу.