590 likes | 756 Views
Deel I: Functionele Programmeertalen. Hoofdstuk 3: Uitgebreide -rekening. Functioneel Programma. Een functie-applicatie FA , d.i. een programma + zijn input. Uitvoering van een programma: -reductie tot -normaalvorm een functioneel programma heeft slechts 1 oplossing. -conversie.
E N D
Deel I: FunctioneleProgrammeertalen Hoofdstuk 3: Uitgebreide -rekening
Functioneel Programma • Een functie-applicatie FA, d.i. een programma + zijn input. • Uitvoering van een programma: -reductie tot -normaalvorm • een functioneel programma heeft slechts 1 oplossing
-conversie Met -regels Applicatieve reductieorde voor de -reductie
Stelling van Mitschke • De -reductierelatie voldoet aan de eigenschap van Church-Rosser
Types • Typesysteem van Church: zelf opgeven van types, verificeren van types • Typesysteem van Curry: afleiden van types
Types • Type: syntactische uitdrukking die geassocieerd kan worden met een -term • Semantiek van een type : de verzameling van alle -termen van dit type D • Voordelen van types: • Nagaan van de correctheid van uitdrukkingen • Efficiënte uitvoering
Abstracte type-syntax • De ’s zijn typeconstanten (B,Z) • Functies zijn van het type • Types zijn rechts-associatief ( = ( ))
Instructie • Een instructie is van de vorm M :: met M het onderwerp, en het predicaat
Basis • Een verzameling van instructies waarin de onderwerpen allemaal verschillende -veranderlijken zijn. Een M :: is afleidbaar uit , indien geldt dat |M :: met
-termen met een type hebben een normaalvorm • |M :: M heeft een normaalvorm • x.xx heeft geen type in ons typesysteem
Semantiek • Het doel van de denotationele semantiek is om met elke syntactisch correcte -uitdrukking een ‘wiskundige waarde’ te associëren
Semantiek • De functie die een waarde associeert met elke -expressie wordt D genoteerd Waarbij de omgeving voorstelt
Behoud van betekenis • Het omgekeerde is echter niet noodzakelijk waar. Uit D(2 + 8) = D(3 + 7) kan men niet besluiten dat er moet gelden dat 2 + 8 3 + 7
Combinatoren • Combinator: klasse van a-congruente gesloten l-termen
Stelling van Schönfinkelen Curry • De l-rekening kan geherformuleerd worden in de combinatorrekening met slechts één basisoperatie: de applicatie • Hiervoor zijn slechts twee combinatoren nodig: S en K,
Standaard combinatorexpressie • Een combinatorexpressie waarin de enig voorkomende combinatoren S en K zijn, wordt een standaard combinatorexpressie genoemd
Combinatortransformatie Waarbij U een constante, een combinator of een veranderlijke voorstelt
Voorbeelden Typisch O(N log N) tot O(N2)
Voorbeelden De reductie van deze expressie geeft ons
Extensionele gelijkheid De B-regel heeft een speciaal geval
Extensionele gelijkheid Het bewijs is door extensionele gelijkheid
Supercombinatoren • Een supercombinator is een l-expressie van de vorm zodanig dat • S geen vrije veranderlijken bevat • M geen l-abstractie is (alle l’s staan voorop) • alle l-abstracties in M supercombinatoren zijn • de ariteit n 0
Voorbeelden Terwijl de volgende expressies geen supercombinatoren zijn
Supercombinatorredex • Een supercombinatorredex is de applicatie van een supercombinator met ariteit n op n argumenten. Een supercombinatorreductie vervangt een supercombinatorredex door zijn contractum, t.t.z. het lichaam van de supercombinator met invulling van al zijn argumenten.
-reductie voor supercombinatoren Waarbij de substituties simultaan uitgevoerd worden
Supercombinator-transformatie: l-lifting • Gebaseerd op de abstractie van vrije veranderlijken Beide expressies zijn b-congruent • Toename omvang: typisch O(N) en in het slechtste geval O(N log N) • Het resultaat is een supercombinator indien toegepast op een combinator
Naamgeving Waarbij deze transformatie nogmaals kan toegepast worden
of In Combinatornotatie
Vereenvoudigingen l-lifting van de ly geeft ons Hetgeen kan herschreven worden als
Vereenvoudigingen l-lifting van de ly geeft ons Hetgeen equivalent is met
Complexiteit Aantal reducties n * 5 + 3 O(N)
Type-afleiding • Types toekennen aan de argumenten +resultaat
Type-afleiding • Types toekennen aan het functielichaam • Unificatie van de types