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