Я пытаюсь достичь чего-то похожего на то, что запрограммировано в HaTeX, где программист писал бы команды LaTeX как текст построчно.Один из их примеров выглядит следующим образом:
-- Body with a section.
theBody :: Monad m => LaTeXT_ m
theBody = do
maketitle
section "Hello"
"This is a simple example using the "
hatex
" library. "
-- 'textbf' turns characters to bold font (as you already may know).
textbf "Enjoy!"
" "
Полный пример: https://github.com/Daniel-Diaz/HaTeX/blob/master/Examples/simple.hs
До сих пор я добился следующего:
module Main
where import System.IO
writeContent :: String
writeContent = do
"Some text. "
++ "Some more text. "
++ "This should all compile into a single line "
++ "and be output to the screen."
main :: IO ()
main = do
putStr $ writeContent
Но я быМне действительно нравится избавляться от операторов ++
.
Я знаю, что Strings
и ++
менее эффективны, чем Text
, поэтому в конце концов это изменится, когда я узнаю немного больше.Я все еще новичок в Хаскеле.Я пытался просмотреть исходный код HaTeX, но есть части, в которых слишком много шагов выполняется в одной строке, поэтому я хотел построить это небольшими шагами за раз.