ΠΡΠ΅Π· ΡΠ½ΠΈ ΡΠ°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° Π² ΠΌΠ°Π»ΠΊΠΎΡΠΎ ΡΠ²Π΅ΠΉΡΠ°ΡΡΠΊΠΎ Π³ΡΠ°Π΄ΡΠ΅ Π Π°ΠΏΠ΅ΡΡΠ²ΠΈΠ» ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ ΡΡΠ±ΠΈΡΠΈΠ΅ Π½Π° Ρ.Π½Π°Ρ
ΠΠ° Π½Π°Ρ
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° ΠΎΡ Π΄Π²Π°ΠΌΠ° ΡΡΡΠ΄Π΅Π½ΡΠΈ ΠΎΡ 3-ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎΡΡ βΠΡΠΈΠ»ΠΎΠΆΠ½Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ°β Π² ΠΠ°ΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΊΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ βΠΠΈΡΡΠ΅ ΡΡΠΈΠ»ΠΈΡΠ΅ ΠΏΠΎ ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ°β β Π‘Π°Π½ΠΊΡ ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³: ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠ»ΡΠ΅ΡΠΎΠ² ΠΈ ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° ΠΠ°ΡΠΈΠ»Π΅Π½ΠΊΠΎ. Π‘ΡΡΠ°ΡΡΡΠ° ΠΊΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ Π·Π° Π΄Π²Π°ΠΌΠ° Π½ΠΈ Π·Π°ΠΏΠΎΡΠ½Π° Ρ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ Π»Π΅ΠΊΡΠΈΠΈ Π½Π° Π. Π. ΠΠΎΡΠΊΠ²ΠΈΠ½ ΠΏΡΠ΅Π· 2-ΡΠ°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ°. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΡΡΠ°ΡΡΠ²Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Google Summer of Code, Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π° Π°Π»Π³Π΅Π±ΡΠΈΡΠ½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ Π² Haskell ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Π΅ΠΊΠΈΠΏΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π€ΠΎΡΠΌΠ°Ρ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ
Π¦Π΅Π»Π΅Π²Π°ΡΠ° Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ ΡΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΡΡΡ Π½ΠΎΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅, ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ Ρ ΠΎΡΠ°, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠ°Π»Π΅Π½ΠΈ ΠΏΠΎ Haskell. Π’Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΏΠ΅ΡΠ΄Π΅ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Haskell Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΎΡ ΡΡΠ» ββΡΠ²ΡΡ ΡΠ΅ ΡΡΠ±ΡΠ°Ρ Π° Π½Π° ΠΌΡΡΡΠΎΡΠΎ - HSR Hochschule fΓΌr Technik Rapperswil - Π·Π° Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ Π·Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΈ Π΄Π° Π½Π°ΠΊΠ°ΡΠ°Ρ Π½ΠΎΠ²ΠΈ Ρ ΠΎΡΠ° Π΄Π° ΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Ρ ΠΎΡ ΡΡΡ Π½ΠΎΡΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅.
Π‘Π½ΠΈΠΌΠΊΠ° ΠΎΡ Twitter
Π‘Ρ Π΅ΠΌΠ°ΡΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠ°: ΡΡΡΠ±Π²Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π² ΠΏΡΡΠ²ΠΈΡ Π΄Π΅Π½ Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΡΡΠΈΠ΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π·Π° Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ°Ρ ΡΡΠ²ΡΠ΅ΠΌ Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΠΎΡ ΡΡΠ΅Π½Π°ΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΡΡ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ΠΈΡΠ΅ ΡΡΡΡΡΡ Π°Π²ΡΠΎΡΠΈΡΠ΅ ΠΈ ΡΠ°Π·ΠΏΠΈΡΠ²Π°Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π·Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅.
ΠΡΠ΅ ΠΎΡΠ΅ Π½ΡΠΌΠ°ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π½ΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π΄ΠΎΠΏΡΠΈΠ½Π΅ΡΠ΅ΠΌ Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Ρ ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΡΠ΅Π΄ΠΎΠ²Π½ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ. Π ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΈ Π΄Π½ΠΈ ΡΠ°Π±ΠΎΡΠΈΡ ΠΌΠ΅ Ρ Π΄Π²Π΅ Π³ΡΡΠΏΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ. ΠΠΊΠ°Π·Π²Π° ΡΠ΅, ΡΠ΅ ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎΡΠΎ ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΠΆΠΈΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΡΡΡΡΠ΄Π½ΠΈΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ - Π² ZuriHac ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ Π° Π½ΠΎΠ²ΠΈ Π·Π° Π½Π°Ρ, ΠΈ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ Π½Π° Π΄Π²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅ΠΊΠΈΠΏΠ°, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠΎ Π΅Π΄Π½Π° Π·Π°Π΄Π°ΡΠ° Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅.
ΠΡΠ²Π΅Π½ ΡΠ΅Π½Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, Π² ZuriHac Π±ΡΡ Π° ΠΈΠ·Π½Π΅ΡΠ΅Π½ΠΈ ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΠΌΠ°ΠΉΡΡΠΎΡΡΠΊΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅. ΠΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΠΌ Π΄Π²Π΅ Π»Π΅ΠΊΡΠΈΠΈ. ΠΠ° ΠΏΡΡΠ²ΠΈΡ ΠΎΡ ΡΡΡ ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠΎΡ ΠΎΠ² ΠΎΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° Π² ΠΡΠΊΠ°ΡΡΠ» Π³ΠΎΠ²ΠΎΡΠΈ Π·Π° ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΎΡΠΈ - ΠΊΠ»Π°Ρ ΠΎΡ ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°Π½Π°Ρ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΎΡΠΈ ΠΈ ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅. Π Π΄ΡΡΠ³Π° Π»Π΅ΠΊΡΠΈΡ, Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Haskell, Π‘Π°ΠΉΠΌΡΠ½ ΠΠ΅ΠΉΡΡΠ½ ΠΠΆΠΎΡΠ½Ρ, Π³ΠΎΠ²ΠΎΡΠΈ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ°Π±ΠΎΡΠΈ Π² GHC ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°.
ΠΠ΅ΠΊΡΠΈΡ Π½Π° Π‘Π°ΠΉΠΌΡΠ½ ΠΠ΅ΠΉΡΡΠ½ ΠΠΆΠΎΡΠ½Ρ. Π‘Π½ΠΈΠΌΠΊΠ° ΠΎΡ Twitter
ΠΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡΠ΅ ΠΌΠ°ΠΉΡΡΠΎΡΡΠΊΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Ρ Π°ΠΊΠ°ΡΠΎΠ½Π° Π±ΡΡ Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π² ΡΡΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅. ΠΠ°Π΄Π°ΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅, Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΡΠ΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΡΡΡΠΎ Π±ΡΡ Π° ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½ΠΈ Ρ Π½ΠΈΠ²ΠΎ Π½Π° ΡΡΡΠ΄Π½ΠΎΡΡ. ΠΠ°Π»ΠΊΠ°ΡΠ°, Π½ΠΎ ΠΏΡΠΈΡΡΠ΅Π»ΡΠΊΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ Ρ ΡΠ°Π΄ΠΎΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²Π° Π½ΠΎΠ²ΠΎΠ΄ΠΎΡΠ»ΠΈΡΠ΅ Π² ΡΠ²ΠΎΠΈΡΠ΅ ΡΠ΅Π΄ΠΈΡΠΈ. ΠΠ° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π»Π΅ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠΎΡ ΠΎΠ² ΠΈ Π‘Π°ΠΉΠΌΡΠ½ ΠΠ΅ΠΉΡΡΠ½ ΠΠΆΠΎΡΠ½Ρ ΠΎΠ±Π°ΡΠ΅ ΠΊΡΡΡΡΡ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΉΡΠΎ Π²Π·Π΅Ρ ΠΌΠ΅ Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ°, Π±Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½.
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½Π° ΠΊΠ°ΠΊΡΠΎ Π·Π° ΡΠ΅Π΄ΠΎΠ²Π½ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° Π°Π²ΡΠΎΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠΎΠ΄Π°Π΄ΠΎΡ ΠΌΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ½ΠΈ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π±ΡΡΠ·ΠΎ Π±ΡΡ ΠΌΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½ΠΈ ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΡΠ°ΠΊΠ°ΡΠΈΡΠ΅ Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ.
Π ΡΠ΅Π³Π° ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, Π² ΡΠΈΠ΅ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ ΡΡΠ°ΡΡΠ²Π°Ρ ΠΌΠ΅.
Pandoc
Π‘ΠΏΠΈΡΡΠΊ Π½Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΎΡ Pandoc. ΠΠΌΠ° ΠΈ ΡΡΠ»Π° Π³ΡΠ°ΡΠΈΠΊΠ° Π½Π° ΡΠ°ΠΉΡΠ°, Π½ΠΎ ΡΠ°Π·ΠΈ ΡΠ½ΠΈΠΌΠΊΠ° Π½Π΅ ΡΠ΅ Π²ΠΏΠΈΡΠ²Π° Π² ΡΡΠ°ΡΠΈΡΡΠ°.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Pandoc Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π·Π° Π²ΡΡΠΊΠ° Π΄Π²ΠΎΠΉΠΊΠ° ΡΠΎΡΠΌΠ°ΡΠΈ. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΊΠΎΠ²Π° Π³ΠΎΠ»ΡΠΌΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΏΡΡΠ²ΠΎ ΡΠ΅Π»ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠ΅ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡ ΡΠΎΠ²Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ββΠ²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ βASTβ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° Abstract Syntax Tree ΠΈΠ»ΠΈ
$ 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 ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°, Π°ΠΊΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈ ΡΠ°ΠΊΠ°Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π° ΠΎΡ ΡΠΎΡΠΌΠ°Ρ Π² ΡΠΎΡΠΌΠ°Ρ.
ΠΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Block - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Header ΠΈΠ»ΠΈ Para (paragraph) - ΠΏΡΠΈΠ΅ΠΌΠ°Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΈ ΡΠΏΠΈΡΡΠΊ ΠΎΡ Π²ΡΡΡ
ΠΎΠ²Π΅ ΠΎΡ ΠΏΠΎ-Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ - Inline, ΠΊΠ°ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Space ΠΈΠ»ΠΈ Str ΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Inline, Π° HTML ΡΠ°Π³ΡΡ ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ° Π² ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Inline. ΠΠ΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠΌΠΈΡΡΠ» Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΠΏΡΠ»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠΈΠΏΠΎΠ²Π΅, Π½ΠΎ ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ ΡΡΠΊ
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ Π΅, ΡΠ΅ ΡΠΈΠΏΡΡ Pandoc Π΅ ΠΌΠΎΠ½ΠΎΠΈΠ΄. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠΌΠ° Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ ΠΏΡΠ°Π·Π΅Π½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈ ΡΠ΅Π·ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ Π·Π°Π΅Π΄Π½ΠΎ. Π’ΠΎΠ²Π° Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΏΡΠΈ ΠΏΠΈΡΠ°Π½Π΅ Π½Π° Readers - ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π½Π° ΡΠ°ΡΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°, Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²ΡΡΠΊΠ° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π·Π°Π΅Π΄Π½ΠΎ Π² Π΅Π΄ΠΈΠ½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ±ΡΠ°Π½Π° ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΡΡΠΈ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π½Π°Π²Π΅Π΄Π½ΡΠΆ.
ΠΠΎΠ³Π°ΡΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅, Π΄Π° ΡΠ΅ΡΠ΅ΠΌ, ΠΎΡ LaTeX Π² HTML, ΠΏΡΡΠ²ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ», Π½Π°ΡΠ΅ΡΠ΅Π½ LaTeXReader, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° Π²Ρ ΠΎΠ΄Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² AST, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄ΡΡΠ³ ΠΌΠΎΠ΄ΡΠ», Π½Π°ΡΠ΅ΡΠ΅Π½ HTMLWriter, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° AST Π² HTML. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ΅Π½ Π±ΡΠΎΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ - Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Reader ΠΈ Writer Π·Π° Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΠ² ΡΠΎΡΠΌΠ°Ρ ΠΈ Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ.
Π―ΡΠ½ΠΎ Π΅, ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈΠΌΠ° ΠΈ ΡΠ²ΠΎΠΈΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ, ΠΎΡΠ΄Π°Π²Π½Π° ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°. ΠΠ°ΠΉ-Π·Π½Π°ΡΠΈΠΌΠ°ΡΠ° Π΅ ΡΠ΅Π½Π°ΡΠ° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°. ΠΠΊΠΎ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠ΅ΡΠΈΠΎΠ·Π½Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄Π° Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ Readers ΠΈ Writers. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π΄Π½ΠΎ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅Π»ΡΡΠ²Π°ΡΠ° ΠΏΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Pandoc Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ. Π‘Π΅Π³Π° Pandoc ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π° ΡΠ°ΠΌΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, ΡΡΡ Π·Π°Π³Π»Π°Π²ΠΊΠ°, ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π²ΡΠ² Π²ΡΡΠΊΠ° ΠΊΠ»Π΅ΡΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡΡΡ colspan Π² HTML ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½. ΠΠ΄Π½Π° ΠΎΡ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΡ Π΅ΠΌΠ° Π·Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈ β ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Π½Π΅ Π΅ ΡΡΠ½ΠΎ Π² ΠΊΠ°ΠΊΠ²Π° ΡΠΎΡΠΌΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π²ΡΠ² Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅. ΠΠΎ Π΄ΠΎΡΠΈ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΈΠ·Π³Π»Π΅Π΄, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠΈΡΠΊΠΈ Reader ΠΈ Writers, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°Π±Π»ΠΈΡΠΈ.
ΠΠ·ΠΈΠΊΡΡ Haskell Π΅ ΠΈΠ·Π±ΡΠ°Π½ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π°ΡΠ°Π΄ΠΈ Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° Π»ΡΠ±ΠΎΠ² Π½Π° Π°Π²ΡΠΎΡΠΈΡΠ΅ ΠΊΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Haskell Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΡ ΡΠ²ΠΎΠΈΡΠ΅ ΡΠΈΡΠΎΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅ΠΊΡΡ. ΠΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈ, ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ Π°Π½Π°Π»ΠΈΠ·, ΠΊΠΎΠ³Π°ΡΠΎ Π΅Π΄Π½ΠΎ Π½Π΅ΡΠΎ ΠΈΠ΄Π²Π° ΠΏΡΡΠ²ΠΎ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄ΡΡΠ³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ:
whileParser :: Parser Stmt
whileParser = whiteSpace >> statement
ΠΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π±ΡΠΎΠΈΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° - ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΠΈΠΌΠ° ΡΠΈΠΏ Parser Stmt.
ΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΎΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄, Π°ΠΊΠΎ Π°Π½Π°Π»ΠΈΠ·ΡΡ Π΅ Π½Π΅ΡΡΠΏΠ΅ΡΠ΅Π½. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
statement :: Parser Stmt
statement = parens statement <|> sequenceOfStmt
ΠΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠ»ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ²ΡΡΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΠΊΠΎΠ±ΠΈ, ΠΈΠ»ΠΈ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ²ΡΡΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ.
ΠΡΠΈΠ»ΠΎΠΆΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΎΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠ΅Π΄ΠΈΠΌΠ½ΠΎ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΊΠΈ ΠΏΡΡΠΈΡΠ° Π·Π° ΠΌΠΎΠ½Π°Π΄ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° tok Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ Π½ΡΠΊΠ°ΠΊΡΠ² ΡΠΎΠΊΠ΅Π½ (ΡΠΎΠ²Π° Π΅ ΠΈΡΡΠΈΠ½ΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡ LaTeXReader). ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ
const <$> tok <*> tok
Π’ΠΎΠΉ ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ Π΄Π²Π° ΠΆΠ΅ΡΠΎΠ½Π° ΠΏΠΎΠ΄ΡΠ΅Π΄ ΠΈ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΏΡΡΠ²ΠΈΡ.
ΠΠ° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Haskell ΠΈΠΌΠ° ΠΊΡΠ°ΡΠΈΠ²ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Reader Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ ASCII ΠΈΠ·ΠΊΡΡΡΠ²ΠΎ. ΠΡΠΎΡΡΠΎ ΡΠ΅ Π²ΡΠ·Ρ ΠΈΡΠ°Π²Π°ΠΉΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ ΠΊΠΎΠ΄.
ΠΠ°ΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π±ΡΡ Π° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ LaTeXReader. ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π½Π° ΠΠ°ΡΠΈΠ»ΠΈΠΉ Π±Π΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ mbox ΠΈ hbox, ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² LaTeX. ΠΠ»ΠΈΠ·Π°Π±Π΅Ρ Π±Π΅ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½Π° Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° epigraph, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π΅ΠΏΠΈΠ³ΡΠ°ΡΠΈ Π² LaTeX Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ.
Hatrace
UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ΅ΡΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ptrace. Π’ΠΎΠΉ Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ, ΠΊΠ°ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΡΠ°Π²ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°ΡΠ° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° strace ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ptrace Π²ΡΡΡΠ΅ΡΠ½ΠΎ.
Hatrace Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ptrace Π² Haskell. Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΡΠ°ΠΌΠ°ΡΠ° ptrace Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π° ΠΈ Π΅ Π΄ΠΎΡΡΠ° ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ Π΅Π·ΠΈΡΠΈ.
Hatrace ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ strace ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ. Π Π°Π·Π»ΠΈΡΠ°Π²Π° ΡΠ΅ ΠΎΡ strace ΠΏΠΎ ΡΠΎΠ²Π°, ΡΠ΅ Π΅ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠΎ-ΠΏΡΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡ ptrace.
Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° hatrace Π²Π΅ΡΠ΅ Ρ Π²Π°Π½Π°Ρ ΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π½Π΅ΠΏΡΠΈΡΡΠ΅Π½ Π±ΡΠ³ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π½Π° GHC Haskell - Π±ΠΈΠ΄Π΅ΠΉΠΊΠΈ ΡΠ±ΠΈΡ Π² Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠΎΠΉ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π½Π΅ Π³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. Π‘ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ΡΠΎ ΡΡΠ΅Π· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΠΎ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ° Π² Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ±ΠΈΠΉΡΡΠ²Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ Π³ΡΠ΅ΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²Π° ΡΠ°ΡΠ°.
ΠΠΎΠ±Π°Π²ΠΈΡ
ΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° - ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈ brk, Π° ΠΠ°ΡΠΈΠ»ΠΈΠΉ Π΄ΠΎΠ±Π°Π²ΠΈ mmap. ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π½Π°ΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΠΈ ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com