OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 20:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:11 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Почитал в википедии про формат 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 не получится -- при сохранении документа внутри него образуется мусор, мешающий компиляции. Так что тут нужен какой-то специальный редактор...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:24 
Модератор
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:42 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Забавно, но большого смысла в этом нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:45 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Евгений Темиргалеев писал(а):
Ещё немного развить идею и получитатся исходники в составных документах, как в ББ.

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

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


Последний раз редактировалось Geniepro Четверг, 23 Декабрь, 2010 12:56, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:52 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Alexey Veselovsky писал(а):
Забавно, но большого смысла в этом нет.

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

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

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

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


Последний раз редактировалось Geniepro Пятница, 24 Декабрь, 2010 19:41, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:54 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
А как извлекаются оттуда исходники? Вот есть уменя rtf на 400 страниц. Там у меня пачка хаскелевых исходников. Естественно это разные модули, а то и программы. Как это компилировать? Как запустить конкретный?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:57 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Alexey Veselovsky писал(а):
А как извлекаются оттуда исходники? Вот есть уменя rtf на 400 страниц. Там у меня пачка хаскелевых исходников. Естественно это разные модули, а то и программы. Как это компилировать? Как запустить конкретный?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 12:58 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Ну статья же... Лепить одну статью из пачки rtf'ов как-то не правильно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 13:05 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Если статья такая большая, то наверняка она будет разбита по частям, главам -- так просто проще и удобнее самому автору работать, имхо...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 13:06 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Не. Статья может быть не большой. Скажем страничек 20-30. Но исходников самостоятельных там может быть МНОГО.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 13:17 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Если исходники связаны, то почему бы их не поместить в одном модуле?
А если они не связаны, то зачем они смешаны в одной части статьи?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 13:26 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Это да, это надо подумать и попрактиковаться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 13:52 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Как вариант -- в принципе, можно придумать формат наподобии Office Open XML -- там куча файлов (целая структура каталогов) в одном zip-архиве.
Можно допилить компилятор хаскелла, что бы он распаковывал архив с исходниками модулей во временный каталог и затем компилировал эти модули.
А редактор с поддержкой такого стиля оформления исходников, соответственно, сохранял бы иерархию модулей в таком архиве.
Но это всё фантазии, конечно...

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 14:03 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Зачем компилятор? Это не unix-way :-) Достаточно препроцессор (мелкую утилиту) написать, которая будет вытаскивать их rtf'a множество исходников и скармливать их ghc.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 14:14 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Alexey Veselovsky писал(а):
Зачем компилятор? Это не unix-way :-) Достаточно препроцессор (мелкую утилиту) написать, которая будет вытаскивать из rtf'a множество исходников и скармливать их ghc.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Literate Haskell
СообщениеДобавлено: Четверг, 23 Декабрь, 2010 14:15 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Если развивать дальше фантазии на эту тему, то, смирившись с необходимостью для HTML хранить кроме файла самого документа ещё и папку с файлами картинок и пр., можно будет в таком документе хранить ещё и поля ввода-вывода и яваскрипт для интерпретации хаскельного кода в этом документе.
Открываете такой "активный документ" в веб-браузере и выполняете его.
Удалено модератором (оффтоп)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB