αα
αααα»ααααα·αα»ααΆααααααΆαααααα
αααα»αααΈαααα»αααΌα
αα½αααααααααααααΈα Rapperswil ααααΉαααα·ααΆααααα½αααααΌαααΆαααα α
ααΆ
Π½Π°ΡΠ
α’ααααααααααααΌαααΆααααα
αααααα·αααα·αααααΆαααΈ 3 ααΈαααΆαααααααααα·ααΈ "ααα·ααα·ααααΆα’αα»αααα αα·αααααααΆααα·ααααΆ" αα
ααΆαααα·ααααΆαααααααΆαααααΆαααΆαα·α§αααααα·ααααΆααααααα·α
αα
- ααΆααααααΊαααΊαα Vasily Alferov αα·α Elizaveta Vasilenko α α
ααααα
αααΌαα
α·ααααααααΆαααααααα·ααΈαα»αααΆααααααΆαααα½αααΎαααΆααααΈαααΆαα
αΆααααααΎαααΆαα½αααΉαααΆαααααααααΆαααααααααΆααααα D. N. Moskvin αα
αααα»αααααΆαααΈ 2 ααααΆαααα·ααααΆαααα αα
αα
α»αααααα Vasily αααα»αα
αΌααα½ααααα»ααααααα·ααΈ Google Summer of Code ααααααα»ααααααΆαααααα»αα’αα»ααααααααΆα αααα·αααα·ααα
Haskell αααααααΆαααααΆαααΈαααα»ααααααα
ααααααααααΉαααα·ααΆααα
αααααα·αααααααα ααΊααΆααα αΆαααααααααααααααΎαα αα α’αααααααααααααα·ααΈαααα ααα αΌααα½ααααα»αααΆαα’αα·αααααααααααα½ααα α’αααααααΆαααααΆααααααα·ααΈαααααΆααα»αααΆα αα·αααα»ααααααα αΌαα α·ααααα Haskell α αα ααααΆαααα α’αααα’αα·ααααααααΈαααααα Haskell αααααααΎαα αα ααΆα 50 ααααΈαα»ααα·ααα·αααααααΆααααααΌααααα»αααααΆαα ααΈαααααα - HSR Hochschule fΓΌr Technik Rapperswil - ααΎααααΈαα·ααΆαα’αααΈααα·ααααααααα½ααα αα·αααααΎα±ααααα»αααααααΈαα αΆααα’αΆααααααααΎααΆαα’αα·αααααααααααα½αααα
ααΌαααααΈ Twitter
αααααααΆααααααααΊααΆααααααΆααα α’αααααααΌααααααααααΎαα½αα ααα½αα’αααΈααααααααααα’αααααΆαα»α α αΎαααααΎααΆαα α’ααααααα ααααααΉααααα ααααααααΆαα’αααΈααααααααααα’ααααα ααΎαααααααααΉαααα·ααΆαααα ααΎαααΈαααααααα ααααααααΌαα’ααααα·ααααααααααααααΆαααααααααΆααα·ααα·ααΆααΈααΎααααΈααααΆαααααΆαααααΈααΈααααΆααααΆαααααα½ααααααα»αααααΎαα·αα’αααΈαααααααΌαααααΎα αααααΆααααα’ααααααα αΆααα’αΆααααααααααΎαα’ααααα·ααααα αΎααα½ααααα’α·αα’αααΈααΆααα·α αα α
ααΎααα·αααΆααααΆαααααααααΎαααααΆαααααα½ααα α‘αΎααα ααα»ααααααΎααα·αααΆα αααα½αα ααααααααααααααααααΆαααααΆαα ααΌα ααααααΎαααΆαα α»ααααααααΆα’αααα αΌααα½αααΆαααα αΆαα αααα»αααααααααΈαααα ααΎαααΆαααααΎααΆαααΆαα½ααααα»αα’αααα’αα·ααααααααΈααααα»αα ααΆαααα αΆαααΆααΆααα·ααααΆαα½αααααΆααααΌα αα·αααΆαααααΆαααααααΆααααααααΆααααααΎα±ααα’αααααααααααΆαα’ααααα·αααααααααα αα·αα’ααααα½αα ααααααΆαααα·αααΆαααααΆαα - αα ZuriHac ααΎαα’αΆα αααα’αααΈααααααααααααΈαααααΆααααΎα α αΎαα’αΆα αα½ααααα»αααΈααααααααααΆααΆαααααα»α αααααααααα·α αα ααΆααα½ααααα»ααα½ααα ααααααααα
ααααααααΈααΎααΆαα’αα»ααααααααΆαααααα ααΆααααααα αα·αααααΆααααααΆα αααΎαααααααΌαααΆααααααα±αααα ZuriHac αααααα ααΆαα·αααααΎαα αα αΆαααΆαααααααααΈαα ααααΌααααα’αααα½ααα Andrey Mokhov ααααΈααΆαααα·ααααΆααα Newcastle αα·ααΆαα’αααΈαα»αααΆαα’αα»ααααααααΎαααΎα - ααααΆααααααααααααααα½αααααααΆαααΆααααα·αααααααααΆααα»αααΆαα’αα»αααα αα·α monads α αα αααα»αααΆααααααααα½ααααααααα ααααΆααα·αααααΆαααα Haskell ααΊααα Simon Peyton Jones ααΆααα·ααΆαα’αααΈαααααααααΆαααααα·ααααΆαααααααααααΎαααΆααα αααα»ααααααα·ααΈα ααααα GHC α
ααΆαααααααααα Simon Peyton Jones α ααΌαααααΈ Twitter
ααααΆαααααααααΆαααααΎα‘αΎααααα»αα’αα‘α»αααα hackathon ααααΌαααΆααααα ααααΆ 3 ααααααα’αΆαααααααΎααααα·αααααΆαααααα»ααααααΆαααααα’αααα αΌααα½αα ααΆααα·α αα ααααααααααΌααααα’αααα αΌααα½ααααααΆαα αΌααα½ααααα»αααΆαα’αα·ααααααααααααααααααΌαααΆααααααΆαααααααααα·αααααΆαααααΆααααααα αα ααααααΌα ααα»ααααααΆαααΆααα½αααΆαααΆααααΆααααα’αααααααααααααα·ααΈαααααΆααα»αααΆα ααααΆααααα’αααααααΈαααααα»ααα½ααααααααα½αα ααΎααααΈαααααΈααΆααααααααααα Andrei Mokhov αα·α Simon Peyton Jones αααααα·ααααΆαααααα·ααΈαα»αααΆααααααΎαααΆαααααΎαα ααΆαααα·ααααΆαααααΊααΆαααααααααααΆααα
ααΆαα α»αααααααααααΆααααααΉαααα·ααΆααααααααΊα₯ααα·ααααααααααΆααααΆααα’αααα αΌααα½ααααααΆαα αα·αα’ααααα·ααααααααααα ααΎαααΆαααΆααααΆααααα»αα αΌααα½ααα ααΎααααα·αα»ααΆ αααααΆααααΈαααααΎαααααΌαααΆαααααααααααΆαααΏαααΈαααααΈαααα αΆααα αααααΈα’αααα αΌααα½ααααααΆααααααΆααα
α αΎαα₯α‘αΌααααααΎαααΉααα·ααΆαα’αααΈαααααααααα»αααΆαα’αα·αααααααααααΎαααΆαα αΌααα½αα
ααααα»α
αααααΈααααααα―αααΆααααααΆααααααα Pandoc α ααΆααααΆαααααΆα ααααΆααααΌααα
ααΎααα αααααααα ααα»ααααααΌαααΆαααααα·αααααΉαα’ααααααααααα
ααΆααΆααα·αααΆαα Pandoc αα·ααααααααΆαααααααααααααααΆαααααααΆαααααααααααααααΈαα½ααααα ααΎααααΈααΆααααααΆααααααααααααααΌααΆααααααα αααααααααΆαααααΆαααααααααααααααΆαααααΌαααΆαααααΎα ααααΌα α―αααΆαααΆααααΌαααααΌαααΆααααααααα
ααΆααααΆαααααα·αααααααααααααα»ααα·ααα α αΎααααααΆααααα―αααΆααααα»ααααααααααααααααΆααααΌαααΆααααααΎαα
ααααΈααααΆααααααααα»ααααα α’αααα’αα·ααααααα α
ααααΆααααααααα»αααΆ "AST" αααααααΆαα±αα αααααΆαααΆαααααααααααα’ααΌααΈ α¬
$ cat example.html
<h1>Hello, World!</h1>
$ pandoc -f html -t native example.html
[Header 1 ("hello-world",[],[]) [Str "Hello,",Space,Str "World!"]]
α’αααα’αΆααααααΆαααααΎααΆαααΆαα½α Haskell αααΆαα αα ααΆααααααα·α α’αΆα ααααααα½α α αΎαααΈα§ααΆα αααααΌα αα½ααααααΆ Pandoc ααααΌαααΆαααααααα αααα»α Haskell: ααααααααααΆααααααααΆαααααΊααΆααΆαααααΆαααααα’αααααααα ααΆααααααααααΆααααα»ααααα Pandoc αααααΆααααααΎαα‘αΎαααΆααααααααααΆααααΌαααΆαααααΎααΆααααααΆα αα αααα»α Haskell α§ααΆα ααααα αααα»ααααααΆααααααααααΆαα
ααΌα αααααα ααΈααα α’αααα’αΆα ααΎαααΎαααΆααΆαααααΆαααΆααααα»αααΊααΆαα ααΆαααααααααααααΎαα‘αΎαααααα ααααα αααα»αααααΆααααΆααααα»αααΈαα½ααααΆααααααΈα α§ααΆα ααα αα ααααα·αααααΌαααΆααααααΈααααΆαα»αα½α - ααααααΆααααα·αααΈαα½ααααααΆααα»ααααααα "hello-world",[],[] α ααΆααβαα βαααα»αβααααααΆβαααβααΊβααΆβαααααΈβααβααααα’αααα βααααΆααα½αβ ααααβαααβααααααΆ αα·αβααααα’αααα βαα·ααααα!βα
ααΌα αααα’αααα’αΆα ααΎαααΆααααα αΆαααΆααααα»αααΊαα·ααα»αααααΆα αααΎαααΈ HTML ααα ααΆααΊααΆαααααΆααααααααΆααααΆααααα»αααΈαα½αααααααααααααΆααα½αα ααα½αα’αααΈααΆαααααΎαααααααααΆαααααΌαα α ααααααΆ α αΎαααααΉαααΆαααααΉαααΆαααΆαααααααααα―αααΆαα
ααααα·αααΎααΎαα α»ααααααααα·αα’αα»αααα ααααααααααα·αααααααααααΆααα―αααΆαααΆααααΌαααααΌαααΆααααααααΌα αααα
data Pandoc = Pandoc Meta [Block]
αα ααΈααα Block ααΊααΆα ααα»α ααααΌαααΆααααα»ααααααΆααααααΆααααΆαααΎ α αΎα Meta ααΊααΆααααααΆαα’αααΈα―αααΆα ααΌα ααΆα αααααΎα ααΆαααα·α αααααααααΎα α’ααααα·αααα - ααΆαα»αααααΆαααααΆααααααααααααααααααΆ α αΎα Pandoc ααααΆααΆαααααα·αααΎα’αΆα ααααΎαα ααΆα ααΎααααΈαααααΆααααααΆααααααααα αααααααααααΈαααααααα ααΆ ααααααα
α’αααααΆααααααααΎαααααΆααα’αααααααααααααα»α - α§ααΆα ααα ααααααΆ α¬αααΆαααα (αααΆαααα) - αααα»ααααααα αα·ααααααΈααα
ααα»α
ααααΌαααααα·αααΆαααΆα’αΆαα»ααααα - αααααΆααααΆαααα½αα α§ααΆα ααα Space α¬ Str ααΊααΆα’ααααααααΎααααααα Inline α αΎαααααΆα HTML αααααααα
ααΆ Inline αα·αααααααααΆαααααα ααΎαααΎααα·αααΎαα
ααα»α
ααΆαα½ααααα»αααΆαααααααα·αααααααααααααααααααααΆααααααα ααα»ααααααΌαα
αααΆαααΆααΆα’αΆα
ααααΌαααΆαααααΎααα
ααΈααα
αα½αα±ααα αΆααα’αΆαααααααααααα Pandoc ααΊααΆαααΌααΌα’ααΈαα αααβααΆαβαααβααΆβααΆαβα―αααΆαβαααβαα½αβα ααα½α α αΎαβα―αααΆαβαααβα’αΆα βααΆααβααΆβαααβααΆαα½αβααααΆα ααΆααΆααααα½αααααΎαα αααααααα Readers - α’αααα’αΆα αααααα―αααΆααα ααΆαααααααααααααΎαααααα·ααααΆααΆαα’αααΎα α·ααα αααααΈαα½ααααΆα ααααα‘ααααΈααααΆ α αΎααααααΆααααααΆααα’αααΈαααΆααα’αααα½αααααΆααΆα―αααΆααααα½αα αααα»αβααααΈβααα αα·ααααααβααααααΆαβααΉαβααααΌαβαααααΌαβααΈβαααααβαααααβααβα―αααΆαβαααα»αβαααβααβαα½αα
αα αααααααααα αα·ααΆαααΆ ααΈ LaTeX αα ααΆ HTML ααααΌααααΌαα»ααα·ααααα½αα α ααΆ LaTeXReader αααααααα―αααΆααααα αΌααα ααΆ AST αααααΆαααααααΌαα»ααα½ααααα α ααΆ HTMLWriter ααααααα AST αα ααΆ HTML α ααΌαα’ααα»αα ααααααααΆααααααααααα αα·αα αΆαααΆα ααααααα ααα½αααΆααααααααα ααα½ααα½ααααα»ααα - ααΆαααααααααΆαααααα»αααΆαααααα Reader αα·α Writer αααααΆααααααααααααΈααΈαα½αα α αΎαααΆααααααααααΌαααα’αΆα ααααΎααΆαααΆααα’ααααΉαααααΌαααΆαααΆαααααααααααααααααααα·α
ααΆα αααΆααααΆααααΆααααΆααααααααααααααααααΆααα»ααα·ααααα·ααααααΆααα αααααααΌαααΆαααααΆααααααΆααΌαααα αΎααααα’αααααααΆααααα»ααα·αααααααΆαααααααααααααα·ααΈα ααΆααααααΆαααααα»αααΊααΆαα αααΆαααΎααΆααααααααααααΆαααΆαααααααααααα ααααα·αααΎααΆαααααΆααααααΌαααΆαααΆαααααααααααααααααααΆαα α’αααααΉαααααΌαααααΆααααααΌαααΌααα αααα»α Readers αα·α Writers ααΆααα’ααα ααΆα§ααΆα ααα αααα αΆααααααα½ααααα»αα αααααααα αΆααααααααα’αααα’αα·αααααα Pandoc αααα»αααΆααααααααααααΆααΆααααα»αααααΆαα α₯α‘αΌαααα Pandoc α’αΆα αααααΎαααααΆααΆαααΆαααααααα»α αααααΆαααααααΆ αα½ααα αα·αααααααα αααα»ααααα‘αΆααΈαα½ααα α§ααΆα ααα αα»ααααααα colspan αααα»α HTML ααΉαααααΌαααΆααα·αα’αΎααΎα α ααα»αααα½ααααα»αα ααααα ααα»αααααααΆααα₯αα·ααΆαααααααΊααααααααααααΆαααααααα½αααααα½ααααααΆααααααΆαα±ααααΆααΆααααα»αααααααααΆααα’αα α¬αααΆαα αα ααΆααααΆα αααΎα - α’αΆαααααα ααα»ααα ααΆαα·αα αααΆαααααα»αααααααααΆαααααΆααΆααα½ααααααΆαα»ααααα»αααααΆααααααααα»αα ααα»ααααααΌααααΈαααααααΆααααΈααααΎαααΎααα·αααααΆαααΆααααΆαααα½αααααα α’αααααΉαααααΌαααααΆααααααΌαα’αααα’αΆα αα·αα’ααααααααααΆααα’αααααααΆααααααΆαααααΎααΆαααΆαα½αααΆααΆαα
ααΆααΆ Haskell ααααΌαβααΆαβααααΎαααΎαβαα·αβααααΉαβααβαααβααΆαβααβααΆαβαααα‘αΆααβααβα’ααα
αΆαααβααααβα’αααβαα·ααααβαααααΆααβααΆαβαααααβαααααα·ααΈβαα»αααΆαβα Haskell ααααΌαααΆαααααααΆααααΆαααααΆαααααααααΆαααααΎαααΆαα’ααααααααΆαααΌααααΌααΆαααααααΆα α§ααΆα ααααα½αααΊαααααΆααα
αα·αααααΆααααααααα monads ααααΌαααΆαααααΎαααααΆααααΆααα·ααΆαααΆαααααΆααααααα αα ααααααααΏααα½ααααα»α α αΎααααααΆαααααα½ααααα α§ααΆα ααααααα»αα§ααΆα ααααααα
whileParser :: Parser Stmt
whileParser = whiteSpace >> statement
ααααΌαα’αααααααΌαααΆααααα α αΎααααααΆααααααα ααααΈαααααααΆααα - αααααΆααααααα Parser Stmt αααααα
α’αα»ααααβαααα½αβααααΌαβααΆαβααααΎβααΎααααΈβαααα‘ααβαα·αβααααα·αβααΎβααΆαβαααβαααΆαααα α§ααΆα ααα,
statement :: Parser Stmt
statement = parens statement <|> sequenceOfStmt
ααΆαβαααβααΆ α’αααβααααΌαβααααΆααΆαβα’αΆαβααα ααααΈβαααααααΆαααβαααα»αβαααααα α¬βααααΆααΆαβα’αΆαβααα ααααΈβαααααααΆαααβααΆβαααααααααΆααα
αααααα·ααΈα’αα»ααααααααΌαααΆαααααΎααΆα ααααααΆααααΌαααΆαααααααΆαα monads α α§ααΆα ααα α’αα»ααααΆαα±ααα’αα»αααα tok α’αΆααααααΆαααααΆαααα½αα ααα½α (αααααΊααΆαα»αααΆααα·αααΈ LaTeXReader)α ααΌααααα‘ααααΎαααΆααα½ααααα αΌαααααΆαααα
const <$> tok <*> tok
ααΆααΉαα’αΆαααΌααΉαααΈαααΆααααααΆ α αΎααααα‘αααααααΈαα½ααα·αα
αααααΆααααααΆααααΆααα’ααααα Haskell ααΆαααααα·ααααα·αααα·αα·ααααααααΆαααααααααα’αΆα αααααααΎα±αααααααα·ααΈ Reader ααΎααα ααΌα αα·αααα ASCII α ααααΆααααααααΎαααΌαααα’ααα αΆααααααα
ααΆααα·α αα ααααααΎαααΆααααααΉα LaTeXReader α ααΆααα·α αα αααα Vasily ααΊααΎααααΈααΆααααααΆααααααααΆ mbox αα·α hbox αααααΆααααααααααααααΆααααΆαααααααααα αααα αααα»α LaTeX α Elizabeth ααα½ααα»αααααΌαα ααααααΆαααΆααααααΆααααααααΆ epigraph αααα’αα»ααααΆαα±ααα’ααααααααΎα epigraphs αα αααα»αα―αααΆα LaTeX α
Hatrace
ααααααααααααα·ααααα·ααΆαααΌα UNIX ααΆααΏααα’αα»ααααααΆαα α ααΆαααααααααα ααΆααΆααααααααααααα»αααΆαααααΆααααα α»α αα·ααααααααααΎααα·ααααΆααααααα·ααΈ αααα’αα»ααααΆαα±ααα’αααααΆαααΆαααΆαα α ααααααααααααααααα·ααΈαααααΎαα α§ααΆα ααα α§αααααααααΎααααΆαα strace ααΆαααααααααα αααΎαααααΎ ptrac ααΆααααα»αα
Hatrace ααΊααΆαααααΆαααααααααααααΌαα ααα»α αααααΆααααΎααααΈααΆαααΆααα αααα»α Haskell α ααΆααα·αααΊααΆ ptrace αααα½αααΆααΊααααΎαααΆαα α αΎαααΆαα·ααΆααααα»αααΆαααααΎααΆαααααααΆαα ααΆαα·αααααΈααΆααΆαα»αααΆαα
Hatrace ααααΎαααΆαααΌα ααΆ strace αα αααα αΆααααααΎα α αΎαααα½αααα’αΆαα»αααααααααααααααΆα ααΆβαα»αβααααΆβααΈβααΆαβαααααβααΆβααΆβααβααΆβαααααΆαααβαααβαααααβααΌαβα ααα»α βαααααΆααβααΆααααβααΆαβααααΆααβααβ ptrace α
αααααΆααααα½αααΈααΆαααα’ααααααΎα ααΎαααΆαα αΆααααΆαααα α»ααα·αααα’αα½ααα αααα»ααααααα·ααΈα ααααα GHC Haskell αα½α α αΎα - ααααΌαααΆααααααΆαααα ααααα»α ααΆαααααΎαα―αααΆαααααα»αα·αααααΉαααααΌα α αΎααα·αα ααααααα½αααΆα‘αΎααα·ααα αααα αΆααααααΎαα‘αΎααα·αα ααΆααααααααααααΈααααααΆαα α ααΆαααααααααααΆαααααΎα±ααααΆα’αΆα αααααΎαα‘αΎααα·αααΌαααα α»ααααα’αΆα αα»αα α·αααααΆααααα»αααααΎαααΆααα½α αααααΆααααααΆαααααα αααααααΆααααααΎαααα α»αα‘αΎααα·ααααα»ααααααααααα ααααΈαααααα
ααΎαααΆαααααααα
ααα»α
αααααΆααααΆαα α
ααΆαααααααααα
αααααΆααα - Elizaveta ααΆααααααα brk αα·α Vasily ααΆααααααα mmap α αααααα’ααααΎααααααααααΆαααΆαααααααΎα ααΆα’αΆα
ααααΎα’αΆαα»αααααααααΆαα α
ααΆαααααααααααΆαααααααΆααααΆαααΆαααα αα·αααααΉαααααΌαααΆααα»α αα
αααααααΎαααααΆαααα
ααααα: www.habr.com