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/ |