āĻšāĻžāĻ¸āĻ•ā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ FunC āĻ•ā§‡ Functional āĻ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ•āĻ°āĻž: āĻ¸ā§‡āĻ°ā§‹āĻ•ā§‡āĻ˛ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻœāĻŋāĻ¤ā§‡āĻ›ā§‡

āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¯ā§‡ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ āĻļā§āĻ¨ā§‡āĻ›ā§‡āĻ¨ āĻŸāĻ¨ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ˛ā§‡āĻ›ā§‡. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻ–āĻŦāĻ°āĻŸāĻŋ āĻšāĻ¯āĻŧāĻ¤ā§‹ āĻ†āĻĒāĻ¨āĻŋ āĻŽāĻŋāĻ¸ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°ā§‡āĻ›ā§‡ āĻāĻ‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻ¸ā§‡āĻ°ā§‹āĻ•ā§‡āĻ˛ āĻĻāĻ˛, āĻŦā§ƒāĻšā§Ž āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋāĻ¤ā§‡ āĻŦā§āĻ¯āĻžāĻĒāĻ• āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡, āĻāĻ•āĻĒāĻžāĻļā§‡ āĻĻāĻžāĻāĻĄāĻŧāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĻŋāĨ¤ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻžāĻ¯āĻŧ āĻĒāĻžāĻāĻšāĻœāĻ¨ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€āĻ•ā§‡ āĻ…āĻ°ā§āĻĒāĻŖ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻāĻŦāĻ‚ āĻĻā§āĻ‡ āĻ¸āĻĒā§āĻ¤āĻžāĻš āĻĒāĻ°ā§‡ āĻ¤āĻžāĻ°āĻž (āĻ‡āĻ¨) āĻŦāĻŋāĻ¨āĻ¯āĻŧā§€ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹ āĻĄāĻžāĻ•āĻ¨āĻžāĻŽ āĻ¸ā§‡āĻ•ā§āĻ¸āĻŋ āĻ—āĻŋāĻ°āĻ—āĻŋāĻŸāĻŋāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ¸ā§āĻĨāĻžāĻ¨ āĻ…āĻ§āĻŋāĻ•āĻžāĻ° āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻĒā§āĻ°āĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ¤āĻžāĻ°āĻž āĻāĻŸāĻž āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ†āĻļāĻž āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĻāĻļ āĻŽāĻŋāĻ¨āĻŋāĻŸā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ…āĻ¨ā§āĻ¤āĻ¤ āĻāĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ—āĻ˛ā§āĻĒ āĻĒāĻĄāĻŧāĻŦā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻ†āĻĒāĻ¨āĻŋ āĻāĻ¤ā§‡ āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻ•āĻŋāĻ›ā§ āĻĒāĻžāĻŦā§‡āĻ¨ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻœā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻ¤āĻŦā§‡ āĻāĻ•āĻŸā§ āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ— āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻļāĻ°ā§āĻ¤āĻžāĻŦāĻ˛ā§€

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻŖāĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋ āĻ›āĻŋāĻ˛ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ TON āĻ‡āĻ•ā§‹āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻžāĻŸāĻŋ 24 āĻ¸ā§‡āĻĒā§āĻŸā§‡āĻŽā§āĻŦāĻ° āĻĨā§‡āĻ•ā§‡ 15 āĻ…āĻ•ā§āĻŸā§‹āĻŦāĻ° āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻšāĻ˛ā§‡ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 15 āĻ¨āĻ­ā§‡āĻŽā§āĻŦāĻ° āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻŦā§‡āĻļ āĻĻā§€āĻ°ā§āĻ˜ āĻ¸āĻŽāĻ¯āĻŧ āĻ§āĻ°ā§‡, āĻāĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽā§‡ āĻ­āĻŋāĻ“āĻ†āĻ‡āĻĒāĻŋ āĻ•āĻ˛ā§‡āĻ° āĻ—ā§āĻŖāĻŽāĻžāĻ¨ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻāĻŦāĻ‚ āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ C++-āĻ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ¨āĻ•āĻļāĻž āĻāĻŦāĻ‚ āĻŦāĻŋāĻ•āĻžāĻļā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ§āĻ°ā§‡ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ†āĻ¯āĻŧā§‹āĻœāĻ•āĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻ°āĻž āĻĻā§āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž TON-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ‡āĻžā§āĻœāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻĻā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻļā§‡āĻˇāĻ­āĻžāĻŦā§‡ TON-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ Haskell-āĻ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻ āĻ†āĻ•āĻ¸ā§āĻŽāĻŋāĻ• āĻ¨āĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻžāĻā§‡ āĻ•āĻ°ā§āĻĒā§‹āĻ°ā§‡āĻŸ āĻŦā§āĻ˛āĻ— āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŋ āĻ•ā§‡āĻ¨ āĻ†āĻŽāĻ°āĻž āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻ­āĻžāĻˇāĻžāĻ° āĻœāĻŸāĻŋāĻ˛āĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļāĻžāĻ˛ āĻ…āĻ¤āĻŋāĻ°āĻžā§āĻœāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§‡āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ-āĻ“āĻ°āĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻĄāĻ—ā§āĻ˛āĻŋāĻ° āĻĨā§‡āĻ•ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋāĨ¤ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻĻā§āĻŦāĻžāĻ°āĻž, āĻāĻŸāĻŋ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻŽā§‚āĻ˛.

āĻ•ā§‡āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻŽāĻ¨āĻ•āĻŋ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ?

āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡, āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦāĻŋāĻļā§‡āĻˇā§€āĻ•āĻ°āĻŖ āĻšāĻ˛ āĻ…-āĻŽāĻžāĻ¨āĻ• āĻāĻŦāĻ‚ āĻœāĻŸāĻŋāĻ˛ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§‡āĻˇ āĻĻāĻ•ā§āĻˇāĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ†āĻ‡āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻŦā§ˆāĻœā§āĻžāĻžāĻ¨āĻŋāĻ• āĻŽā§‚āĻ˛ā§āĻ¯ā§‡āĻ°āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸāĻ•ā§‡ āĻĻā§ƒāĻĸāĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻāĻ° āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧāĻ•āĻ°āĻŖā§‡ āĻ¨āĻŋāĻ¯ā§āĻ•ā§āĻ¤ āĻ†āĻ›āĻŋ, āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ° āĻŦāĻŋāĻœā§āĻžāĻžāĻ¨ āĻāĻŦāĻ‚ āĻ—āĻŖāĻŋāĻ¤ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ¨ā§‡āĻ¤ā§ƒāĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŦāĻŋāĻļā§āĻŦāĻŦāĻŋāĻĻā§āĻ¯āĻžāĻ˛āĻ¯āĻŧāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻšāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻ•āĻ°āĻŋāĨ¤

āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻžāĻ° āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ•āĻžāĻœ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻœāĻĄāĻŧāĻŋāĻ¤ āĻĨāĻžāĻ•āĻž āĻ¨āĻŋāĻœā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻĒā§āĻ°ā§‡āĻ°āĻŖāĻž āĻ›āĻŋāĻ˛, āĻ¤āĻŦā§‡ āĻĒā§āĻ°āĻ¸ā§āĻ•āĻžāĻ° āĻ¤āĻšāĻŦāĻŋāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻĒā§āĻ°āĻŖā§‹āĻĻāĻ¨āĻž āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ ā§‡āĻ›ā§‡āĨ¤ 🙂

TON āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻ—āĻŦā§‡āĻˇāĻŖāĻž

āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨, āĻ•ā§ƒāĻ¤ā§āĻ°āĻŋāĻŽ āĻŦā§āĻĻā§āĻ§āĻŋāĻŽāĻ¤ā§āĻ¤āĻž āĻāĻŦāĻ‚ āĻŽā§‡āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ‚-āĻ āĻ¨āĻ¤ā§āĻ¨ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻ˜āĻ¨āĻŋāĻˇā§āĻ āĻ­āĻžāĻŦā§‡ āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻ¸āĻ•āĻ˛ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŋ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻŽāĻŋāĻ¸ āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻļā§āĻ°ā§ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĻāĻ˛ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ›āĻŋāĻ˛ āĻŸāĻ¨ āĻ¸āĻžāĻĻāĻž āĻ•āĻžāĻ—āĻœ. āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, TON-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡āĻ° āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻŋāĻ¨āĻŋ, āĻ¤āĻžāĻ‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒāĻŸāĻŋ āĻŦā§‡āĻļ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ›āĻŋāĻ˛ - āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ™ā§āĻ–āĻžāĻ¨ā§āĻĒā§āĻ™ā§āĻ– āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸ āĻāĻŦāĻ‚ āĻ‡āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛.

āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻļā§āĻ°ā§ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¤āĻžāĻ‡ āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻžāĻāĻšāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ—āĻžāĻ‡āĻĄ āĻŦāĻž āĻ¸āĻžāĻ°āĻžāĻ‚āĻļ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€. āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻŸāĻŋ āĻ•ā§‹āĻ¨ā§‹ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§‡āĻ¯āĻŧāĻ¨āĻŋ - āĻ‰āĻŦā§āĻ¨ā§āĻŸā§āĻ¤ā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻ¨āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ āĻ‰āĻĒāĻ•āĻ°āĻŖ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ‡āĻ¨āĻŋāĨ¤

āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ­āĻžāĻ˛ āĻ—āĻŦā§‡āĻˇāĻŖāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻŋāĻ›ā§ āĻāĻ˛āĻžāĻ•āĻžāĻ¯āĻŧ āĻĒāĻĄāĻŧāĻž āĻ•āĻ āĻŋāĻ¨ āĻ›āĻŋāĻ˛. āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦāĻŋāĻŽā§‚āĻ°ā§āĻ¤ āĻ§āĻžāĻ°āĻŖāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻšā§āĻš-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖā§‡ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ¨āĻž āĻĨāĻžāĻ•āĻ˛ā§‡ āĻāĻŸāĻŋ āĻ¸āĻšāĻœ āĻšāĻŦā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¤āĻžāĻ° āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻ•āĻ°ā§‡ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ TON āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŦāĻŋāĻ­ā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻž āĻŦā§‡āĻļāĻŋāĨ¤

āĻ¨āĻŋāĻ•ā§āĻ¸: āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻ°āĻžāĻ–āĻž

āĻ¸ā§‡āĻ°ā§‹āĻ•ā§‡āĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻŦāĻĄāĻŧ āĻ­āĻ•ā§āĻ¤ āĻœāĻ˛ā§‡āĻ° āĻ­ā§‚āĻ¤. āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻŋ āĻ¨āĻŋāĻ•ā§āĻ¸āĻ…āĻĒāĻ¸, āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻ†āĻ›ā§‡ āĻ¨āĻŋāĻ•ā§āĻ¸āĻ¸. āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻ˛ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°ā§āĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯ āĻāĻŦāĻ‚ āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĻ›āĻŋ TON āĻ¸āĻŽāĻžāĻŦā§‡āĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻ¸āĻš āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ“āĻ­āĻžāĻ°āĻ˛ā§‡. āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡, TON āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻž āĻ¯āĻ¤āĻŸāĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ¸āĻšāĻœ:

$ cd ~/.config/nixpkgs/overlays && git clone https://github.com/serokell/ton.nix
$ cd /path/to/ton/repo && nix-shell
[nix-shell]$ cmakeConfigurePhase && make

āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ NixOS, Ubuntu āĻŦāĻž macOS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¨āĻž āĻ•ā§‡āĻ¨, Nix āĻœāĻžāĻĻā§āĻ•āĻ°ā§€āĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻŦā§‡āĨ¤

TON āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚

TON āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ āĻ•ā§‹āĻĄ TON āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ (TVM) āĻšāĻ˛ā§‡āĨ¤ TVM āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛, āĻāĻŦāĻ‚ āĻ–ā§āĻŦ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻŸāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ¤āĻž и āĻĄā§‡āĻŸāĻž āĻ˛āĻŋāĻ™ā§āĻ•.

āĻ¤āĻžāĻ›āĻžāĻĄāĻŧāĻž, TON-āĻāĻ° āĻ›ā§‡āĻ˛ā§‡āĻ°āĻž āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›ā§‡:

āĻĒāĻžā§āĻšāĻžāĻļ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻ¯āĻž āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻŦā§‡āĻ°. āĻ¤āĻžāĻ° āĻ¸ā§āĻĒāĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻšāĻ˛ TVM āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĨ¤

āĻĢāĻžāĻ¨āĻ¸āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻ¯āĻž āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ C āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ¸āĻ‚āĻ•āĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ - āĻĢāĻŋāĻĢāĻŸ āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ°āĨ¤

āĻĒāĻžā§āĻšāĻŽ āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ° — TVM-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸā§‡āĻŦāĻ˛ āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžā§āĻšāĻŽ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĨ¤ āĻĒāĻžā§āĻšāĻŽ āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻ¨ā§‡āĻ‡āĨ¤ āĻāĻ‡ āĻāĻŽāĻŦā§‡āĻĄā§‡āĻĄ āĻĄā§‹āĻŽā§‡āĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ­āĻžāĻˇāĻž (eDSL).

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻ•āĻžāĻœ āĻ•āĻ°ā§‡

āĻ…āĻŦāĻļā§‡āĻˇā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¸ā§‡āĻ›ā§‡āĨ¤

āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻĒā§‡āĻŽā§‡āĻ¨ā§āĻŸ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛

āĻĒā§‡āĻŽā§‡āĻ¨ā§āĻŸ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¯āĻž āĻĻā§āĻ‡āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻ…āĻ°ā§āĻĨāĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ…āĻ°ā§āĻĨ āĻ¸āĻžāĻļā§āĻ°āĻ¯āĻŧ āĻ•āĻ°ā§‡āĻ¨ āĻ¨āĻž (āĻ•ā§‹āĻ¨ āĻ•āĻŽāĻŋāĻļāĻ¨ āĻ¨ā§‡āĻ‡), āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧāĻ“ (āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻŦā§āĻ˛āĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž)āĨ¤ āĻĒā§‡āĻŽā§‡āĻ¨ā§āĻŸ āĻ¯āĻ¤āĻŸāĻž āĻ›ā§‹āĻŸ āĻāĻŦāĻ‚ āĻ¯āĻ¤āĻŦāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¤āĻ¤āĻŸāĻž āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĒāĻ•ā§āĻˇāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•ā§‡ āĻ…āĻĒāĻ°āĻ•ā§‡ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻˇā§āĻĒāĻ¤ā§āĻ¤āĻŋāĻ° āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯āĻ¤āĻž āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ¸āĻšāĻœ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻĻā§āĻŸāĻŋ āĻĒāĻ•ā§āĻˇ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°āĻŋāĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻĻā§āĻŸāĻŋ āĻ¨āĻŽā§āĻŦāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡â€”āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ• āĻĒāĻ•ā§āĻˇā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖāĨ¤ āĻāĻ‡ āĻĻā§āĻŸāĻŋ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻŽāĻ¤ āĻ•āĻžāĻœ āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻ˜āĻĄāĻŧāĻŋ āĻĒā§āĻ°āĻĨāĻžāĻ—āĻ¤ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻāĻŦāĻ‚ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ "āĻ†āĻ—ā§‡ āĻ˜āĻŸā§‡āĻ›āĻŋāĻ˛" āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻ‡ āĻĄā§‡āĻŸāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻĻā§āĻŦāĻ¨ā§āĻĻā§āĻŦ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻŦā§‡āĨ¤

āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻāĻ‡ āĻ§āĻžāĻ°āĻŖāĻžāĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ‡ āĻ¯āĻĨā§‡āĻˇā§āĻŸ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ•āĻžāĻ°āĻŖ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ‡āĻ‰āĻœāĻžāĻ° āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ āĻ…āĻ°ā§āĻĨāĻĒā§āĻ°āĻĻāĻžāĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻāĻŸāĻŋ āĻ›āĻžāĻĄāĻŧāĻž, āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻ¨āĻ“ āĻ•āĻžāĻ°āĻŖā§‡ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻŦā§‡, āĻ¯āĻĻāĻŋāĻ“ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻāĻŦāĻ‚ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ—āĻŖāĻ¨āĻž āĻ¸āĻ āĻŋāĻ• āĻšāĻŦā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ•ā§āĻˇāĻ¤āĻŋāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ¨āĻžāĻ“ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ…āĻ°ā§āĻĨāĻĒā§āĻ°āĻĻāĻžāĻ¨ā§‡āĻ° āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ†āĻļā§āĻšāĻ°ā§āĻ¯āĻœāĻ¨āĻ•āĻ­āĻžāĻŦā§‡, āĻ†āĻŽāĻ°āĻž āĻŽāĻžāĻ¤ā§āĻ° āĻĻā§āĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ:

  1. āĻŦāĻŋāĻŦāĻ°āĻŖ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻŽā§āĻ–ā§€ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĨ¤
  2. āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛, āĻ¯āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ¤ āĻāĻ•āĻ‡ āĻ§āĻžāĻ°āĻŖāĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻ āĻŋāĻ•āĻ¤āĻž āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻ¨ā§āĻĻā§āĻŦ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŽāĻ¤ā§‹ āĻ…āĻ¨ā§‡āĻ• āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤

āĻāĻŸāĻž āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ˛ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛āĻ•ā§‡ āĻŦāĻŋāĻļāĻĻāĻ­āĻžāĻŦā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻ…āĻ°ā§āĻĨāĻĒā§‚āĻ°ā§āĻŖ, āĻāĻ° āĻ¸āĻ āĻŋāĻ•āĻ¤āĻžāĻ° āĻĻāĻŋāĻ•ā§‡ āĻŦāĻŋāĻļā§‡āĻˇ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĨ¤ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ° āĻĒāĻ°ā§‡, āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ›āĻŋāĻ˛, āĻāĻŦāĻ‚ āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋāĻ“ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ“āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¤āĻžāĻ•āĻžāĻ“.

āĻ†āĻŽāĻ°āĻž FunC-āĻ¤ā§‡ āĻšā§āĻ•ā§āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ—āĻ āĻ•āĻĻā§‡āĻ° āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ­āĻžāĻŦā§‡ āĻĢāĻŋāĻĢāĻŸā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻ‡āĻ¨ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° CLI-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ āĻ­āĻžāĻˇāĻž āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°āĻ¤āĻžāĻŽ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻĢāĻŋāĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤

āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻ•āĻĨāĻž āĻŦāĻ˛āĻ¤ā§‡, āĻĢāĻŋāĻĢā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽ āĻāĻŦāĻ‚ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¸āĻš āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻ­āĻžāĻˇāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻĨā§‡āĻ•ā§‡ āĻāĻ‡ āĻ­āĻžāĻˇāĻžāĻŸāĻŋāĻ•ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻžāĻ° āĻ•ā§‹āĻ¨āĻ“ āĻŦāĻžāĻ§ā§āĻ¯āĻ¤āĻžāĻŽā§‚āĻ˛āĻ• āĻ•āĻžāĻ°āĻŖ āĻĻā§‡āĻ–āĻŋāĻ¨āĻŋāĨ¤ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻŦā§‡āĻļ āĻ…āĻĒā§āĻ°ā§€āĻ¤āĻŋāĻ•āĻ°, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ•ā§€ āĻ†āĻ›ā§‡ āĻ¤āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§āĻ°āĻŽāĻžāĻ—āĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŽāĻžāĻĨāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻāĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤

āĻ…āĻ¤āĻāĻŦ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ¤ā§‡, āĻĢāĻŋāĻĢā§āĻŸā§‡āĻ° āĻ…āĻ¸ā§āĻ¤āĻŋāĻ¤ā§āĻŦā§‡āĻ° āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯āĻ¤āĻž āĻšāĻ˛ āĻĢāĻŋāĻĢā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ°ā§‡āĻ° āĻšā§‹āĻ¸ā§āĻŸ āĻ­āĻžāĻˇāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻ° āĻ­ā§‚āĻŽāĻŋāĻ•āĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ‡ āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ‰āĻĻā§āĻ­āĻžāĻŦāĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻŸāĻŋāĻ­āĻŋāĻāĻŽ āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ°āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻŽā§āĻŦā§‡āĻĄ āĻ•āĻ°āĻž āĻ•āĻŋ āĻ­āĻžāĻ˛ āĻšāĻŦā§‡ āĻ¨āĻž?

TVM Haskell eDSL

āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ¸āĻŋāĻ—āĻ¨ā§‡āĻšāĻžāĻ° āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ FunC-āĻ¤ā§‡ āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ˛ā§‡āĻ–āĻž āĻ–ā§āĻŦāĻ‡ āĻŦāĻŋāĻ°āĻ•ā§āĻ¤āĻŋāĻ•āĻ° āĻšāĻŦā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ•āĻŋāĻ›ā§ āĻ¸ā§āĻŦāĻžāĻĻ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ TVM-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻ­āĻžāĻˇāĻž āĻ›āĻŋāĻ˛āĨ¤

āĻĢāĻŋāĻĢā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ°ā§‡āĻ° āĻŽāĻ¤ā§‹, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ­āĻžāĻˇāĻž āĻāĻŽā§āĻŦā§‡āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻĢāĻŋāĻĢāĻŸā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻšāĻžāĻ¸āĻ•ā§‡āĻ˛āĻ•ā§‡ āĻšā§‹āĻ¸ā§āĻŸ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ–āĻ°āĻš āĻ–ā§āĻŦ āĻŦā§‡āĻļāĻŋ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻŸāĻžāĻ‡āĻĒāĻŋāĻ‚, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻ¤ā§‡, āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĨ¤

Haskell āĻ āĻāĻŽāĻŦā§‡āĻĄ āĻ•āĻ°āĻž TVM āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ° āĻĻā§‡āĻ–āĻ¤ā§‡ āĻ•ā§‡āĻŽāĻ¨ āĻ¤āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻĻāĻ°ā§āĻļ āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻāĻŋāĻ¤ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

  • āĻāĻ‡ āĻšā§āĻ•ā§āĻ¤āĻŋāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ—āĻ āĻŋāĻ¤, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ¤ āĻ–ā§āĻļāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻšā§‹āĻ¸ā§āĻŸ āĻ˛ā§āĻ¯āĻžāĻ™ā§āĻ—ā§āĻ¯āĻŧā§‡āĻœ (āĻ¯ā§‡āĻŽāĻ¨ āĻšāĻžāĻ¸ā§āĻ•ā§‡āĻ˛) āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° eDSL āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻŸāĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻŸāĻŋāĻ­āĻŋāĻāĻŽ-āĻ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ°ā§āĻŸāĻŋāĻ¨ āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¨āĻžāĻ•āĻŋ āĻ•āĻ˛ā§‡āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡ āĻ•ā§‡āĻŦāĻ˛ āĻ‡āĻ¨āĻ˛āĻžāĻ‡āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨āĨ¤
  • āĻšāĻžāĻ¸ā§āĻ•ā§‡āĻ˛ā§‡āĻ° āĻŽāĻ¤ā§‹, āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ§āĻ°āĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻšā§‡āĻ• āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ‡āĻĄāĻŋāĻāĻ¸āĻāĻ˛-āĻ, āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ‡āĻ¨āĻĒā§āĻŸ āĻĒā§āĻ°āĻ•āĻžāĻ°āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻĒā§āĻ°āĻ•āĻžāĻ° āĻ¯āĻž āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻĒā§āĻ°āĻ•āĻžāĻ°āĻŸāĻŋ āĻšāĻ˛ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻĒā§āĻ°āĻ•āĻžāĻ° āĻ¯āĻž āĻ•āĻ˛ā§‡āĻ° āĻĒāĻ°ā§‡ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤
  • āĻ•ā§‹āĻĄā§‡ āĻŸā§€āĻ•āĻž āĻ†āĻ›ā§‡ stacktype, āĻ•āĻ˛ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻĒā§āĻ°āĻ•āĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻ¸āĻ˛ āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻ—ā§āĻ˛āĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻžāĻĻā§‡āĻ° eDSL-āĻ āĻāĻ—ā§āĻ˛āĻŋ āĻ†āĻ¸āĻ˛ā§‡ āĻ•ā§‹āĻĄā§‡āĻ° āĻ…āĻ‚āĻļ āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻšā§‡āĻ• āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§ˇ āĻāĻ—ā§āĻ˛āĻŋ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻŦāĻž āĻŦāĻŋāĻŦā§ƒāĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯āĻž āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻ•āĻ°ā§‡ āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•ā§‡āĻ° āĻĒā§āĻ°āĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻŸā§€āĻ•āĻž āĻ°āĻžāĻ¨āĻŸāĻžāĻ‡āĻŽ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ TVM āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤
  • āĻāĻŸāĻŋ āĻāĻ–āĻ¨āĻ“ āĻĻā§āĻ‡ āĻ¸āĻĒā§āĻ¤āĻžāĻšā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ˛ā§‡āĻ–āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻŸāĻžāĻ‡āĻĒ, āĻ¤āĻžāĻ‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻāĻ–āĻ¨āĻ“ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻŦāĻžāĻ•āĻŋ āĻ†āĻ›ā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¨ā§€āĻšā§‡āĻ° āĻ•ā§‹āĻĄā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻ›ā§‡āĻ¨ āĻ¤āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ‡āĻĄāĻŋāĻāĻ¸āĻāĻ˛-āĻ āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ˛ā§āĻŸāĻŋāĻ¸āĻŋāĻ— āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻžāĻšā§āĻ›ā§‡:

main :: IO ()
main = putText $ pretty $ declProgram procedures methods
  where
    procedures =
      [ ("recv_external", decl recvExternal)
      , ("recv_internal", decl recvInternal)
      ]
    methods =
      [ ("seqno", declMethod getSeqno)
      ]

data Storage = Storage
  { sCnt :: Word32
  , sPubKey :: PublicKey
  }

instance DecodeSlice Storage where
  type DecodeSliceFields Storage = [PublicKey, Word32]
  decodeFromSliceImpl = do
    decodeFromSliceImpl @Word32
    decodeFromSliceImpl @PublicKey

instance EncodeBuilder Storage where
  encodeToBuilder = do
    encodeToBuilder @Word32
    encodeToBuilder @PublicKey

data WalletError
  = SeqNoMismatch
  | SignatureMismatch
  deriving (Eq, Ord, Show, Generic)

instance Exception WalletError

instance Enum WalletError where
  toEnum 33 = SeqNoMismatch
  toEnum 34 = SignatureMismatch
  toEnum _ = error "Uknown MultiSigError id"

  fromEnum SeqNoMismatch = 33
  fromEnum SignatureMismatch = 34

recvInternal :: '[Slice] :-> '[]
recvInternal = drop

recvExternal :: '[Slice] :-> '[]
recvExternal = do
  decodeFromSlice @Signature
  dup
  preloadFromSlice @Word32
  stacktype @[Word32, Slice, Signature]
  -- cnt cs sign

  pushRoot
  decodeFromCell @Storage
  stacktype @[PublicKey, Word32, Word32, Slice, Signature]
  -- pk cnt' cnt cs sign

  xcpu @1 @2
  stacktype @[Word32, Word32, PublicKey, Word32, Slice, Signature]
  -- cnt cnt' pk cnt cs sign

  equalInt >> throwIfNot SeqNoMismatch

  push @2
  sliceHash
  stacktype @[Hash Slice, PublicKey, Word32, Slice, Signature]
  -- hash pk cnt cs sign

  xc2pu @0 @4 @4
  stacktype @[PublicKey, Signature, Hash Slice, Word32, Slice, PublicKey]
  -- pubk sign hash cnt cs pubk

  chkSignU
  stacktype @[Bool, Word32, Slice, PublicKey]
  -- ? cnt cs pubk

  throwIfNot SignatureMismatch
  accept

  swap
  decodeFromSlice @Word32
  nip

  dup
  srefs @Word8

  pushInt 0
  if IsEq
  then ignore
  else do
    decodeFromSlice @Word8
    decodeFromSlice @(Cell MessageObject)
    stacktype @[Slice, Cell MessageObject, Word8, Word32, PublicKey]
    xchg @2
    sendRawMsg
    stacktype @[Slice, Word32, PublicKey]

  endS
  inc

  encodeToCell @Storage
  popRoot

getSeqno :: '[] :-> '[Word32]
getSeqno = do
  pushRoot
  cToS
  preloadFromSlice @Word32

āĻ†āĻŽāĻžāĻĻā§‡āĻ° eDSL āĻāĻŦāĻ‚ āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ¸āĻŋāĻ—āĻ¨ā§‡āĻšāĻžāĻ° āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻāĻ–āĻžāĻ¨ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡ āĻāĻ‡ āĻ­āĻžāĻ¨ā§āĻĄāĻžāĻ°āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻ°ā§‹ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻŦāĻ˛ā§‡āĻ›ā§‡āĻ¨ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻ­āĻžāĻˇāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻšāĻ•āĻ°ā§āĻŽā§€ āĻœāĻ°ā§āĻœāĻŋ āĻ†āĻ—āĻžāĻĒā§‹āĻ­āĨ¤

āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻž āĻāĻŦāĻ‚ TON āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻŽā§‹āĻŸ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻœā§‡ āĻ˛ā§‡āĻ—ā§‡āĻ›ā§‡ 380 āĻ˜āĻ¨ā§āĻŸāĻž (āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨, āĻŽāĻŋāĻŸāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤āĻŋ āĻ¸āĻš)āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻžāĻŽā§‚āĻ˛āĻ• āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻĒāĻžāĻāĻšāĻœāĻ¨ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻ…āĻ‚āĻļ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛: CTO, āĻĻāĻ˛ā§‡āĻ° āĻ¨ā§‡āĻ¤ā§ƒāĻ¤ā§āĻŦ, āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻŦāĻŋāĻļā§‡āĻˇāĻœā§āĻž āĻāĻŦāĻ‚ Haskell āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĨ¤

āĻ†āĻŽāĻ°āĻž āĻ•ā§‹āĻ¨ā§‹ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§‹āĻ—āĻŋāĻ¤āĻžāĻ¯āĻŧ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻĻ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻšā§āĻ¯āĻžāĻ•āĻžāĻĨāĻ¨ā§‡āĻ° āĻšā§‡āĻ¤āĻ¨āĻž, āĻ˜āĻ¨āĻŋāĻˇā§āĻ  āĻĻāĻ˛āĻŦāĻĻā§āĻ§ āĻ•āĻžāĻœ, āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻĻāĻŋāĻ•āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ¨āĻŋāĻŽāĻœā§āĻœāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧāĻ‡ āĻ‰āĻ¤ā§āĻ¤ā§‡āĻœāĻ¨āĻžāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āĻ¸ā§€āĻŽāĻŋāĻ¤ āĻ¸āĻŽā§āĻĒāĻĻā§‡āĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ…āĻ°ā§āĻœāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¨āĻŋāĻĻā§āĻ°āĻžāĻšā§€āĻ¨ āĻ°āĻžāĻ¤ āĻ…āĻŽā§‚āĻ˛ā§āĻ¯ āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻŽā§ƒāĻ¤āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ•ā§āĻˇāĻ¤āĻŋāĻĒā§‚āĻ°āĻŖ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ­āĻžāĻ˛āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ›āĻžāĻĄāĻŧāĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ•āĻžāĻ°ā§‡āĻ° āĻļāĻžāĻ˛ā§€āĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻ…āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ•āĻ āĻŋāĻ¨āĨ¤

āĻ—āĻžāĻ¨ā§‡āĻ° āĻ•āĻĨāĻž āĻāĻ•āĻĒāĻžāĻļā§‡: TON āĻŸāĻŋāĻŽ āĻ¯ā§‡ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻ¤āĻžāĻ¤ā§‡ āĻ†āĻŽāĻ°āĻž āĻŽā§āĻ—ā§āĻ§ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻ¤āĻžāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻœāĻŸāĻŋāĻ˛, āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻāĻŦāĻ‚ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ TON āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻāĻ‡ āĻŦāĻžāĻ¸ā§āĻ¤ā§āĻ¤āĻ¨ā§āĻ¤ā§āĻ°ā§‡āĻ° āĻŦāĻŋāĻ•āĻžāĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻŦāĻ‚ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ‰āĻ­āĻ¯āĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ‡ āĻ†āĻ°āĻ“ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨ āĻāĻ‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ…āĻ‚āĻļ āĻšāĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡ āĻ—āĻ°ā§āĻŦāĻŋāĻ¤āĨ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻĒāĻĄāĻŧāĻžāĻ° āĻĒāĻ°ā§‡āĻ“ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ā§‹ āĻĒā§āĻ°āĻļā§āĻ¨ āĻĨāĻžāĻ•ā§‡ āĻŦāĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ TON āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻĨāĻžāĻ•ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ˛āĻŋāĻ–ā§āĻ¨ — āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻļā§‡āĻ¯āĻŧāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻŦāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨