GSoC 2019: แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒแƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒ“แƒ˜แƒก แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ

แƒ’แƒแƒกแƒฃแƒš แƒ–แƒแƒคแƒฎแƒฃแƒšแƒก แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ” แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒแƒ‘แƒ Google Summer of Code - แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ Google-แƒ˜แƒก แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒงแƒแƒ•แƒ”แƒšแƒฌแƒšแƒ˜แƒฃแƒ แƒแƒ“, แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒ˜แƒ แƒฉแƒ”แƒ•แƒ”แƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒก, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜ แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Boost.org ะธ Linux แƒคแƒแƒœแƒ“แƒ˜. Google แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ›แƒกแƒแƒคแƒšแƒ˜แƒแƒ“แƒแƒœ แƒแƒ› แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ–แƒ” แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ“. 

แƒ แƒแƒ’แƒแƒ แƒช Google Summer of Code 2019-แƒ˜แƒก แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ›, แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ” แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜ แƒแƒšแƒ’แƒ แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ Haskell.org, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒก แƒฐแƒแƒกแƒ™แƒ”แƒšแƒ˜แƒก แƒ”แƒœแƒแƒก - แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒชแƒœแƒแƒ‘แƒ˜แƒš แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒแƒก. แƒแƒšแƒ’แƒ แƒแƒ แƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒแƒ™แƒ แƒ˜แƒคแƒ”แƒ— แƒกแƒ”แƒ˜แƒคแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ แƒฐแƒแƒกแƒ™แƒ”แƒšแƒจแƒ˜. แƒ˜แƒ’แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฅ แƒกแƒ”แƒ›แƒแƒœแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ โ€” Github แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒ”แƒ›แƒแƒœแƒขแƒ˜แƒ™แƒฃแƒ  แƒฎแƒ”แƒ”แƒ‘แƒก, แƒ–แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒ“แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒแƒ—แƒ˜ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ. แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ˜แƒงแƒ แƒ“แƒแƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒœแƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ› แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. 

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒ›แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘ แƒฐแƒแƒกแƒ™แƒ”แƒšแƒจแƒ˜ แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒฉแƒ”แƒ›แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒแƒ–แƒ”. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜แƒ, แƒ›แƒ˜แƒกแƒ˜ แƒšแƒแƒ›แƒแƒ–แƒแƒ“ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒฃแƒ  แƒกแƒขแƒ˜แƒšแƒจแƒ˜ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒแƒ› แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒญแƒ˜แƒ แƒ“แƒ แƒ“แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒจแƒ แƒแƒ›แƒ แƒ“แƒแƒ›แƒญแƒ˜แƒ แƒ“แƒ. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒ›แƒ” แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒ“แƒ˜แƒก แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒ—. 

GSoC 2019: แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒแƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒ“แƒ˜แƒก แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ

แƒฉแƒ”แƒ› แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒ›แƒ” แƒ›แƒฅแƒ•แƒ˜แƒ แƒ•แƒแƒกแƒ˜แƒšแƒ˜ แƒแƒšแƒคแƒ”แƒ แƒแƒ•แƒ˜, แƒ•แƒแƒ  แƒžแƒ”แƒขแƒ”แƒ แƒ‘แƒฃแƒ แƒ’แƒ˜แƒก HSE-แƒ˜แƒก แƒ›แƒ”แƒแƒ—แƒฎแƒ” แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ˜. แƒแƒ“แƒ แƒ” แƒ‘แƒšแƒแƒ’แƒ–แƒ” แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ” แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ ะธ ZuriHac-แƒจแƒ˜ แƒ›แƒแƒ’แƒ–แƒแƒฃแƒ แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒกแƒขแƒแƒŸแƒ˜แƒ แƒ”แƒ‘แƒแƒ–แƒ” แƒ•แƒแƒ  แƒ‘แƒ”แƒ แƒ’แƒ”แƒœแƒ˜แƒก แƒฃแƒœแƒ˜แƒ•แƒ”แƒ แƒกแƒ˜แƒขแƒ”แƒขแƒ˜ แƒœแƒแƒ แƒ•แƒ”แƒ’แƒ˜แƒแƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒกแƒแƒ“แƒ›แƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ”แƒ‘แƒ–แƒ” แƒกแƒ˜แƒ แƒจแƒ”แƒฆแƒ”แƒ‘แƒ•แƒ. แƒฉแƒ”แƒ›แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒจแƒ˜ แƒจแƒ”แƒ“แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ.

แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒฌแƒ˜แƒœแƒแƒกแƒ˜แƒขแƒงแƒ•แƒแƒแƒ‘แƒ

แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒจแƒ˜ แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ” แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ•แƒฃแƒ แƒฉแƒ”แƒ•แƒ— แƒ‘แƒšแƒแƒ’แƒ–แƒ”. แƒ›แƒแƒ— แƒ›แƒแƒ›แƒชแƒ”แƒก แƒ‘แƒšแƒแƒ’แƒ˜แƒก แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ แƒฐแƒแƒกแƒ™แƒ”แƒšแƒ˜แƒก แƒ–แƒแƒคแƒฎแƒฃแƒšแƒ˜. แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒแƒ แƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ แƒ›แƒฃแƒฎแƒšแƒ˜, แƒฉแƒ”แƒ›แƒก แƒ›แƒ˜แƒ”แƒ  แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ˜แƒฅ แƒ˜แƒ•แƒšแƒ˜แƒกแƒจแƒ˜ แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ แƒแƒ“, แƒ›แƒแƒ™แƒšแƒ” แƒฌแƒ˜แƒœแƒแƒกแƒ˜แƒขแƒงแƒ•แƒแƒแƒ‘แƒ˜แƒ—. 

Pull Request แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒแƒฅ.

แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒฉแƒ”แƒ›แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ (แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ แƒแƒ“) แƒแƒฅ.

แƒ”แƒก แƒžแƒแƒกแƒขแƒ˜ แƒ›แƒ˜แƒ–แƒœแƒแƒ“ แƒ˜แƒกแƒแƒฎแƒแƒ•แƒก แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒก แƒ’แƒแƒแƒชแƒœแƒแƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒฃแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒชแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ—แƒฃแƒ›แƒชแƒ แƒ•แƒ”แƒชแƒ“แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ•แƒ˜แƒฎแƒกแƒ”แƒœแƒ แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒ˜, แƒ แƒแƒชแƒ แƒ“แƒ แƒ แƒ›แƒแƒ•แƒ.

แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒแƒ‘แƒแƒ–แƒ” 

แƒ’แƒ แƒแƒคแƒ˜แƒก แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ™แƒฃแƒ แƒกแƒจแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜. แƒ›แƒ˜แƒกแƒ˜ แƒ˜แƒ“แƒ”แƒ แƒชแƒแƒšแƒกแƒแƒฎแƒแƒ: แƒฏแƒ”แƒ  แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒก แƒ›แƒแƒ แƒชแƒฎแƒ”แƒœแƒ แƒแƒœ แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ แƒฌแƒ˜แƒšแƒจแƒ˜ แƒ“แƒ แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ”แƒœแƒ— แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒกแƒแƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’แƒ แƒ™แƒ˜แƒ“แƒ”แƒก, แƒ•แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒ˜.

แƒชแƒแƒขแƒ แƒ›แƒ”แƒขแƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ˜: แƒฏแƒ”แƒ  แƒ›แƒแƒ แƒชแƒฎแƒ”แƒœแƒ แƒฌแƒ˜แƒšแƒจแƒ˜ แƒฉแƒแƒ•แƒกแƒ•แƒ˜แƒ— แƒ แƒแƒฆแƒแƒช แƒฌแƒ•แƒ”แƒ แƒ. แƒชแƒฎแƒแƒ“แƒ˜แƒ, แƒแƒ› แƒฌแƒ•แƒ”แƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒ”แƒ–แƒแƒ‘แƒ”แƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ แƒฌแƒ˜แƒšแƒจแƒ˜. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒแƒ› แƒฌแƒ•แƒ”แƒ แƒแƒก แƒ›แƒ”แƒ–แƒแƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒ”แƒ–แƒแƒ‘แƒ”แƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒแƒ แƒชแƒฎแƒ”แƒœแƒ แƒฌแƒ˜แƒšแƒจแƒ˜ แƒ“แƒ แƒ.แƒจ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ— แƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒแƒก แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒ–แƒ” แƒ›แƒแƒœแƒแƒ›, แƒกแƒแƒœแƒแƒ› แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ แƒ˜แƒก แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒ˜ แƒ˜แƒ› แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒ—แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ›แƒ”แƒ–แƒแƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ›แƒ˜แƒ•แƒแƒœแƒ˜แƒญแƒ”แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ— แƒแƒ› แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ—แƒฃ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ–แƒฆแƒ•แƒแƒ แƒ˜ แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ“แƒแƒœแƒแƒงแƒแƒคแƒจแƒ˜ แƒฎแƒ•แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ, แƒซแƒœแƒ”แƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒ แƒแƒคแƒแƒจแƒ˜ แƒฃแƒชแƒœแƒแƒฃแƒ แƒ˜ แƒชแƒ˜แƒ™แƒšแƒ˜แƒก แƒžแƒแƒ•แƒœแƒ, แƒ แƒแƒช แƒกแƒแƒงแƒแƒ•แƒ”แƒšแƒ—แƒแƒแƒ“ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ (แƒ“แƒ แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒแƒจแƒ™แƒแƒ แƒแƒ“) แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ• แƒ’แƒ แƒแƒคแƒแƒจแƒ˜. แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒกแƒฌแƒแƒ แƒ˜ แƒ“แƒแƒœแƒแƒงแƒแƒคแƒ˜, แƒ แƒแƒช แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒ˜แƒ.

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ”แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒกแƒ˜แƒ’แƒแƒœแƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ แƒแƒœ แƒกแƒ˜แƒฆแƒ แƒ›แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ. แƒ˜แƒ›แƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒš แƒ”แƒœแƒ”แƒ‘แƒจแƒ˜, แƒกแƒ˜แƒฆแƒ แƒ›แƒ˜แƒกแƒ”แƒฃแƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒแƒ“แƒœแƒแƒ• แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ แƒ“แƒ แƒแƒ  แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒก. แƒ›แƒ” แƒแƒกแƒ”แƒ•แƒ” แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒ” แƒกแƒ˜แƒฆแƒ แƒ›แƒ˜แƒกแƒ”แƒฃแƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒฃแƒคแƒ แƒ แƒขแƒ แƒแƒ“แƒ˜แƒชแƒ˜แƒฃแƒšแƒ˜แƒ.

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ›แƒ˜แƒ•แƒ”แƒ“แƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒฅแƒ”แƒ›แƒแƒ›แƒ“แƒ”. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ™แƒ•แƒ”แƒ—แƒ— แƒ’แƒ แƒแƒคแƒ˜แƒก แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒก แƒกแƒ˜แƒฆแƒ แƒ›แƒ”-แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ•แƒแƒœแƒ˜แƒญแƒ”แƒ‘แƒ— แƒ›แƒแƒ— แƒฌแƒ˜แƒšแƒ”แƒ‘แƒก, แƒ•แƒชแƒ•แƒšแƒ˜แƒ— แƒฌแƒ˜แƒšแƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก แƒ™แƒ˜แƒ“แƒ”แƒ–แƒ” แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก. แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ— แƒฌแƒ˜แƒšแƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒแƒก แƒฌแƒ•แƒ”แƒ แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฃแƒ™แƒ•แƒ” แƒแƒฅแƒ•แƒก แƒฌแƒ˜แƒšแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ—แƒแƒ›แƒแƒ›แƒแƒ“ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ แƒแƒ› แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒ˜. แƒ˜แƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒงแƒ•แƒ”แƒšแƒ แƒฌแƒ•แƒ”แƒ แƒแƒก แƒ”แƒœแƒ˜แƒญแƒ”แƒ‘แƒ แƒฌแƒ˜แƒšแƒ˜ แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ˜แƒ“แƒ”แƒก, แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒ“แƒแƒœแƒแƒงแƒแƒคแƒ˜.

แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”

แƒฐแƒแƒกแƒ™แƒ”แƒšแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒ—, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ แƒแƒ แƒ˜แƒก แƒกแƒฃแƒคแƒ—แƒ. แƒ—แƒฃแƒ›แƒชแƒ, แƒ”แƒก แƒ แƒแƒ› แƒ›แƒแƒ แƒ—แƒšแƒแƒช แƒแƒกแƒ” แƒงแƒแƒคแƒ˜แƒšแƒ˜แƒงแƒ, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒ”แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ แƒ แƒแƒ˜แƒ›แƒ”แƒก แƒ“แƒแƒ‘แƒ”แƒญแƒ“แƒ•แƒ แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ”. แฒกแƒแƒ”แƒ แƒ—แƒแƒ“, แƒกแƒฃแƒคแƒ—แƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜ แƒ˜แƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒ–แƒแƒ แƒ›แƒแƒชแƒ˜แƒ, แƒ แƒแƒ› แƒแƒ แƒชแƒ”แƒ แƒ—แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒฃแƒคแƒ—แƒ แƒ แƒแƒ˜แƒ›แƒ”แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜. แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒจแƒ˜ แƒ›แƒแƒ›แƒฎแƒ“แƒแƒ แƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒ˜แƒซแƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ "แƒฃแƒฌแƒ›แƒ˜แƒœแƒ“แƒฃแƒ แƒ˜" แƒ›แƒแƒœแƒแƒ“แƒ˜ IO.

แƒ›แƒแƒœแƒแƒ“แƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ แƒ”แƒคแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜ แƒฐแƒแƒกแƒ™แƒ”แƒšแƒจแƒ˜. แƒ˜แƒ›แƒ˜แƒก แƒแƒฎแƒกแƒœแƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜, แƒกแƒชแƒ˜แƒšแƒ“แƒ”แƒ‘แƒ แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒก. แƒ™แƒแƒ แƒ’แƒ˜ แƒ“แƒ แƒ›แƒ™แƒแƒคแƒ˜แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ แƒแƒ“ แƒแƒฅ.

แƒแƒฅแƒ•แƒ” แƒ›แƒ˜แƒœแƒ“แƒ แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ, แƒ แƒแƒ› แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒœแƒแƒ“แƒ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ IO, แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒ’แƒ˜แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒš แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒแƒจแƒ˜ แƒ“แƒ แƒ›แƒแƒ—แƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ แƒกแƒฃแƒคแƒ—แƒแƒ.

แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ”แƒคแƒ”แƒฅแƒขแƒ˜แƒ แƒ“แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒ›แƒแƒœแƒแƒ“แƒ แƒแƒฅแƒ•แƒก. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ แƒ“แƒ แƒšแƒแƒ›แƒแƒ–แƒ˜ แƒ—แƒ”แƒแƒ แƒ˜แƒ: แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒœแƒแƒ“แƒ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒแƒ› แƒ›แƒแƒœแƒแƒ“แƒแƒ–แƒ”:

  • แƒแƒœ ea แƒแƒ แƒ˜แƒก แƒ’แƒแƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก a แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒแƒœ แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒก e แƒขแƒ˜แƒžแƒ˜แƒก แƒ’แƒแƒ›แƒแƒœแƒแƒ™แƒšแƒ˜แƒกแƒก. แƒแƒ› แƒ›แƒแƒœแƒแƒ“แƒ˜แƒก แƒฅแƒชแƒ”แƒ•แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒฐแƒ’แƒแƒ•แƒก แƒ˜แƒ›แƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒš แƒ”แƒœแƒ”แƒ‘แƒจแƒ˜ แƒ’แƒแƒ›แƒแƒœแƒแƒ™แƒšแƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก: แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ แƒแƒœ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ˜แƒกแƒแƒ, แƒ แƒแƒ› แƒ›แƒแƒœแƒแƒ“แƒ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜ แƒฐแƒแƒกแƒ™แƒ”แƒšแƒ˜แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒš แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒแƒจแƒ˜, แƒฎแƒแƒšแƒ แƒ˜แƒ›แƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒก.
  • แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ sa แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก a แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒ“แƒ แƒแƒฅแƒ•แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ s แƒขแƒ˜แƒžแƒ˜แƒก แƒชแƒ•แƒแƒšแƒ”แƒ‘แƒแƒ“แƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒแƒ–แƒ”.
  • แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ. แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ›แƒแƒœแƒแƒ“แƒ แƒ’แƒแƒ›แƒแƒฎแƒแƒขแƒแƒ•แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒ“แƒ แƒแƒก แƒจแƒ”แƒฌแƒงแƒ“แƒ”แƒก แƒแƒ แƒแƒคแƒ แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ—แƒฃแƒ›แƒชแƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— MonadPlus แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒแƒ–แƒ” Maybe แƒขแƒ˜แƒžแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒฎแƒแƒขแƒแƒ•แƒก แƒกแƒแƒžแƒ˜แƒ แƒ˜แƒกแƒžแƒ˜แƒ แƒ แƒ”แƒคแƒ”แƒฅแƒขแƒก: แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒ“แƒ แƒแƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒฌแƒงแƒ“แƒ”แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜, Graph a แƒ“แƒ Bigraph ab, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒ’แƒแƒœ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒก แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜แƒ a แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—, แƒฎแƒแƒšแƒ แƒ›แƒ”แƒแƒ แƒ” แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ• แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒก แƒ›แƒแƒ แƒชแƒฎแƒ”แƒœแƒ แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ a แƒ“แƒ แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—. - แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ—แƒ˜ แƒฌแƒ•แƒ”แƒ แƒแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ b แƒขแƒ˜แƒžแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—.

แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜ แƒแƒšแƒ’แƒแƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒ“แƒแƒœ. แƒแƒšแƒ’แƒแƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ แƒแƒ แƒแƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ•แƒ˜ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒ” แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ” แƒแƒกแƒ”แƒ—แƒ˜ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜ แƒกแƒ˜แƒชแƒฎแƒแƒ“แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ” แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒ—:

-- ะกะฟะธัะพะบ ัะพัะตะดะตะน ะดะฐะฝะฝะพะน ะฒะตั€ัˆะธะฝั‹.
neighbours :: Ord a => a -> Graph a -> [a]

-- ะŸะพัั‚ั€ะพะธั‚ัŒ ะดะฒัƒะดะพะปัŒะฝั‹ะน ะณั€ะฐั„ ะฟะพ ะณั€ะฐั„ัƒ ะธ ั„ัƒะฝะบั†ะธะธ, ะดะปั ะบะฐะถะดะพะน ะฒะตั€ัˆะธะฝั‹
-- ะฒั‹ะดะฐัŽั‰ะตะน ะตั‘ ะดะพะปัŽ ะธ ะฟะพะผะตั‚ะบัƒ ะฒ ะฝะพะฒะพะน ะดะพะปะต, ะธะณะฝะพั€ะธั€ัƒั ะบะพะฝั„ะปะธะบั‚ะฝั‹ะต ั€ั‘ะฑั€ะฐ.
toBipartiteWith :: (Ord a, Ord b, Ord c) => (a -> Either b c)
                                         -> Graph a
                                         -> Bigraph b c

-- ะกะฟะธัะพะบ ะฒะตั€ัˆะธะฝ ะฒ ะณั€ะฐั„ะต
vertexList :: Ord a => Graph a -> [a]
ะกะธะณะฝะฐั‚ัƒั€ะฐ ั„ัƒะฝะบั†ะธะธ, ะบะพั‚ะพั€ัƒัŽ ะผั‹ ะฑัƒะดะตะผ ะฟะธัะฐั‚ัŒ, ะฒั‹ะณะปัะดะธั‚ ั‚ะฐะบ:

type OddCycle a = [a]
detectParts :: Ord a => Graph a -> Either (OddCycle a) (Bigraph a a)

แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ›แƒ˜แƒกแƒแƒฎแƒ•แƒ”แƒ“แƒ แƒ˜แƒ, แƒ แƒแƒ› แƒ—แƒฃ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒ˜แƒฆแƒ แƒ›แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒ”แƒ— แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒฃแƒ แƒ˜ แƒ–แƒฆแƒ•แƒแƒ แƒ˜, แƒ™แƒ”แƒœแƒขแƒ˜ แƒชแƒ˜แƒ™แƒšแƒ˜ แƒ“แƒ”แƒ•แƒก แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒ˜แƒก แƒกแƒขแƒ”แƒ™แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ”. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ›แƒ˜แƒก แƒแƒฆแƒกแƒแƒ“แƒ’แƒ”แƒœแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒแƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒฃแƒšแƒ˜ แƒ“แƒแƒกแƒขแƒแƒ“แƒแƒœ แƒ‘แƒแƒšแƒ แƒฌแƒ•แƒ”แƒ แƒแƒ›แƒ“แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ’แƒแƒฉแƒ”แƒœแƒแƒ›แƒ“แƒ”.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ— แƒกแƒ˜แƒฆแƒ แƒ›แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒซแƒ˜แƒ”แƒ‘แƒแƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฌแƒ•แƒ”แƒ แƒแƒกแƒ—แƒ•แƒ˜แƒก แƒฌแƒ˜แƒšแƒ˜ แƒœแƒแƒ›แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒแƒชแƒ˜แƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒกแƒ˜แƒ•แƒ˜แƒก แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒฃแƒšแƒ˜ แƒกแƒขแƒ”แƒ™แƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ”แƒ  แƒแƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒ“แƒ˜แƒก Functor แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ–แƒ˜แƒ—: แƒฉแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒ แƒฌแƒ•แƒ”แƒ แƒแƒก แƒฉแƒแƒกแƒ›แƒ แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ˜แƒ“แƒแƒœ แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ“แƒแƒœ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒš แƒจแƒ”แƒ“แƒ”แƒ’แƒจแƒ˜.

แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ˜แƒ“แƒ”แƒ แƒ˜แƒงแƒ แƒ’แƒแƒ›แƒแƒ›แƒ”แƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ แƒแƒœ แƒ›แƒแƒœแƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ› แƒ”แƒคแƒ”แƒฅแƒขแƒ”แƒ‘แƒก, แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”, แƒซแƒแƒšแƒ˜แƒแƒœ แƒแƒฎแƒšแƒแƒก แƒ˜แƒงแƒ แƒแƒ› แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ—แƒแƒœ. แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜, แƒ›แƒ” แƒ›แƒฅแƒแƒœแƒ“แƒ แƒฎแƒฃแƒ—แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ แƒ“แƒ แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ›แƒ”แƒแƒ แƒ”แƒ–แƒ”.

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒแƒ— แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒแƒชแƒ˜แƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒกแƒ˜แƒ•แƒ˜ - แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ แƒแƒฆแƒแƒช แƒกแƒแƒฎแƒ”แƒšแƒ›แƒฌแƒ˜แƒคแƒแƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ›แƒ”แƒแƒ แƒ”แƒช, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒซแƒšแƒแƒ— แƒจแƒ”แƒฉแƒ”แƒ แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒกแƒแƒก. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒœ Monad-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒœ MonadPlus แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒ˜แƒกแƒแƒ, แƒ แƒแƒ› แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒแƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ, แƒ—แƒฃ แƒ’แƒแƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ แƒแƒ  แƒจแƒ”แƒฉแƒ”แƒ แƒ“แƒ แƒ“แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒชแƒแƒšแƒ™แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ˜แƒก แƒฃแƒ™แƒ•แƒ” แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ State-แƒจแƒ˜), แƒ•แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ. แƒ“แƒ แƒ˜แƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒแƒ— แƒแƒ แƒ˜ แƒ›แƒแƒœแƒแƒ“แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒ˜, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒแƒœ แƒ›แƒแƒœแƒแƒ“แƒ˜แƒก แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒก แƒแƒ› แƒ”แƒคแƒ”แƒฅแƒขแƒ”แƒ‘แƒก.

แƒ แƒแƒขแƒแƒ› แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒ” แƒแƒกแƒ”แƒ—แƒ˜ แƒ แƒ—แƒฃแƒšแƒ˜ แƒขแƒ˜แƒžแƒ˜? แƒแƒ แƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜. แƒฏแƒ”แƒ  แƒ”แƒ แƒ—แƒ˜, แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒฐแƒ’แƒแƒ•แƒก แƒ˜แƒ›แƒžแƒ”แƒ แƒแƒขแƒ˜แƒ•แƒก. แƒ›แƒ”แƒแƒ แƒ”แƒช, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒ— แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒแƒ•แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ™แƒ”แƒœแƒขแƒ˜ แƒ›แƒแƒ แƒงแƒฃแƒŸแƒ˜แƒก แƒแƒฆแƒกแƒแƒ“แƒ’แƒ”แƒœแƒแƒ“, แƒ แƒแƒช แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ Maybe แƒ›แƒแƒœแƒแƒ“แƒแƒจแƒ˜.

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒแƒ› แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒแƒก.

{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE ScopedTypeVariables #-}

data Part = LeftPart | RightPart

otherPart :: Part -> Part
otherPart LeftPart  = RightPart
otherPart RightPart = LeftPart

type PartMap a = Map.Map a Part
type OddCycle a = [a]

toEither :: Ord a => PartMap a -> a -> Either a a
toEither m v = case fromJust (v `Map.lookup` m) of
                    LeftPart  -> Left  v
                    RightPart -> Right v

type PartMonad a = MaybeT (State (PartMap a)) [a]

detectParts :: forall a. Ord a => Graph a -> Either (OddCycle a) (Bigraph a a)
detectParts g = case runState (runMaybeT dfs) Map.empty of
                     (Just c, _)  -> Left  $ oddCycle c
                     (Nothing, m) -> Right $ toBipartiteWith (toEither m) g
    where
        inVertex :: Part -> a -> PartMonad a
        inVertex p v = ((:) v) <$> do modify $ Map.insert v p
                                      let q = otherPart p
                                      msum [ onEdge q u | u <- neigbours v g ]

        {-# INLINE onEdge #-}
        onEdge :: Part -> a -> PartMonad a
        onEdge p v = do m <- get
                        case v `Map.lookup` m of
                             Nothing -> inVertex p v
                             Just q  -> do guard (q /= p)
                                           return [v]

        processVertex :: a -> PartMonad a
        processVertex v = do m <- get
                             guard (v `Map.notMember` m)
                             inVertex LeftPart v

        dfs :: PartMonad a
        dfs = msum [ processVertex v | v <- vertexList g ]

        oddCycle :: [a] -> [a]
        oddCycle c = tail (dropWhile ((/=) last c) c)

แƒกแƒแƒ“แƒแƒช แƒ‘แƒšแƒแƒ™แƒ˜ แƒแƒ แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜. แƒจแƒ”แƒ•แƒ”แƒชแƒ“แƒ”แƒ‘แƒ˜ แƒแƒ’แƒ˜แƒฎแƒกแƒœแƒแƒ— แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—.

  • inVertex แƒแƒ แƒ˜แƒก แƒกแƒ˜แƒฆแƒ แƒ›แƒ”-แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜, แƒกแƒแƒ“แƒแƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ•แƒ”แƒฌแƒ•แƒ”แƒ•แƒ˜แƒ— แƒฌแƒ•แƒ”แƒ แƒแƒก. แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒแƒœแƒ˜แƒญแƒ”แƒ‘แƒ— แƒ’แƒแƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒก แƒฌแƒ•แƒ”แƒ แƒแƒ–แƒ” แƒ“แƒ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— onEdge-แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒ”แƒ–แƒแƒ‘แƒ”แƒšแƒ–แƒ”. แƒแƒฅ แƒแƒกแƒ”แƒ•แƒ” แƒแƒฆแƒ•แƒแƒ“แƒ’แƒ”แƒœแƒ— แƒ–แƒแƒ แƒ˜แƒก แƒกแƒขแƒ”แƒ™แƒก: แƒ—แƒฃ msum แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— v vertex-แƒก แƒ˜แƒฅ.
  • onEdge แƒแƒ แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜, แƒกแƒแƒ“แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒ”แƒฌแƒ•แƒ”แƒ•แƒ˜แƒ— แƒ–แƒฆแƒ•แƒแƒ แƒก. แƒ›แƒแƒก แƒแƒ แƒฏแƒ”แƒ  แƒ”แƒซแƒแƒฎแƒ˜แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ™แƒ˜แƒ“แƒ”แƒ–แƒ”. แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ—, แƒแƒ แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒ›แƒแƒœแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒ•แƒ”แƒ แƒ แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒฎแƒแƒ แƒ”แƒก, แƒ“แƒ แƒ•แƒ”แƒกแƒขแƒฃแƒ›แƒ แƒ”แƒ— แƒ›แƒแƒก, แƒ—แƒฃ แƒแƒ แƒ. แƒ—แƒฃ แƒ›แƒแƒœแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— แƒแƒ แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒ–แƒฆแƒ•แƒแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒฃแƒ แƒ˜. แƒ—แƒฃ แƒ”แƒก แƒแƒกแƒ”แƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ— แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก - แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒ˜แƒก แƒกแƒขแƒ”แƒ™แƒ˜แƒก แƒ–แƒ”แƒ“แƒ แƒœแƒแƒฌแƒ˜แƒšแƒก, แƒกแƒแƒ“แƒแƒช แƒงแƒ•แƒ”แƒšแƒ แƒกแƒฎแƒ•แƒ แƒฌแƒ•แƒ”แƒ แƒ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒแƒœแƒแƒ•แƒ”.
  • processVertex แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฌแƒ•แƒ”แƒ แƒแƒกแƒ—แƒ•แƒ˜แƒก, แƒ˜แƒงแƒ แƒ—แƒฃ แƒแƒ แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒœแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒ›แƒแƒกแƒ–แƒ” inVertex, แƒ—แƒฃ แƒแƒ แƒ.
  • dfs แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก processVertex-แƒก แƒงแƒ•แƒ”แƒšแƒ แƒฌแƒ•แƒ”แƒ แƒแƒ–แƒ”.

แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜.

แƒกแƒ˜แƒขแƒงแƒ•แƒ INLINE แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ

แƒกแƒ˜แƒขแƒงแƒ•แƒ INLINE แƒแƒ  แƒ˜แƒงแƒ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒแƒจแƒ˜; แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ“แƒ˜ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜ แƒ˜แƒ›แƒžแƒšแƒ”แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒžแƒแƒ•แƒœแƒแƒก, แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒ”, แƒ แƒแƒ› แƒแƒ แƒ INLINE แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ–แƒ” แƒจแƒ”แƒกแƒแƒ›แƒฉแƒœแƒ”แƒ•แƒแƒ“ แƒœแƒ”แƒšแƒ˜ แƒ˜แƒงแƒ. แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ› แƒกแƒ”แƒ›แƒแƒœแƒขแƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒœแƒแƒ˜แƒ แƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒœแƒ”แƒœ, แƒแƒ›แƒแƒœ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ’แƒแƒ›แƒแƒ™แƒ•แƒ˜แƒ แƒ•แƒ. แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒฃแƒชแƒœแƒแƒฃแƒ แƒ˜, แƒกแƒฎแƒ•แƒ แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ” GHC-แƒ˜แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ—, แƒจแƒ”แƒกแƒแƒ›แƒฉแƒœแƒ”แƒ•แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ แƒแƒ  แƒ˜แƒงแƒ.

GHC Core-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒ˜แƒ แƒ˜แƒก แƒ’แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒ” แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒ แƒแƒจแƒ™แƒแƒ แƒ INLINE-แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฎแƒแƒ–แƒ˜แƒ—. แƒ แƒแƒฆแƒแƒช แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ GHC 8.4.4 แƒ“แƒ GHC 8.6.5 แƒจแƒแƒ แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒขแƒแƒ แƒ›แƒ แƒจแƒ”แƒฌแƒงแƒ•แƒ˜แƒขแƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“.

แƒแƒ  แƒ•แƒ”แƒšแƒแƒ“แƒ˜, แƒ แƒแƒ› แƒฐแƒแƒกแƒ™แƒ”แƒšแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒแƒกแƒ”แƒ— แƒญแƒฃแƒญแƒงแƒก แƒจแƒ”แƒ•แƒฎแƒ•แƒ“แƒ”แƒ‘แƒแƒ“แƒ˜. แƒ—แƒฃแƒ›แƒชแƒ, แƒ“แƒฆแƒ”แƒกแƒแƒช, แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒฎแƒแƒœแƒ“แƒแƒฎแƒแƒœ แƒฃแƒจแƒ•แƒ”แƒ‘แƒ”แƒœ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒแƒ แƒ›แƒ˜แƒ•แƒชแƒ”แƒ— แƒ›แƒแƒ— แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒชแƒ˜แƒ—, แƒ แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒฉแƒแƒกแƒ›แƒฃแƒšแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒš แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜ แƒ“แƒ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜, แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒก แƒ›แƒ˜แƒ•แƒชแƒ”แƒ— แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ.

แฒ แƒ แƒ›แƒแƒฎแƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’?

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฐแƒแƒžแƒ™แƒ แƒแƒคแƒข-แƒ™แƒแƒ แƒžแƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒแƒ“แƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒ’แƒแƒœแƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ” แƒ“แƒ แƒแƒ›แƒ˜แƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ.

Google Summer of Code-แƒ˜แƒก แƒฌแƒงแƒแƒšแƒแƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ•แƒ˜แƒซแƒ˜แƒœแƒ” แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒแƒจแƒ˜, แƒ แƒแƒช แƒ“แƒแƒ›แƒ”แƒฎแƒ›แƒแƒ แƒ แƒแƒ แƒแƒ›แƒแƒ แƒขแƒ แƒกแƒขแƒแƒŸแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ แƒฏแƒ”แƒ˜แƒœแƒ˜แƒก แƒฅแƒฃแƒฉแƒแƒ–แƒ” แƒ›แƒแƒ›แƒ“แƒ”แƒ•แƒœแƒ แƒ–แƒแƒคแƒฎแƒฃแƒšแƒจแƒ˜ (แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ  แƒ•แƒแƒ  แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒ”แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒ˜ Habr-แƒ˜แƒก แƒ›แƒชแƒแƒ“แƒœแƒ” แƒแƒฃแƒ“แƒ˜แƒขแƒแƒ แƒ˜แƒแƒจแƒ˜แƒช แƒ™แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜แƒ. แƒ˜แƒ› แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ”แƒ“แƒแƒœ, แƒกแƒแƒ“แƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ–แƒแƒคแƒฎแƒฃแƒšแƒจแƒ˜ แƒฉแƒแƒ”แƒ แƒ—แƒแƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒฃแƒ  แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒแƒจแƒ˜), แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒ›แƒแƒชแƒœแƒ แƒแƒ› แƒžแƒแƒ แƒแƒ“แƒ˜แƒ’แƒ›แƒ˜แƒก แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ”แƒ แƒ˜ แƒกแƒแƒ›แƒงแƒแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒขแƒ แƒแƒ“แƒ˜แƒชแƒ˜แƒฃแƒš แƒ”แƒœแƒ”แƒ‘แƒจแƒ˜ แƒฉแƒ”แƒ›แƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ