GSoC 2019: เจฆเฉ‹-เจชเฉฑเจ–เฉ€เจคเจพ เจ…เจคเฉ‡ เจฎเฉ‹เจจเจพเจก เจŸเฉเจฐเจพเจ‚เจธเจซเจพเจฐเจฎเจฐเจพเจ‚ เจฒเจˆ เจ—เฉเจฐเจพเจซเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ

เจชเจฟเจ›เจฒเฉ€เจ†เจ‚ เจ—เจฐเจฎเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจนเจฟเฉฑเจธเจพ เจฒเจฟเจ† เจธเฉ€ เจ—เฉ‚เจ—เจฒ เจธเจฎเจฐ เจ•เฉ‹เจก - เจ—เฉ‚เจ—เจฒ เจฆเฉ‡ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เจ†เจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเฅค เจนเจฐ เจธเจพเจฒ, เจ†เจฏเฉ‹เจœเจ• เจ•เจˆ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจฎเจธเจผเจนเฉ‚เจฐ เจธเฉฐเจธเจฅเจพเจตเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ Boost.org ะธ เจฒเฉ€เจจเจ•เจธ เจซเจพเจ‰เจ‚เจกเฉ‡เจธเจผเจจ. เจ—เฉ‚เจ—เจฒ เจฆเฉเจจเฉ€เจ† เจญเจฐ เจฆเฉ‡ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ‡เจนเจจเจพเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจธเฉฑเจฆเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค 

Google เจธเจฎเจฐ เจ†เจซเจผ เจ•เฉ‹เจก 2019 เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจญเจพเจ—เฉ€เจฆเจพเจฐ เจตเจœเฉ‹เจ‚, เจฎเฉˆเจ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เฉ€เจคเจพ เจเจฒเจ—เจพ เจธเฉฐเจ—เจ เจจ เจฆเฉ‡ เจจเจพเจฒ Haskell.org, เจœเฉ‹ เจนเจพเจธเจ•เฉ‡เจฒ เจญเจพเจธเจผเจพ เจฆเจพ เจตเจฟเจ•เจพเจธ เจ•เจฐ เจฐเจนเฉ€ เจนเฉˆ - เจธเจญ เจคเฉ‹เจ‚ เจฎเจธเจผเจนเฉ‚เจฐ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพเจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ•เฅค เจเจฒเจ—เจพ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจนเฉˆ เจœเฉ‹ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจŸเจพเจˆเจช เจ•เจฐเฉ‹ เจนเจพเจธเจ•เฉ‡เจฒ เจตเจฟเฉฑเจš เจ—เฉเจฐเจพเจซ เจฒเจˆ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€เฅค เจ‡เจน เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจตเจฟเฉฑเจš เจธเจฟเจฎเจฐเจคเฉ€ - เจ‡เฉฑเจ• เจ—เจฟเจฅเจฌ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจœเฉ‹ เจ•เฉ‹เจก เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡ เจธเจฟเจฎเฉˆเจ‚เจŸเจฟเจ• เจŸเฉเจฐเฉ€, เจ•เจพเจฒ เจ…เจคเฉ‡ เจจเจฟเจฐเจญเจฐเจคเจพ เจ—เฉเจฐเจพเจซ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจฎเฉ‡เจฐเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ‰เจธ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจฒเจˆ เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจ—เฉเจฐเจพเจซเจพเจ‚ เจ…เจคเฉ‡ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจ•เจฟเจธเจฎ-เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจœเฉ‹เฉœเจจเจพ เจธเฉ€เฅค 

เจ‡เจธ เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจนเจพเจธเจ•เฉ‡เจฒ เจตเจฟเฉฑเจš เจฆเฉ‹-เจชเฉฑเจ–เฉ€เจคเจพ เจฒเจˆ เจ‡เฉฑเจ• เจ—เฉเจฐเจพเจซ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพเฅค เจญเจพเจตเฉ‡เจ‚ เจ•เจฟ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจธเจญ เจคเฉ‹เจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ, เจ‡เจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจธเจผเฉˆเจฒเฉ€ เจตเจฟเฉฑเจš เจธเฉเฉฐเจฆเจฐเจคเจพ เจจเจพเจฒ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจˆ เจฆเฉเจนเจฐเจพเจ“ เจ…เจคเฉ‡ เจ•เจพเจซเจผเฉ€ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจฎเฉˆเจ‚ เจฎเฉ‹เจจเจพเจก เจŸเฉเจฐเจพเจ‚เจธเจซเจพเจฐเจฎเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ 'เจคเฉ‡ เจธเฉˆเจŸเจฒ เจนเฉ‹ เจ—เจฟเจ†. 

GSoC 2019: เจฆเฉ‹-เจชเฉฑเจ–เฉ€เจคเจพ เจ…เจคเฉ‡ เจฎเฉ‹เจจเจพเจก เจŸเฉเจฐเจพเจ‚เจธเจซเจพเจฐเจฎเจฐเจพเจ‚ เจฒเจˆ เจ—เฉเจฐเจพเจซเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ

เจฎเฉ‡เจฐเฉ‡ เจฌเจพเจฐเฉ‡

เจฎเฉ‡เจฐเจพ เจจเจพเจฎ เจตเฉˆเจธเฉ€เจฒเฉ€ เจ…เจฒเจซเฉ‡เจฐเฉ‹เจต เจนเฉˆ, เจฎเฉˆเจ‚ เจธเฉ‡เจ‚เจŸ เจชเฉ€เจŸเจฐเจธเจฌเจฐเจ— HSE เจตเจฟเฉฑเจš เจšเฉŒเจฅเฉ‡ เจธเจพเจฒ เจฆเจพ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€ เจนเจพเจ‚เฅค เจชเจนเจฟเจฒเจพเจ‚ เจฌเจฒเฉŒเจ— เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจฒเจฟเจ–เจฟเจ† เจธเฉ€ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจˆเจœเจผเจก เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฌเจพเจฐเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจพเจฐเฉ‡ ะธ เจœเจผเฉ‚เจฐเฉ€เจนเฉˆเจ• เจฆเฉ€ เจฏเจพเจคเจฐเจพ เจฌเจพเจฐเฉ‡. เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฎเฉˆเจ‚ เจ‡เฉฐเจŸเจฐเจจเจธเจผเจฟเจช 'เจคเฉ‡ เจนเจพเจ‚ เจฌเจฐเจ—เจจ เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฟเจŸเฉ€ เจจเจพเจฐเจตเฉ‡ เจตเจฟเฉฑเจš, เจœเจฟเฉฑเจฅเฉ‡ เจฎเฉˆเจ‚ เจธเจฎเฉฑเจธเจฟเจ† เจฒเจˆ เจชเจนเฉเฉฐเจš 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚ เจธเฉ‚เจšเฉ€ เจฐเฉฐเจ—. เจฎเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเจฟเจฒเจšเจธเจชเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจˆเจœเจผเจก เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจ…เจคเฉ‡ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจธเจผเจพเจฎเจฒ เจนเจจเฅค

เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡

เจฎเฉเจ–เจฌเฉฐเจง

เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš เจญเจพเจ— เจฒเฉˆเจฃ เจตเจพเจฒเฉ‡ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจฒเฉŒเจ— เจ•เจฐเจจ เจฒเจˆ เจœเจผเฉ‹เจฐเจฆเจพเจฐ เจ‰เจคเจธเจผเจพเจนเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจฒเฉŒเจ— เจฒเจˆ เจ‡เฉฑเจ• เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเจพ เจนเจพเจธเจ•เฉ‡เจฒ เจฆเฉ€ เจ—เจฐเจฎเฉ€. เจ‡เจน เจฒเฉ‡เจ– เจ‡เฉฑเจ• เจ…เจจเฉเจตเจพเจฆ เจนเฉˆ เจฒเฉ‡เจ–, เจฎเฉ‡เจฐเฉ‡ เจฆเฉเจ†เจฐเจพ เจœเฉเจฒเจพเจˆ เจตเจฟเฉฑเจš เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€ เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจชเฉเจฐเจธเจคเจพเจตเจจเจพ เจฆเฉ‡ เจจเจพเจฒเฅค 

เจธเจตเจพเจฒ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจฒเฉฑเจญเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ เจ‡เฉฑเจฅเฉ‡.

เจคเฉเจธเฉ€เจ‚ เจฎเฉ‡เจฐเฉ‡ เจ•เฉฐเจฎ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฌเจพเจฐเฉ‡ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€ เจตเจฟเฉฑเจš) เจ‡เฉฑเจฅเฉ‡.

เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเจพ เจ‰เจฆเฉ‡เจธเจผ เจชเจพเจ เจ• เจจเฉ‚เฉฐ เจซเฉฐเจ•เจธเจผเจจเจฒ เจชเฉเจฐเฉ‹เจ—เฉเจฐเจพเจฎเจฟเฉฐเจ— เจตเจฟเฉฑเจš เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเฉฐเจ•เจฒเจชเจพเจ‚ เจจเจพเจฒ เจœเจพเจฃเฉ‚ เจ•เจฐเจตเจพเจ‰เจฃเจพ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจธเจฎเจพเจ‚ เจ†เจ‰เจฃ 'เจคเฉ‡ เจตเจฐเจคเฉ‡ เจ—เจ เจธเจพเจฐเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจจเฉ‚เฉฐ เจฏเจพเจฆ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจฆเฉ‹-เจชเฉฑเจ–เฉ€เจคเจพ เจฒเจˆ เจ—เฉเจฐเจพเจซเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ 

เจฆเฉ‹-เจชเฉฑเจ–เฉ€เจคเจพ เจฒเจˆ เจ‡เฉฑเจ• เจ—เฉเจฐเจพเจซ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฐเจฒ เจ—เฉเจฐเจพเจซ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฆเฉ‡ เจ‡เฉฑเจ• เจ•เฉ‹เจฐเจธ เจตเจฟเฉฑเจš เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจธเจฆเจพ เจตเจฟเจšเจพเจฐ เจธเจฟเฉฑเจงเจพ เจนเฉˆ: เจชเจนเจฟเจฒเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจจเจพเจฒ เจ–เฉฑเจฌเฉ‡ เจœเจพเจ‚ เจธเฉฑเจœเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš เจธเจฟเจฐเจฒเฉ‡เจ– เจชเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเจฟเจฐเฉ‹เจงเฉ€ เจ•เจฟเจจเจพเจฐเจพ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจฆเจพเจ…เจตเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ—เฉเจฐเจพเจซ เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจฅเฉ‹เฉœเจพ เจนเฉ‹เจฐ เจตเจฟเจธเจคเจพเจฐ: เจชเจนเจฟเจฒเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ–เฉฑเจฌเฉ‡ เจธเจผเฉ‡เจ…เจฐ เจตเจฟเฉฑเจš เจ•เฉเจ เจธเจฟเจฐเจฒเฉ‡เจ– เจชเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจธ เจธเจฟเจฐเจฒเฉ‡เจ– เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจ—เฉเจ†เจ‚เจขเฉ€ เจธเจนเฉ€ เจฒเฉ‹เจฌ เจตเจฟเฉฑเจš เจชเจ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจธ เจธเจฟเจฐเจฒเฉ‡เจ– เจฆเฉ‡ เจ—เฉเจ†เจ‚เจขเฉ€เจ†เจ‚ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจ—เฉเจ†เจ‚เจขเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ–เฉฑเจฌเฉ‡ เจฒเฉ‹เจฌ เจตเจฟเฉฑเจš เจฒเฉ‡เจŸเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉ€. เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจฒเฉ‡เจ–เจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเฉ‡เจ…เจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ…เจธเฉ€เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ– เจฆเฉ‡ เจ•เจจเฉˆเจ•เจŸ เจ•เฉ€เจคเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš เจ…เจœเฉ‡ เจตเฉ€ เจธเจฟเจฐเจฒเฉ‡เจ– เจฎเฉŒเจœเฉ‚เจฆ เจนเจจ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจ—เฉเจ†เจ‚เจขเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจซเจฟเจฐ เจ‡เจธ เจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจœเฉเฉœเฉ‡ เจนเฉ‹เจ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจฒเจˆ เจฆเฉเจนเจฐเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค

เจœเฉ‡เจ•เจฐ เจ‡เฉฑเจ•เฉ‹ เจญเจพเจ— เจตเจฟเฉฑเจš เจกเจฟเฉฑเจ—เจฃ เจตเจพเจฒเฉ‡ เจธเจฟเจฐเจฟเจ†เจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ‡เฉฑเจ• เจ•เจฟเจจเจพเจฐเจพ เจนเฉˆ, เจคเจพเจ‚ เจ—เฉเจฐเจพเจซ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ…เจœเฉ€เจฌ เจšเฉฑเจ•เจฐ เจฒเฉฑเจญเจฃเจพ เจฎเฉเจธเจผเจ•เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจ—เฉเจฐเจพเจซ เจตเจฟเฉฑเจš เจตเจฟเจ†เจชเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจ…เจคเฉ‡ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ' เจคเฉ‡) เจ…เจธเฉฐเจญเจต เจนเฉˆเฅค เจจเจนเฉ€เจ‚ เจคเจพเจ‚, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจธเจนเฉ€ เจญเจพเจ— เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ—เฉเจฐเจพเจซ เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจนเฉˆเฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจธ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจšเฉŒเฉœเจพเจˆ เจชเจนเจฟเจฒเฉ€ เจ–เฉ‹เจœ เจœ เจกเฉ‚เฉฐเจ˜เจพเจˆ เจชเจนเจฟเจฒเฉ€ เจ–เฉ‹เจœ. เจฒเจพเจœเจผเจฎเฉ€ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš, เจกเฉ‚เฉฐเจ˜เจพเจˆ-เจชเจนเจฟเจฒเฉ€ เจ–เฉ‹เจœ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจฅเฉ‹เฉœเฉ€ เจธเจฐเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจตเจพเจงเฉ‚ เจกเจพเจŸเจพ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจกเฉ‚เฉฐเจ˜เจพเจˆ-เจชเจนเจฟเจฒเฉ€ เจ–เฉ‹เจœ เจจเฉ‚เฉฐ เจตเฉ€ เจšเฉเจฃเจฟเจ† เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจตเจงเฉ‡เจฐเฉ‡ เจฐเจตเจพเจ‡เจคเฉ€ เจนเฉˆเฅค

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจธเจ•เฉ€เจฎ 'เจคเฉ‡ เจ†เจ เจนเจพเจ‚. เจ…เจธเฉ€เจ‚ เจกเฉ‚เฉฐเจ˜เจพเจˆ-เจชเจนเจฟเจฒเฉ€ เจ–เฉ‹เจœ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ—เฉเจฐเจพเจซ เจฆเฉ‡ เจธเจฟเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเฉ‡เจ…เจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ•เจฟเจจเจพเจฐเฉ‡ เจฆเฉ‡ เจจเจพเจฒ เจ…เฉฑเจ—เฉ‡ เจตเจงเจฆเฉ‡ เจนเจพเจ‚ เจธเจผเฉ‡เจ…เจฐ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚เฅค เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจผเฉ‡เจ…เจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเจธ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เฉฑเจ• เจธเจผเฉ‡เจ…เจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจ•เจนเจฟ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ—เฉเจฐเจพเจซ เจฆเฉ‹-เจชเฉฑเจ–เฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจธเจพเจฐเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ–เจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจผเฉ‡เจ…เจฐ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจธเจพเจฐเฉ‡ เจ•เจฟเจจเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจญเจพเจ— เจนเฉˆเฅค

เจ—เจฃเจจเจพ เจฆเฉ€ เจธเจผเฉเฉฑเจงเจคเจพ

เจนเจพเจธเจ•เฉ‡เจฒ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เจน เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เจฃเจจเจพเจตเจพเจ‚ เจนเจจ เจธเจพเจซเจผ เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเฉ‡เจ•เจฐ เจ‡เจน เจธเฉฑเจšเจฎเฉเฉฑเจš เจ…เจœเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ, เจคเจพเจ‚ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจธเจ•เฉเจฐเฉ€เจจ เจคเฉ‡ เจ•เฉเจ เจตเฉ€ เจชเฉเจฐเจฟเฉฐเจŸ เจ•เจฐเจจ เจฆเจพ เจ•เฉ‹เจˆ เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจคเฉ‡ เจธเจพเจฐเฉ‡, เจธเจพเจซเจผ เจ—เจฃเจจเจพ เจ‡เฉฐเจจเฉ‡ เจ†เจฒเจธเฉ€ เจนเจจ เจ•เจฟ เจ‡เฉฑเจ• เจตเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ เจธเจพเจซเจผ เจ•เจฟเจธเฉ‡ เจšเฉ€เจœเจผ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจจ เจฆเฉ‡ เจ•เจพเจฐเจจ. เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เจฃเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจฎเจœเจฌเฉ‚เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ "เจ…เจธเจผเฉเฉฑเจง" เจฎเฉ‹เจจเจพเจก เจ†เจˆ.เจ“.

เจฎเฉ‹เจจเจพเจกเจธ เจ—เจฃเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฆเจพ เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจชเฉเจฐเจญเจพเจต เจนเจพเจธเจ•เฉ‡เจฒ เจตเจฟเฉฑเจš. เจ‡เจน เจฆเฉฑเจธเจฃเจพ เจ•เจฟ เจ‰เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเฉ‡ เจฆเจพเจ‡เจฐเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเฉˆเฅค เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจ…เจคเฉ‡ เจธเจชเจธเจผเจŸ เจตเจฐเจฃเจจ เจชเฉœเฉเจนเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ‡เฉฑเจฅเฉ‡.

เจ‡เฉฑเจฅเฉ‡ เจฎเฉˆเจ‚ เจ‡เจน เจฆเฉฑเจธเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ•เฉเจ เจฎเฉ‹เจจเจพเจก, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ IO, เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฎเฉˆเจœเจฟเจ• เจฆเฉเจ†เจฐเจพ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจฒเจ—เจญเจ— เจธเจพเจฐเฉ‡ เจฌเจพเจ•เฉ€ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เจฃเจจเจพเจตเจพเจ‚ เจธเจผเฉเฉฑเจง เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจชเฉเจฐเจญเจพเจต เจนเจจ เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจฆเจพ เจ†เจชเจฃเจพ เจฎเฉ‹เจจเจพเจก เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• เจฌเจนเฉเจค เจฎเจœเจผเจฌเฉ‚เจค โ€‹โ€‹เจ…เจคเฉ‡ เจธเฉเฉฐเจฆเจฐ เจธเจฟเจงเจพเจ‚เจค เจนเฉˆ: เจธเจพเจฐเฉ‡ เจฎเฉ‹เจจเจพเจก เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจคเจฟเฉฐเจจ เจฎเฉ‹เจจเจพเจกเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡:

  • เจœเจพเจ‚ เจคเจพเจ‚ ea เจ‡เฉฑเจ• เจ—เจฃเจจเจพ เจนเฉˆ เจœเฉ‹ เจ•เจฟเจธเจฎ a เจฆเจพ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเจพเจ‚ เจ•เจฟเจธเจฎ e เจฆเฉ‡ เจ…เจชเจตเจพเจฆ เจจเฉ‚เฉฐ เจธเฉเฉฑเจŸเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฎเฉ‹เจจเจพเจก เจฆเจพ เจตเจฟเจตเจนเจพเจฐ เจฒเจพเจœเจผเจฎเฉ€ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจชเจตเจพเจฆ เจนเฉˆเจ‚เจกเจฒเจฟเฉฐเจ— เจตเจฐเจ—เจพ เจนเฉˆ: เจ—เจฒเจคเฉ€เจ†เจ‚ เจซเฉœเฉ€เจ†เจ‚ เจœเจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจœเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจฎเฉเฉฑเจ– เจ…เฉฐเจคเจฐ เจ‡เจน เจนเฉˆ เจ•เจฟ เจฎเฉ‹เจจเจพเจก เจจเฉ‚เฉฐ เจนเจพเจธเจ•เฉ‡เจฒ เจตเจฟเฉฑเจš เจฎเจฟเจ†เจฐเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจคเจฐเจ• เจจเจพเจฒ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจฒเจพเจœเจผเจฎเฉ€ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค
  • เจธเจŸเฉ‡เจŸ sa เจ‡เฉฑเจ• เจ—เจฃเจจเจพ เจนเฉˆ เจœเฉ‹ เจ•เจฟเจธเจฎ a เจฆเจพ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ•เจฟเจธเจฎ s เจฆเฉ€ เจชเจฐเจฟเจตเจฐเจคเจจเจฏเฉ‹เจ— เจธเจฅเจฟเจคเฉ€ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค
  • เจธเจผเจพเจ‡เจฆ เจ. เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจฎเฉ‹เจจเจพเจก เจ‡เฉฑเจ• เจ—เจฃเจจเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฎเฉ‡เจ‚ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจตเจพเจชเจธ เจ•เจฐเจ•เฉ‡ เจฐเฉ‹เจ•เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจธเฉ€เจ‚ เจธเจผเจพเจ‡เจฆ เจ•เจฟเจธเจฎ เจฒเจˆ เจฎเฉ‹เจจเจพเจกเจชเจฒเฉฑเจธ เจ•เจฒเจพเจธ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจœเฉ‹ เจ•เจฟ เจ‰เจฒเจŸ เจชเฉเจฐเจญเจพเจต เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ: เจ‡เจน เจ‡เฉฑเจ• เจ—เจฃเจจเจพ เจนเฉˆ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจ•เจฐเจ•เฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฎเฉ‡เจ‚ เจฐเฉ‹เจ•เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ

เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจฆเฉ‹ เจกเจพเจŸเจพ เจ•เจฟเจธเจฎเจพเจ‚ เจนเจจ, เจ—เฉเจฐเจพเจซ 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)

เจ‡เจน เจตเฉ‡เจ–เจฃเจพ เจ†เจธเจพเจจ เจนเฉˆ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจกเฉ‚เฉฐเจ˜เจพเจˆ-เจชเจนเจฟเจฒเฉ€ เจ–เฉ‹เจœ เจฆเฉŒเจฐเจพเจจ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฟเจฐเฉ‹เจงเฉ€ เจ•เจฟเจจเจพเจฐเจพ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจœเฉ€เจฌ เจšเฉฑเจ•เจฐ เจ†เจตเจฐเจคเฉ€ เจธเจŸเฉˆเจ• เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจ‡เจธเจจเฉ‚เฉฐ เจฐเฉ€เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจฐเฉ€เจ•เจฐเจธเจผเจจ เจธเจŸเฉˆเจ• เจคเฉ‹เจ‚ เจฒเฉˆ เจ•เฉ‡ เจ†เจ–เจฐเฉ€ เจธเจฟเจฐเฉ‡ เจฆเฉ€ เจชเจนเจฟเจฒเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจคเฉฑเจ• เจธเจญ เจ•เฉเจ เจ•เฉฑเจŸเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจนเจฐเฉ‡เจ• เจธเจฟเจฐเจฒเฉ‡เจ– เจฒเจˆ เจธเจผเฉ‡เจ…เจฐ เจจเฉฐเจฌเจฐเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจนเจฟเจฏเฉ‹เจ—เฉ€ เจเจฐเฉ‡ เจจเฉ‚เฉฐ เจ•เจพเจ‡เจฎ เจฐเฉฑเจ– เจ•เฉ‡ เจกเฉ‚เฉฐเจ˜เจพเจˆ-เจชเจนเจฟเจฒเฉ€ เจ–เฉ‹เจœ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ†เจตเจฐเจคเฉ€ เจธเจŸเฉˆเจ• เจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจฆเฉเจ†เจฐเจพ เจšเฉเจฃเฉ‡ เจ—เจ เจฎเฉ‹เจจเจพเจก เจฆเฉ‡ เจซเฉฐเจ•เจŸเจฐ เจ•เจฒเจพเจธ เจฆเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉเจ†เจฐเจพ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ: เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจฐเจฟเจ•เจฐเจธเจฟเจต เจซเฉฐเจ•เจธเจผเจจ เจคเฉ‹เจ‚ เจตเจพเจชเจธ เจ†เจ เจจเจคเฉ€เจœเฉ‡ เจตเจฟเฉฑเจš เจฎเจพเจฐเจ— เจคเฉ‹เจ‚ เจธเจพเจฐเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ–เจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจฎเฉ‡เจฐเจพ เจชเจนเจฟเจฒเจพ เจตเจฟเจšเจพเจฐ Either monad เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเฉ€, เจœเฉ‹ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเจจเจพเจ‚ เจชเฉเจฐเจญเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจœเจพเจชเจฆเจพ เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจชเจนเจฟเจฒเจพ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจœเฉ‹ เจฎเฉˆเจ‚ เจฒเจฟเจ–เจฟเจ† เจธเฉ€ เจ‰เจน เจ‡เจธ เจตเจฟเจ•เจฒเจช เจฆเฉ‡ เจฌเจนเฉเจค เจจเฉ‡เฉœเฉ‡ เจธเฉ€เฅค เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡ เจชเฉฐเจœ เจตเฉฑเจ–-เจตเฉฑเจ– เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจธเจจ เจ…เจคเฉ‡ เจ†เจ–เจฐเจ•เจพเจฐ เจ‡เฉฑเจ• เจนเฉ‹เจฐ 'เจคเฉ‡ เจธเฉˆเจŸเจฒ เจนเฉ‹ เจ—เจ.

เจชเจนเจฟเจฒเจพเจ‚, เจธเจพเจจเฉ‚เฉฐ เจธเจผเฉ‡เจ…เจฐ เจชเจ›เจพเจฃเจ•เจฐเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจนเจฟเจฏเฉ‹เจ—เฉ€ เจฒเฉœเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจ‡เจฎ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ - เจ‡เจน เจฐเจพเจœ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจนเฉˆเฅค เจฆเฉ‚เจœเจพ, เจœเจฆเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจŸเจ•เจฐเจพเจ… เจฆเจพ เจชเจคเจพ เจฒเฉฑเจ— เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจœเจพเจ‚ เจคเจพเจ‚ เจฎเฉ‹เจจเจพเจก เจฒเจˆ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจฒเจˆ เจฎเฉ‹เจจเจพเจกเจชเจฒเฉฑเจธเฅค เจฎเฉเฉฑเจ– เจ…เฉฐเจคเจฐ เจ‡เจน เจนเฉˆ เจ•เจฟ เจœเจพเจ‚ เจคเจพเจ‚ เจ•เฉ‹เจˆ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจœเฉ‡เจ•เจฐ เจ—เจฃเจจเจพ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฟเจ† เจจเจนเฉ€เจ‚ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจธ เจฌเจพเจฐเฉ‡ เจธเจฟเจฐเจซ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจตเจพเจชเจธ เจ•เจฐเฉ‡เฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจธเจซเจฒเจคเจพ เจฒเจˆ เจตเฉฑเจ–เจฐเฉ‡ เจฎเฉเฉฑเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ (เจ‡เจน เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฐเจพเจœ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจนเฉˆ), เจ…เจธเฉ€เจ‚ เจธเจผเจพเจ‡เจฆ เจšเฉเจฃเจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจคเฉ‡ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจœเจฆเฉ‹เจ‚ เจธเจพเจจเฉ‚เฉฐ เจฆเฉ‹ เจฎเฉ‹เจจเจพเจกเจพเจ‚ เจฆเฉ‡ เจชเฉเจฐเจญเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ‰เจน เจฌเจพเจนเจฐ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ เจฎเฉ‹เจจเจพเจก เจŸเฉเจฐเจพเจ‚เจธเจซเจพเจฐเจฎเจฐ, เจœเฉ‹ เจ‡เจนเจจเจพเจ‚ เจชเฉเจฐเจญเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ เฉ€เจ• เจคเจฐเฉเจนเจพเจ‚ เจจเจพเจฒ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจ…เจœเจฟเจนเฉ€ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ•เจฟเจธเจฎ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฟเจ‰เจ‚ เจ•เฉ€เจคเฉ€? เจฆเฉ‹ เจ•เจพเจฐเจจ. เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจฒเจพเจœเจผเจฎเฉ€ เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆ. เจฆเฉ‚เจœเจพ, เจ…เจœเฉ€เจฌ เจฒเฉ‚เจช เจจเฉ‚เฉฐ เจฌเจนเจพเจฒ เจ•เจฐเจจ เจฒเจˆ เจฆเฉเจนเจฐเจพเจ“ เจคเฉ‹เจ‚ เจตเจพเจชเจธ เจชเจฐเจคเจฃ เจตเฉ‡เจฒเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจตเจฟเจฐเฉ‹เจง เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจตเจพเจชเจธเฉ€ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจธเจผเจพเจ‡เจฆ เจฎเฉ‹เจจเจพเจก เจตเจฟเฉฑเจš เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจนเฉˆเฅค

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เจน เจ…เจฎเจฒ เจฎเจฟเจฒเจฆเจพ เจนเฉˆเฅค

{-# 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 เจ‡เฉฑเจ• เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ vertex v เจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‡ เจงเฉฑเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค
  • onEdge เจ‰เจน เจนเจฟเฉฑเจธเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เจฟเจจเจพเจฐเฉ‡ 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจจเฉ‚เฉฐ เจนเจฐเฉ‡เจ• เจ•เจฟเจจเจพเจฐเฉ‡ เจฒเจˆ เจฆเฉ‹ เจตเจพเจฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ. เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ•เฉ€ เจฆเฉ‚เจœเฉ‡ เจชเจพเจธเฉ‡ เจฆเฉ‡ เจธเจฟเจฐเฉ‡ เจฆเจพ เจฆเฉŒเจฐเจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจ‡เจธ 'เจคเฉ‡ เจœเจพเจ“เฅค เจœเฉ‡เจ•เจฐ เจตเจฟเจœเจผเจฟเจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ•เจฟเจจเจพเจฐเจพ เจตเจฟเจฐเฉ‹เจงเฉ€ เจนเฉˆ เจœเจพเจ‚ เจจเจนเฉ€เจ‚เฅค เจœเฉ‡เจ•เจฐ เจ‡เจน เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ - เจฐเฉ€เจ•เจฐเจธเจผเจจ เจธเจŸเฉˆเจ• เจฆเจพ เจฌเจฟเจฒเจ•เฉเจฒ เจธเจฟเจ–เจฐ, เจœเจฟเฉฑเจฅเฉ‡ เจตเจพเจชเจธ เจ†เจ‰เจฃ 'เจคเฉ‡ เจฌเจพเจ•เฉ€ เจธเจพเจฐเฉ‡ เจธเจฟเจฐเจฒเฉ‡เจ– เจฐเฉฑเจ–เฉ‡ เจœเจพเจฃเจ—เฉ‡เฅค
  • processVertex เจนเจฐเฉ‡เจ• เจธเจฟเจฐเจฒเฉ‡เจ– เจฒเจˆ เจœเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจ‡เจน เจตเจฟเจœเจผเจฟเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจ‡เจธ 'เจคเฉ‡ เจ‡เจจเจตเจฐเจŸเฉˆเจ•เจธ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค
  • dfs เจธเจพเจฐเฉ‡ เจธเจฟเจฐเจฟเจ†เจ‚ 'เจคเฉ‡ processVertex เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจธเจญ เจนเฉˆ.

INLINE เจธเจผเจฌเจฆ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

INLINE เจธเจผเจฌเจฆ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฆเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจ…เจฎเจฒ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจธเฉ€; เจ‡เจน เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ†เฅค เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจฌเจฟเจนเจคเจฐ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจฒเฉฑเจญเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€, เจคเจพเจ‚ เจฎเฉˆเจ‚ เจชเจพเจ‡เจ† เจ•เจฟ เจ—เฉˆเจฐ-เจ‡เจจเจฒเจพเจˆเจจ เจธเฉฐเจธเจ•เจฐเจฃ เจ•เฉเจ เจ—เฉเจฐเจพเจซเจพเจ‚ 'เจคเฉ‡ เจงเจฟเจ†เจจ เจจเจพเจฒ เจนเฉŒเจฒเฉ€ เจธเฉ€เฅค เจ‡เจธ เจ—เฉฑเจฒ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟ เจ…เจฐเจฅ เจชเฉฑเจ–เฉ‹เจ‚ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ‡เจธเจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจนเฉเจค เจนเฉˆเจฐเจพเจจ เจ•เฉ€เจคเจพเฅค เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ…เจœเจจเจฌเฉ€, GHC เจฆเฉ‡ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจ•เฉ‹เจˆ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจ…เฉฐเจคเจฐ เจจเจนเฉ€เจ‚ เจธเฉ€เฅค

GHC เจ•เฉ‹เจฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจนเจซเจผเจคเจพ เจฌเจฟเจคเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจธเจชเจธเจผเจŸ เจ‡เจจเจฒเจพเจˆเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจฒเจพเจˆเจจ เจจเจพเจฒ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹ เจ—เจฟเจ†เฅค GHC 8.4.4 เจ…เจคเฉ‡ GHC 8.6.5 เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ†เจชเจŸเฉ€เจฎเจพเจˆเจœเจผเจฐ เจจเฉ‡ เจ‡เจน เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เจฐเจจเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเจพเฅค

เจฎเฉˆเจจเฉ‚เฉฐ เจนเจพเจธเจ•เฉ‡เจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€ เจ—เฉฐเจฆเจ—เฉ€ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจจเจนเฉ€เจ‚ เจธเฉ€. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เฉฑเจœ เจตเฉ€, เจ†เจชเจŸเฉ€เจฎเจพเจˆเจœเจผเจฐ เจ•เจˆ เจตเจพเจฐ เจ—เจฒเจคเฉ€เจ†เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉ‡เจค เจฆเฉ‡เจฃเจพ เจธเจพเจกเจพ เจ•เฉฐเจฎ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจซเฉฐเจ•เจธเจผเจจ เจ‡เจจเจฒเจพเจˆเจจ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจฒเจพเจœเจผเจฎเฉ€ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจ‡เจจเจฒเจพเจˆเจจ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉฐเจ•เฉ‡เจค เจฆเฉ‡เจฃ เจฆเจพ เจ‡เฉฑเจ• เจ•เจพเจฐเจจ เจนเฉˆเฅค

เจ…เฉฑเจ—เฉ‡ เจ•เฉ€ เจนเฉ‹เจ‡เจ†?

เจซเจฟเจฐ เจฎเฉˆเจ‚ เจนเฉ‹เจชเจ•เฉเจฐเจพเจซเจŸ-เจ•เจพเจฐเจช เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจฎเฉ‹เจจเจพเจกเจพเจ‚ เจจเจพเจฒ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจ‡เจน เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเจพ เจ…เฉฐเจค เจธเฉ€เฅค

เจ—เฉ‚เจ—เจฒ เจธเจฎเจฐ เจ†เจซ เจ•เฉ‹เจก เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ, เจฎเฉˆเจ‚ เจซเฉฐเจ•เจธเจผเจจเจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจตเจฟเฉฑเจš เจตเจฟเจนเจพเจฐเจ• เจ…เจจเฉเจญเจต เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ, เจœเจฟเจธ เจจเฉ‡ เจจเจพ เจธเจฟเจฐเจซ เจ…เจ—เจฒเฉ€เจ†เจ‚ เจ—เจฐเจฎเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจœเฉ‡เจจ เจธเจŸเฉเจฐเฉ€เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ‡เฉฐเจŸเจฐเจจเจธเจผเจฟเจช เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเฉ‡เจฐเฉ€ เจฎเจฆเจฆ เจ•เฉ€เจคเฉ€ (เจฎเฉˆเจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจ‡เจน เจธเจฅเจพเจจ เจนเฉˆเจฌเจฐ เจฆเฉ‡ เจœเจพเจฃเจ•เจพเจฐ เจฆเจฐเจธเจผเจ•เจพเจ‚ เจตเจฟเฉฑเจš เจตเฉ€ เจ•เจฟเฉฐเจจเจพ เจฎเจธเจผเจนเฉ‚เจฐ เจนเฉˆ, เจชเจฐ เจ‡เจน เจ‡เฉฑเจ• เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจ•เฉเจ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจซเฉฐเจ•เจธเจผเจจเจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฒเจˆ เจ—เจฐเจฎเฉ€เจ†เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹), เจชเจฐ เจ‡เจธ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš เจ‡เจธ เจชเฉˆเจฐเจพเจกเจพเจˆเจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจธเจผเจพเจจเจฆเจพเจฐ เจฆเฉเจจเฉ€เจ† เจจเจพเจฒ เจœเจพเจฃเฉ‚ เจ•เจฐเจตเจพเจ‡เจ†, เจœเฉ‹ เจ•เจฟ เจฐเจตเจพเจ‡เจคเฉ€ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉ‡เจฐเฉ‡ เจคเจœเจผเจฐเจฌเฉ‡ เจคเฉ‹เจ‚ เจ•เจพเจซเจผเฉ€ เจตเฉฑเจ–เจฐเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹