OberonCore
https://forum.oberoncore.ru/

Literate Haskell
https://forum.oberoncore.ru/viewtopic.php?f=72&t=3100
Страница 1 из 1

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 12:11 ]
Заголовок сообщения:  Literate Haskell

Почитал в википедии про формат RTF и пришло в голову, что этот формат можно использовать для хранения исходников на Literate Haskell с сохранением картинок, таблиц и прочих оформительских элементов в комментариях.
Этим (хранением внутри документа таких ресурсов, как картинки) RTF выгодно отличается от HTML, например.
Код:
{\rtf1
 Привет!
 \par\par

> module Main where -- \par\par

{\i Это} некий
 отформатированный {\b текст}.\par\par

> fib 1 = 1 -- \par
> fib 2 = 1 -- \par
> fib n = fib (n-1) + fib (n-2) -- \par\par

> main = do -- \par
>   putStrLn $ "Hello world " ++ show (fib 20) ++ " times!" -- \par\par

 End
}

При просмотре в вордпаде выглядит вполне цивильно и читабельно, за исключением символов комментария "--" в конце строк кода:

Привет!

> module Main where --

Это некий отформатированный текст.

> fib 1 = 1 --
> fib 2 = 1 --
> fib n = fib (n-1) + fib (n-2) --

> main = do --
> putStrLn $ "Hello world " ++ show (fib 20) ++ " times!" --

End

Выполняется тоже нормально:
Код:
Hello world 6765 times!

Но редактировать в простых редакторах типа Wordpad или MS Word не получится -- при сохранении документа внутри него образуется мусор, мешающий компиляции. Так что тут нужен какой-то специальный редактор...

Автор:  Евгений Темиргалеев [ Четверг, 23 Декабрь, 2010 12:24 ]
Заголовок сообщения:  Re: Literate Haskell

Geniepro писал(а):
Почитал в википедии про формат RTF и пришло в голову, что этот формат можно использовать для хранения исходников на Literate Haskell с сохранением картинок, таблиц и прочих оформительских элементов в комментариях.
Ещё немного развить идею и получитатся исходники в составных документах, как в ББ.

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 12:42 ]
Заголовок сообщения:  Re: Literate Haskell

Забавно, но большого смысла в этом нет.

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 12:45 ]
Заголовок сообщения:  Re: Literate Haskell

Евгений Темиргалеев писал(а):
Ещё немного развить идею и получитатся исходники в составных документах, как в ББ.

Я думал об этом, но там в ББ не всё так хорошо.
Во-первых, сам формат ODC кроме Блекбокса никому больше не известен, в отличие от RTF.
Во-вторых, если я не ошибаюсь, в блекбоксовых документах в начале документа должен быть валидный код на Компонентном Паскале, иначе компилятор просто не скомпилирует файл.
В-третьих, внутри кода на Паскале комментарии с картинками, таблицами должны быть выделены именно как коментарии, или спрятаны в фолд какой-нибудь.

upd. Ещё RTF -- текстовый формат, а ODC -- бинарный. Могут быть проблемы для систем контроля версий, например.
В ODC с кодировками могут быть проблемы -- что-то такое на форуме встречалось.

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 12:52 ]
Заголовок сообщения:  Re: Literate Haskell

Alexey Veselovsky писал(а):
Забавно, но большого смысла в этом нет.

Ну почему нет смысла? Смысл в Literarte Haskell'е в том, что пишете, допустим, статью, а в ней вкрапления кода, и этот текст спокойно компилируется и выполняется. Таким образом обеспечивается соответствие кода программы коду, указанному в статье -- это просто напросто один и тот же код.

Необязательно это должна быть статья в журнал -- в идеале таким должен быть промышленный код с качественной документацией к нему (принцип "Running the Manual").

Преимущество форматов типа RTF перед HTML -- не нужно таскать ещё кучу файликов, в которых хранятся картинки-иллюстрации.

Не знаю особенностей TEX-формата (а Literate Haskell -- это изначально именно TEX-формат), может там тоже картинки хранятся в сериализованном виде внутри самого документа. Если так, то нужды в варианте с RTF-форматом вроде нет, кроме того, что RTF распространнён на порядки шире, чем TEX.

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 12:54 ]
Заголовок сообщения:  Re: Literate Haskell

А как извлекаются оттуда исходники? Вот есть уменя rtf на 400 страниц. Там у меня пачка хаскелевых исходников. Естественно это разные модули, а то и программы. Как это компилировать? Как запустить конкретный?

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 12:57 ]
Заголовок сообщения:  Re: Literate Haskell

Alexey Veselovsky писал(а):
А как извлекаются оттуда исходники? Вот есть уменя rtf на 400 страниц. Там у меня пачка хаскелевых исходников. Естественно это разные модули, а то и программы. Как это компилировать? Как запустить конкретный?

Один RTF-файл -- один хаскельный модуль. Зачем кучу модулей лепить в одном файле?

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 12:58 ]
Заголовок сообщения:  Re: Literate Haskell

Ну статья же... Лепить одну статью из пачки rtf'ов как-то не правильно.

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 13:05 ]
Заголовок сообщения:  Re: Literate Haskell

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

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 13:06 ]
Заголовок сообщения:  Re: Literate Haskell

Не. Статья может быть не большой. Скажем страничек 20-30. Но исходников самостоятельных там может быть МНОГО.

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 13:17 ]
Заголовок сообщения:  Re: Literate Haskell

Если исходники связаны, то почему бы их не поместить в одном модуле?
А если они не связаны, то зачем они смешаны в одной части статьи?

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 13:26 ]
Заголовок сообщения:  Re: Literate Haskell

Это да, это надо подумать и попрактиковаться.

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 13:52 ]
Заголовок сообщения:  Re: Literate Haskell

Как вариант -- в принципе, можно придумать формат наподобии Office Open XML -- там куча файлов (целая структура каталогов) в одном zip-архиве.
Можно допилить компилятор хаскелла, что бы он распаковывал архив с исходниками модулей во временный каталог и затем компилировал эти модули.
А редактор с поддержкой такого стиля оформления исходников, соответственно, сохранял бы иерархию модулей в таком архиве.
Но это всё фантазии, конечно...

зы. Да, и в таком случае получится формат, так же мало кому известный. Возможно, придётся брать этот самый Office Open XML...

Тогда уж проще научить компилятор Хаскелла извлекать модули из одного rtf файла -- просто добавить какой-то тег, по которому компилятор будет разбивать исходный файл на подфайлики...

Автор:  Alexey Veselovsky [ Четверг, 23 Декабрь, 2010 14:03 ]
Заголовок сообщения:  Re: Literate Haskell

Зачем компилятор? Это не unix-way :-) Достаточно препроцессор (мелкую утилиту) написать, которая будет вытаскивать их rtf'a множество исходников и скармливать их ghc.

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 14:14 ]
Заголовок сообщения:  Re: Literate Haskell

Alexey Veselovsky писал(а):
Зачем компилятор? Это не unix-way :-) Достаточно препроцессор (мелкую утилиту) написать, которая будет вытаскивать из rtf'a множество исходников и скармливать их ghc.

Можно и так.
Правда, в компиляторе хаскелла всё равно есть встроенная утилита типа make, можно было бы и её доработать.
Но тогда возникнет зависимость от этого доработанного компилятора...

Автор:  Geniepro [ Четверг, 23 Декабрь, 2010 14:15 ]
Заголовок сообщения:  Re: Literate Haskell

Если развивать дальше фантазии на эту тему, то, смирившись с необходимостью для HTML хранить кроме файла самого документа ещё и папку с файлами картинок и пр., можно будет в таком документе хранить ещё и поля ввода-вывода и яваскрипт для интерпретации хаскельного кода в этом документе.
Открываете такой "активный документ" в веб-браузере и выполняете его.
Удалено модератором (оффтоп)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/