Syftet med detta dokument är tvåfaldigt. För det första visar vi hur attribut i ett attribut grammatik kan enkelt och effektivt utvärderas med hjälp av ett lat funktionellt språk. Klassen av attribut grammatik som vi kan hantera är de mest allmänna möjliga: attribut kan bero på varandra på ett godtyckligt sätt, så länge det inte finns några verkligt cirkulära data beroenden. För det andra beskriver vi en metod baserad på attribut grammatik, där vi på ett ganska enkelt sätt kan utveckla e ektiva funktionella program där direkta, konventionella lösningar ger mindre effektiva program. Vi går igenom två exempel från ett papper av R. Bird (Använda cirkulära program för att eliminera flera traversals av data, Acta Informatica, 21, 1984) där han omvandlar enkla men ogenomträngliga multipass program till mer e e e cient single pass en, men som på egen hand kan vara mycket svårt att förstå. Vi visar hur sådana ecient men trasslade program kan ha naturliga formuleringar som attribut grammatik. Vi föreslår också en språkkonstruktion, kallad case rec (akin till fallet uttryck i Standard ML och Lazy ML), som de nes en attribut grammatik över en datastruktur i språket. I e ect, ett fall rec uttryck de nes en recursion operatör som kan hantera flera värden, både uppåt-förstärkande och nedåt-förstärkande.
Ett antal system använder lata funktionella språk för att definiera utvärderare som cirkulära program REF.
Attribute Grammars as a Functional Programming Paradigm
{'venue': 'Functional Programming Languages and Computer Architecture, volume 274 of LNCS', 'journal': None, 'mag_field_of_study': ['Computer Science']}