ΠΡΠ΅Π· ΡΠ½ΠΈ ΡΠ°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° Π² ΠΌΠ°Π»ΠΊΠΈΡ ΡΠ²Π΅ΠΉΡΠ°ΡΡΠΊΠΈ Π³ΡΠ°Π΄ Π Π°ΠΏΠΏΠ΅ΡΡΠ²ΠΈΠ» Π·Π° Π΄Π΅ΡΠ΅ΡΠΈΡ ΠΏΡΡ ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ ΡΡΠ±ΠΈΡΠΈΠ΅, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ . Π’ΠΎΠ·ΠΈ ΠΏΡΡ Π½Π° Π½Π΅Π³ΠΎ ΡΠ΅ ΡΡΠ±ΡΠ°Ρ Π° Π½Π°Π΄ ΠΏΠ΅ΡΡΡΠΎΡΠΈΠ½ ΠΏΠΎΡΠΈΡΠ°ΡΠ΅Π»ΠΈ Π½Π° Π₯Π°ΡΠΊΠ΅Π», ΠΎΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ΡΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ Ρ Π°ΠΊΠ°ΡΠΎΠ½, ΡΠΎ Π½Π΅ Π΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ ΠΈΠ»ΠΈ Ρ Π°ΠΊΠ°ΡΠΎΠ½ Π² ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΌΠΈΡΡΠ». Π€ΠΎΡΠΌΠ°ΡΡΡ ΠΌΡ Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠΎΡΡΠΊΠΈ. ΠΠ°ΡΡΠΈΡ ΠΌΠ΅ Π·Π° ZuriHac ΠΏΠΎ ΡΠ°ΡΡΠ»ΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΡΡ, ΡΡΠ°ΡΡΠ²Π°Ρ ΠΌΠ΅ Π² Π½Π΅Π³ΠΎ ΠΈ ΡΠ΅Π³Π° ΡΡΠΈΡΠ°ΠΌΠ΅ Π·Π° ΡΠ²ΠΎΠΉ Π΄ΡΠ»Π³ Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° ΡΠΎΠ²Π° Π½Π΅ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΎ ΠΎΡΠΊΡΠΈΡΠΈΠ΅!

ΠΠ° Π½Π°Ρ
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° ΠΎΡ Π΄Π²Π°ΠΌΠ° ΡΡΡΠ΄Π΅Π½ΡΠΈ ΠΎΡ ΡΡΠ΅ΡΠΈ ΠΊΡΡΡ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎΡΡΡΠ° "ΠΡΠΈΠΊΠ»Π°Π΄Π½Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ°" Π½Π° ΠΠΠ£ ΠΠ¨Π β Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³: ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠ»ΡΡΠΎΡΠΎΠ² ΠΈ ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° ΠΠ°ΡΠΈΠ»Π΅Π½ΠΊΠΎ. Π£Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½ΠΈ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π·Π° ΠΎΠ±ΠΎΠΈΡ Π·Π°ΠΏΠΎΡΠ½Π° Ρ ΡΠΈΠΊΡΠ» ΠΎΡ Π»Π΅ΠΊΡΠΈΠΈ Π½Π° Π. Π. ΠΠΎΡΠΊΠ²ΠΈΠ½ Π½Π° Π²ΡΠΎΡΠΈ ΠΊΡΡΡ Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ°. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΡΡΠ°ΡΡΠ²Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Google Summer of Code, Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π°Π»Π³Π΅Π±ΡΠΈΡΠ½ΠΈ Π³ΡΠ°ΡΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π₯Π°ΡΠΊΠ΅Π» ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Π΅ΠΊΠΈΠΏΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° . ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠΈ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΡΠΈΡΠ΅ ΡΠΌΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π² ΠΊΡΡΡΠΎΠ²Π°ΡΠ° ΡΠΈ ΡΠ°Π±ΠΎΡΠ°, ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½Π° Π½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° Π°Π½ΡΠΈ-ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΎΡΠΈΡΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅.
Π€ΠΎΡΠΌΠ°Ρ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ
Π¦Π΅Π»Π΅Π²Π°ΡΠ° Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ ΡΠ° ΠΏΡΠΈΡΠ΅ΠΆΠ°ΡΠ΅Π»ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ, ΠΆΠ΅Π»Π°Π΅ΡΠΈ Π΄Π° Π΄ΠΎΠΏΡΠΈΠ½Π΅ΡΠ°Ρ Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅, ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π»Π΅ΡΠ΅Π½ΠΈ ΠΏΠΎ Π₯Π°ΡΠΊΠ΅Π» Ρ ΠΎΡΠ°. Π’Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° Π² ΠΌΡΡΡΠΎΡΠΎ Π½Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ β ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° HSR Hochschule fΓΌr Technik Rapperswil β ΡΠ΅ ΡΡΠ±ΡΠ°Ρ Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΎΡ Π½Π°Π΄ ΠΏΠ΅ΡΠ΄Π΅ΡΠ΅Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π΅Π·ΠΈΠΊΠ° Haskell ΠΎΡ ΡΡΠ» ΡΠ²ΡΡ, Π·Π° Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ°Ρ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ ΡΠΈ ΠΈ Π΄Π° ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°Ρ Π½ΠΎΠ²ΠΈ Ρ ΠΎΡΠ° Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅.

Π‘Π½ΠΈΠΌΠΊΠΈ ΠΎΡ Twitter
Π‘Ρ Π΅ΠΌΠ°ΡΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠ°: ΡΡΡΠ±Π²Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² ΠΏΡΡΠ²ΠΈΡ Π΄Π΅Π½ Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΠΏΠΎ ΡΡΠΈΠ΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π·Π° Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΠΎΡ ΡΡΠ΅Π½Π°ΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΡΡ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ. ΠΠΎΡΠ»Π΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ΠΈΡΠ΅ Ρ ΠΎΡΠ° ΡΡΡΡΡΡ Π°Π²ΡΠΎΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·ΠΏΠΈΡΠ²Π°Ρ Π·Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½ΡΠΌΠ°ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π΄ΠΎΠΏΡΠΈΠ½Π΅ΡΠ΅ΠΌ Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Ρ ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ. Π ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΈ Π΄Π½ΠΈ ΡΠ°Π±ΠΎΡΠΈΡ ΠΌΠ΅ Ρ Π΄Π²Π΅ Π³ΡΡΠΏΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ. ΠΠΊΠ°Π·Π° ΡΠ΅, ΡΠ΅ ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎΡΠΎ ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΆΠΈΠ²ΠΎΡΠΎ ΠΎΠ±ΡΡΠ²Π°Π½Π΅ ΠΏΡΠ°Π²ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΠΎΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ β Π½Π° ZuriHac ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π² Π½ΠΎΠ²ΠΈ Π·Π° Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ Π½Π° Π΄Π²Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅ΠΊΠΈΠΏΠ°, ΡΠ΅ΡΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΠΎ Π·Π°Π΄Π°ΡΠ° Π² Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅.
ΠΡΠ²Π΅Π½ ΡΠ΅Π½Π½ΠΈΡ ΠΎΠΏΠΈΡ, Π½Π° ZuriHac Π±ΡΡ Π° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈ ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π°ΡΠ΅Π»ΠΈΠ΅ΡΠ°. ΠΡΠΎΠ±Π΅Π½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΡΡΠΈ ΡΠ΅ Π±ΡΡ Π° Π΄Π²Π΅ Π»Π΅ΠΊΡΠΈΠΈ. Π ΠΏΡΡΠ²Π°ΡΠ° ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠΎΡ ΠΎΠ² ΠΎΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° Π² ΠΡΠΊΠ°ΡΡΠ» ΡΠ°Π·ΠΊΠ°Π·Π° Π·Π° ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ Π°ΠΏΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΎΡΠΈ β ΠΊΠ»Π°Ρ ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΠΏΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΎΡΠΈ ΠΈ ΠΌΠΎΠ½Π°Π΄ΠΈ. ΠΠ° Π΄ΡΡΠ³Π°ΡΠ° Π»Π΅ΠΊΡΠΈΡ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π₯Π°ΡΠΊΠ΅Π», Π‘Π°ΠΉΠΌΡΠ½ ΠΠ΅ΠΉΡΠΎΠ½ ΠΠΆΠΎΡΠ½Ρ, ΡΠ°Π·ΠΊΠ°Π·Π²Π°ΡΠ΅ ΠΊΠ°ΠΊ Π΅ ΡΡΡΡΠΎΠ΅Π½ ΠΈΠ·Π²ΠΎΠ΄Π° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° GHC.

ΠΠ΅ΠΊΡΠΈΡ Π½Π° Π‘Π°ΠΉΠΌΡΠ½ ΠΠ΅ΠΉΡΠΎΠ½ ΠΠΆΠΎΡΠ½Ρ. Π‘Π½ΠΈΠΌΠΊΠ° ΠΎΡ Twitter
Π Π°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π°ΡΠ΅Π»ΠΈΠ΅ΡΠ°, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Ρ Π°ΠΊΠ°ΡΠΎΠ½Π°, Π±ΡΡ Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° ΡΡΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅. ΠΠ°Π΄Π°ΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π½ΠΈ Π½Π° ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅, ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈ ΡΠ΅ ΠΊΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, ΡΡΡΠΎ ΠΈΠΌΠ°Ρ Π° Π±Π΅Π»Π΅ΠΆΠΊΠΈ Ρ Π½ΠΈΠ²ΠΎ Π½Π° ΡΡΡΠ΄Π½ΠΎΡΡ. ΠΠ΅Π±ΡΠΎΠ΅Π½ΠΎ, Π½ΠΎ Π΄ΡΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ Ρ ΡΠ°Π΄ΠΎΡΡ ΠΏΡΠΈΠ΅ΠΌΠ° Π½ΠΎΠ²Π°ΡΠΈΡΠ΅. ΠΠ° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π»Π΅ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠΎΡ ΠΎΠ² ΠΈ Π‘Π°ΠΉΠΌΡΠ½ ΠΠ΅ΠΉΡΠΎΠ½ ΠΠΆΠΎΡΠ½Ρ, ΠΎΠ±Π°ΡΠ΅, ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°ΡΠΈΡ Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° ΠΊΡΡΡ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅.
ΠΠ°ΠΊΡΠΎ Π·Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½Π°. ΠΠΎΠ΄Π°Π΄ΠΎΡ ΠΌΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ½ΠΈ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΄ΠΎΡΡΠ° Π±ΡΡΠ·ΠΎ Π±ΡΡ ΠΌΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ΠΈ ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ° Ρ ΡΠ°ΠΊΠ°ΡΠΈ Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ.
Π ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΡΠ°ΡΡΠ²Π°Ρ ΠΌΠ΅.
Pandoc
Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΡΠ΅Π» Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ β ΠΎΡ Π²ΡΠ΅ΠΊΠΈ ΡΠΎΡΠΌΠ°Ρ Π² Π²ΡΠ΅ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ docx Π² pdf, ΠΈΠ»ΠΈ ΠΎΡ Markdown Π² MediaWiki. ΠΠ΅Π³ΠΎΠ²ΠΈΡΡ Π°Π²ΡΠΎΡ ΠΠΆΠΎΠ½ ΠΠ°ΠΊΠ€Π°ΡΠ»Π΅ΠΉΠ½ β ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΠΏΠΎ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΡ Π² ΠΠ°Π»ΠΈΡΠΎΡΠ½ΠΈΠΉΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² ΠΡΡΠΊΠ»ΠΈ. ΠΡΡΡΠ½ΠΎΡΡ, Pandoc Π΅ Π΄ΠΎΡΡΠ° ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΈ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΠΎΠ·Π½Π°ΡΠΈΡΠ΅ Π½ΠΈ Π±ΡΡ Π° ΠΈΠ·Π½Π΅Π½Π°Π΄Π°Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π±ΡΠ°Ρ Π°, ΡΠ΅ Pandoc Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π₯Π°ΡΠΊΠ΅Π».

Π‘ΠΏΠΈΡΡΠΊ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΎΡ Pandoc. ΠΠ° ΡΠ°ΠΉΡΠ° ΠΈΠΌΠ° ΡΡΡΠΎ ΡΡΠ»Π° Π³ΡΠ°ΡΠΈΠΊΠ°, Π½ΠΎ ΡΠ°Π·ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΡΠ°ΡΠΈΡΡΠ°.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π² Pandoc Π½Π΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ Π·Π° Π²ΡΡΠΊΠ° Π΄Π²ΠΎΠΉΠΊΠ° ΡΠΎΡΠΌΠ°ΡΠΈ. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΎΠ±ΡΠΈΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΏΡΡΠ²ΠΎ, ΡΠ΅Π»ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠ΅ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠΎΠ²Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² Π΄ΡΡΠ³ ΡΠΎΡΠΌΠ°Ρ. ΠΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ "AST", ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Abstract Syntax Tree, ΠΈΠ»ΠΈ . ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅ΡΠ½ΠΎ: Π·Π° ΡΠ΅Π»ΡΠ° ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΡΠΎΡΠΌΠ°Ρ "native".
$ cat example.html
<h1>Hello, World!</h1>
$ pandoc -f html -t native example.html
[Header 1 ("hello-world",[],[]) [Str "ΠΠ΄ΡΠ°Π²Π΅ΠΉ," ,Space,Str "Π‘Π²Π΅ΡΠΎΠ²Π½ΠΈ!"]]
Π§ΠΈΡΠ°ΡΠ΅Π»ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ½Π΅ ΠΌΠ°Π»ΠΊΠΎ ΡΠ° ΡΠ°Π±ΠΎΡΠΈΠ»ΠΈ Ρ Π₯Π°ΡΠΊΠ΅Π», Π²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ ΠΏΠΎ ΡΠΎΠ·ΠΈ ΠΌΠ°Π»ΡΠΊ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ°Ρ, ΡΠ΅ Pandoc Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π₯Π°ΡΠΊΠ΅Π»: ΠΈΠ·Ρ ΠΎΠ΄ΡΡ Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° Pandoc ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΡΡΠΈΠ½Π³, ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π°, ΠΊΠ°ΠΊ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π² Π₯Π°ΡΠΊΠ΅Π», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
Π’Π°ΠΊΠ° ΡΠ΅, ΡΡΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ, ΡΠ΅ Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π΅ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π° ΡΡΡΡΠΊΡΡΡΠ°, Π² ΠΊΠΎΡΡΠΎ Π²ΡΡΠΊΠΈ Π²ΡΡΡΠ΅ΡΠ΅Π½ Π²ΡΠ·Π΅Π» ΡΡΠ΄ΡΡΠΆΠ° ΡΠΏΠΈΡΡΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π½Π°ΠΉ-Π³ΠΎΡΠ½ΠΎΡΠΎ Π½ΠΈΠ²ΠΎ ΠΈΠΌΠ° ΡΠΏΠΈΡΡΠΊ Ρ Π΅Π΄ΠΈΠ½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ β Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π° ΠΏΡΡΠ²ΠΎ Π½ΠΈΠ²ΠΎ Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ "hello-world",[],[]. ΠΡΡΡΠ΅ Π² ΡΠΎΠ²Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π΅ ΡΠΊΡΠΈΡ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΡΡΡΠΈΠ½Π³Π° "Hello," , ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΈ ΡΡΡΠΈΠ½Π³Π° "World!".
ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ, Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ HTML. Π’ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π΄ΡΡΠ²ΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ Π²ΡΠ΅ΠΊΠΈ Π²ΡΡΡΠ΅ΡΠ΅Π½ Π²ΡΠ·Π΅Π» ΡΡΠΎΠ±ΡΠ°Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΠΎΡΠΎΠΌΡΠΈ, Π° Π² Π»ΠΈΡΡΠ°ΡΠ° ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΠ°ΠΌΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
ΠΠΊΠΎ ΡΠ»Π΅Π·Π΅ΠΌ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠΈΠΏΡΡ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΅Π»ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ°ΠΊΠ°:
data Pandoc = Pandoc Meta [Block]Π’ΡΠΊ Block Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ Π²ΡΡΡ ΠΎΠ²Π΅, Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ ΠΏΠΎ-Π³ΠΎΡΠ΅, Π° Meta Π΅ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΊΠ°ΡΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅, Π΄Π°ΡΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, Π°Π²ΡΠΎΡΠΈ β Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ ΡΠΎΠ²Π° Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ, ΠΈ Pandoc ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄ ΠΎΡ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΡΠΎΡΠΌΠ°Ρ.
ΠΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° BlockβΠ½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Header ΠΈΠ»ΠΈ Para (ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ)βΠΏΡΠΈΠ΅ΠΌΠ°Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΈ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΠΏΠΎ-Π½ΠΈΡΠΊΠΈ Π½ΠΈΠ²Π°βInline, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Space ΠΈΠ»ΠΈ Str ΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Inline, Π° HTML-ΡΠ΅Π³ΡΡ
ΠΏΡΠ΅Π²ΡΡΡΠ° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Inline. ΠΡΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡΠ»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠΈΠΏΠΎΠ²Π΅, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ, ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΡΡ ΡΡΠΊ. .
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΅, ΡΠ΅ ΡΠΈΠΏΡΡ Pandoc Π΅ ΠΌΠΎΠ½ΠΎΠΈΠ΄. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΏΡΠ°Π·Π΅Π½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈ ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ. Π’ΠΎΠ²Π° Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° Reader-ΠΈβΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡΡ Π½Π° ΡΠ°ΡΡΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°, Π΄Π° ΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠ° Π²ΡΡΠΊΠ° ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΠ΅ ΡΡΠ±Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π² Π΅Π΄ΠΈΠ½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ ΡΡΠ±Π΅ΡΠ΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΡΡΠΈ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π½Π°Π²Π΅Π΄Π½ΡΠΆ.
ΠΡΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅, Π΄Π° ΡΠ΅ΡΠ΅ΠΌ, ΠΎΡ LaTeX Π² HTML, ΠΏΡΡΠ²ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ», Π½Π°ΡΠ΅ΡΠ΅Π½ LaTeXReader, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π²Ρ ΠΎΠ΄Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² AST, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΄ΡΡΠ³ ΠΌΠΎΠ΄ΡΠ», Π½Π°ΡΠ΅ΡΠ΅Π½ HTMLWriter, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° AST Π² HTML. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΈΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈβΠ΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΠ² ΡΠΎΡΠΌΠ°Ρ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ Reader ΠΈ Writer, ΠΈ Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ ΡΡΠ°Π½Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ.
Π―ΡΠ½ΠΎ Π΅, ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈΠΌΠ° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ, ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈ ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈΡΠ΅ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°. ΠΠ°ΠΉ-ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈΡΡ Π΅ ΡΠ°Π·Ρ ΠΎΠ΄ΡΡ ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ. ΠΠΊΠΎ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠ΅ΡΠΈΠΎΠ·Π½Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ Reader-ΠΈ ΠΈ Writer-ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π΄Π½Π° ΠΎΡ Π·Π°Π΄Π°ΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Pandoc Π΅ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Pandoc ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ Ρ Π·Π°Π³Π»Π°Π²ΠΈΠ΅, ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² ΠΊΠ»Π΅ΡΠΊΠΈΡΠ΅. Π’Π°ΠΊΠ° Π°ΡΡΠΈΠ±ΡΡΡΡ colspan Π² HTML ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½. ΠΠ΄Π½Π° ΠΎΡ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° Π΅Π΄ΠΈΠ½Π½Π° ΡΡ Π΅ΠΌΠ° Π·Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈβΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Π½Π΅ Π΅ ΡΡΠ½ΠΎ Π² ΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π²ΡΠ² Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅. ΠΠΎ Π΄ΠΎΡΠΈ ΠΈ ΡΠ»Π΅Π΄ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠΈΡΠΊΠΈ Reader-ΠΈ ΠΈ Writer-ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°Π±Π»ΠΈΡΠΈ.
ΠΠ·ΠΈΠΊΡΡ Haskell Π±Π΅ΡΠ΅ ΠΈΠ·Π±ΡΠ°Π½ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π°ΡΠ°Π΄ΠΈ Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° Π»ΡΠ±ΠΎΠ² Π½Π° Π°Π²ΡΠΎΡΠΈΡΠ΅ ΠΊΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Haskell Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΡ ΡΠΈΡΠΎΠΊΠΈΡΠ΅ ΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²Π΅. ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ β ΠΌΠΎΠ½ΠΎΠΈΠ΄ΠΈ, ΠΌΠΎΠ½Π°Π΄ΠΈ, Π°ΠΏΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈ ΠΈ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΎΡΠΈ β Π·Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΈ. Π¦ΡΠ»Π°ΡΠ° ΠΌΠΎΡ Π½Π° Parsec ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ Π² HaskellWiki, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡΠ»Π΅Π½ ΠΏΠ°ΡΡΠ΅Ρ Π½Π° ΠΏΡΠΎΡΡ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Parsec ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ Π² Pandoc.
ΠΠΊΠΎ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΊΡΠ°ΡΠΊΠΎ, ΠΌΠΎΠ½Π°Π΄ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΏΠ°ΡΡΠ΅Π½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΡΠ²ΠΎ ΠΈΠ΄Π²Π° Π΅Π΄Π½ΠΎ, Π° ΠΏΠΎΡΠ»Π΅ Π΄ΡΡΠ³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ°ΠΊΡΠ² ΠΏΡΠΈΠΌΠ΅Ρ:
whileParser :: Parser Stmt
whileParser = whiteSpace >> statementΠΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Π°, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° statement β ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΠΈΠΌΠ° ΡΠΈΠΏ Parser Stmt.
ΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΎΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΎΡΠΊΠ°Ρ Π² ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π΅ Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
statement :: Parser Stmt
statement = parens statement sequenceOfStmtΠΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ statement Π² ΡΠΊΠΎΠ±ΠΈΡΠ΅, ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ statement-Π°.
ΠΠΏΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΎΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΊΠ°ΡΠΎ ΠΊΡΠ°ΡΠΊΠΈ ΠΏΡΡΠΈΡΠ° Π·Π° ΠΌΠΎΠ½Π°Π΄ΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΡΡΠ° 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 Π²Π΅ΡΠ΅ ΠΎΡΠΊΡΠΈΡ ΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π½Π΅ΠΏΡΠΈΡΡΠ΅Π½ Π±ΡΠ³ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π½Π° Haskell GHC β ΠΊΠΎΠ³Π°ΡΠΎ Π΅ ΡΠ±ΠΈΡ Π² Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠΎΠΉ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π½Π΅ Π³ΠΈ ΠΏΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. Π‘ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΏΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ° Ρ Π΅Π΄Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΠ±ΠΈΠΉΡΡΠ²Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²Π° ΡΠ°ΡΠ°.
ΠΠΎΠ±Π°Π²ΠΈΡ
ΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° β ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈ brk, Π° ΠΠ°ΡΠΈΠ»ΠΈΠΉ Π΄ΠΎΠ±Π°Π²ΠΈ mmap. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ°, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΠΈ ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
