Emacs Org-Mode и грамотный Haskell
В режиме org строка, начинающаяся с двоеточия, форматируется как исходный код. ( http://orgmode.org/manual/Literal-examples.html)
В грамотном Haskell строки исходного кода начинаются со знака, превышающего знак.
Я хочу написать грамотный Haskell с уценкой в режиме org, мой текущий предпочтительный формат.
Поскольку я предполагаю, что не могу изменить компилятор Haskell, мой вопрос:
Можно ли как-то сделать знак "больше", чем подписать маркер строки кода в режиме org? (Я пытался найти его сам, но так как org.el - это файл 865k, loc 22k, я все еще потерян.)
4 ответа
Таким образом, очевидно, что это не те способы использования орг.
Основная проблема при этом заключается в том, что оба, org-mode и haskell-mode, являются основными режимами. Поэтому я не могу использовать их параллельно.
Тем не менее, вот как это работает, это взломать, и я не уверен в побочных эффектах..:
При просмотре файла в emacs триггер кода (a?) Выглядит как org-activ-code (org.el), но он не используется для экспорта. Для экспорта HTML я должен был также коснуться org-html.el.
Я изменился:
В строке org.el 5378, функция org-activ-code из
"^[ \t]*\\(:\\(?: .*\\|$\\)\n?\\)"
в
"^[ \t]*\\([:>]\\(?: .*\\|$\\)\n?\\)"
И в строке 1508 и 1516 org-html.el, функция org-export-as-html из
(string-match "^[ \t]*:\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line)
в
(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line)
и (строка 1516)
(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)"
Глядя на это, я предполагаю, что это должно быть адаптировано для каждого канала экспорта, который мы собираемся использовать.
Не точный ответ на ваш вопрос, но пример того, как я пишу на грамотном языке Haskell, используя org: https://github.com/haroldcarr/make-mp3-copies
README.org - это грамотный Haskell, MakeMP3Copies.hs - это итоговый файл haskell, который "запутывается" из файла.org.
Я экспортирую в HTML и публикую в своем блоге: http://haroldcarr.com/posts/2013-09-11-flac-to-mp3-via-haskell-shelly-and-ffmpeg.html
README.org также автоматически выполняет рендеринг на github (хотя в рендеринге есть некоторые вещи, предназначенные только для HTML, которые я не потратил время на исправление).
По сути, у меня была та же мотивация - использовать разметку в режиме org для моих грамотных программ на Haskell (стиль Bird). В итоге я использовал мультирежим, который позволяет использовать несколько основных режимов emacs для разных регионов в одном и том же буфере (есть и другие, но многорежимный соответствует моим требованиям). Я приготовил haskell-org, который позволяет использовать режим org и haskell-mode в одном буфере через многорежимный режим.
Подробнее в этой записи блога. Настройка работает достаточно хорошо, и я использую ее для кодирования на Haskell.
Я немного опоздал, но недавно я начал работать над проблемами с 99 Haskell и решил собрать свою работу в файле режима org.
Orgmode способ грамотного программирования (насколько я понимаю), заключается в инкапсуляции блоков исходного кода в блоки BEGIN/END. Например,
#+BEGIN_SRC hs :tangle yes
myReverse :: [a] -> [a]
myReverse l = myReverse' l []
myReverse' [] accu = accu
myReverse' (x:xs) accu = myReverse' xs (x:accu)
#+END_SRC
Такой структурированный организационный документ может быть
экспорт Экспорт - это преобразование файла orgmode в один из нескольких других форматов файлов с помощью внутреннего интерфейса. Некоторые из этих форматов PDF, LateX или HTML.
Запутанный Это идет в направлении грамотного программирования и ткачества. Блоки кода можно экспортировать в чистые исходные файлы. Это то, что я делаю в своем файле 99 проблем.
Выполненные блоки исходного кода могут быть выполнены, и результат этого выполнения может быть помещен непосредственно в файл orgmode. Я еще не пробовал это для haskell.
Вы можете взглянуть на мои попытки в github: https://github.com/dischoen/H99 Там я связываю файл orgmode с двумя файлами haskell, модулем и тестовым набором, которые затем можно протестировать в ghc или ghci.