Үлгіні есептеу - Pattern calculus

Үлгіні есептеу барлық есептеуді негіздейді үлгілерді сәйкестендіру жалпы түрдегі Ұнайды лямбда есебі, ол біркелкі емдеуді қолдайды функцияны бағалау. Сонымен қатар, бұл функциялар аргумент ретінде өтіп, нәтиже ретінде қайтарылуға мүмкіндік береді. Сонымен қатар, үлгіні есептеу аргументтердің ішкі құрылымына біркелкі қол жеткізуді қолдайды, егер олар жұптасса да тізімдер немесе ағаштар. Сонымен қатар, бұл үлгілерді аргумент ретінде беруге және нәтиже ретінде қайтаруға мүмкіндік береді. Бірыңғай қол жетімділік сәйкестік функциясы арқылы бейнеленген өлшемі бұл кездейсоқтық мөлшерін есептейді мәліметтер құрылымы. Белгісінде бағдарламалау тіліБонди, оны рекурсивті функция

рұқсат етіңіз рек өлшемі =  | х ж -> (өлшемі х) + (өлшемі ж)  | х -> 1

Екінші, немесе әдепкі жағдай x -> 1 үлгіге сәйкес келеді хдәлелге қарсы және қайтып келеді 1. Бұл әріп бірінші жағдайда сәйкестендірілмеген жағдайда ғана қолданылады. Біріншіден, немесе ерекше жағдай кез келгенге қарсы матчтар қосылыс, мысалы, бос емес тізім немесе жұп. Сәйкестік байланыстырады х сол компонентке және ж оң компонентке. Содан кейін корпустың негізгі бөлігі осы компоненттердің өлшемдерін қосады.

Ұқсас әдістер іздеуге және жаңартуға арналған жалпы сұраныстар береді. Рекурсия мен ыдырауды осылай біріктіру нәтиже береді жол полиморфизмі.

Үлгілерді параметр ретінде беру мүмкіндігі (өрнек полиморфизмі) жалпы элиминаторды анықтау арқылы суреттелген. Берілген конструкторлар делік Жапырақ ағаштың жапырақтарын жасау үшін және Санақ ішкі сандарды түрлендіруге арналған. Тиісті элиминаторлар сол кезде

жапырақ  = |  Жапырақ ж -> ж elimCount = | Санақ ж -> ж

Мысалға, elimLeaf (Leaf 3) бағалайды 3 сияқты elimCount (3-есеп).

Бұл мысалдарды генерик элиминаторын қолдану арқылы жасауға боладыелим қаралып жатқан құрылысшыларға. Ол анықталады

елим = | х -> | {ж} х ж -> ж

Қазір жапырақ бағалайды | {y} жапырақ y -> y бұл барабар жапырақ. Сондай-ақ elim Count дегенге тең elimCount.

Жалпы, бұйра жақшалар {} үлгінің байланысты айнымалыларынан тұрады, осылайша х тегін және ж байланысты | {y} x y -> y.

Сыртқы сілтемелер