Deel i functionele programmeertalen
This presentation is the property of its rightful owner.
Sponsored Links
1 / 59

Deel I: Functionele Programmeertalen PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Deel I: Functionele Programmeertalen

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Deel i functionele programmeertalen

Deel I: FunctioneleProgrammeertalen

Hoofdstuk 3:

Uitgebreide

-rekening


Functioneel programma

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

-conversie


Deel i functionele programmeertalen

-conversie

Met -regels

Applicatieve reductieorde voor de -reductie


Stelling van mitschke

Stelling van Mitschke

  • De -reductierelatie  voldoet aan de eigenschap van Church-Rosser


Types

Types

  • Typesysteem van Church: zelf opgeven van types, verificeren van types

  • Typesysteem van Curry: afleiden van types


Types1

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

Abstracte type-syntax

  • De ’s zijn typeconstanten (B,Z)

  • Functies zijn van het type   

  • Types zijn rechts-associatief

    (     =   (  ))


Instructie

Instructie

  • Een instructie is van de vorm M ::  met M het onderwerp, en  het predicaat


Basis

Basis

  • Een verzameling van instructies waarin de onderwerpen allemaal verschillende -veranderlijken zijn. Een M ::  is afleidbaar uit , indien geldt dat  |M ::  met


Deel i functionele programmeertalen

Basis


Voorbeelden

Voorbeelden


Onderwerpreductie

Onderwerpreductie


Termen met een type hebben een normaalvorm

-termen met een type hebben een normaalvorm

  •  |M ::   M heeft een normaalvorm

  • x.xx heeft geen type in ons typesysteem


Semantiek

Semantiek

  • Het doel van de denotationele semantiek is om met elke syntactisch correcte -uitdrukking een ‘wiskundige waarde’ te associëren


Deel i functionele programmeertalen

Semantiek

  • De functie die een waarde associeert met elke -expressie wordt D genoteerd

Waarbij  de omgeving voorstelt


Voorbeeld

Voorbeeld


Behoud van betekenis

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


Striktheid

Striktheid


Combinatoren

Combinatoren

  • Combinator: klasse van a-congruente gesloten l-termen


Stelling van sch nfinkel en curry

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

Standaard combinatorexpressie

  • Een combinatorexpressie waarin de enig voorkomende combinatoren S en K zijn, wordt een standaard combinatorexpressie genoemd


Combinatortransformatie

Combinatortransformatie

Waarbij U een constante, een combinator of een veranderlijke voorstelt


Voorbeelden1

Voorbeelden


Deel i functionele programmeertalen

Voorbeelden


Deel i functionele programmeertalen

Voorbeelden

Typisch O(N log N) tot O(N2)


Combinatoren van turner

Combinatoren van Turner


Voorbeelden2

Voorbeelden


Deel i functionele programmeertalen

Voorbeelden


Deel i functionele programmeertalen

Voorbeelden


Deel i functionele programmeertalen

Voorbeelden

De reductie van deze expressie geeft ons


Extra combinatorreductieregels

Extra combinatorreductieregels


Optimalisatieregels van turner

Optimalisatieregelsvan Turner


Extensionele gelijkheid

Extensionele gelijkheid

De B-regel heeft een speciaal geval


Deel i functionele programmeertalen

Extensionele gelijkheid

Het bewijs is door extensionele gelijkheid


Supercombinatoren

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


Voorbeelden3

Voorbeelden


Deel i functionele programmeertalen

Voorbeelden

Terwijl de volgende expressies geen

supercombinatoren zijn


Supercombinatorredex

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

-reductie voor supercombinatoren

Waarbij de substituties simultaan

uitgevoerd worden


Supercombinator transformatie l lifting

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


Voorbeelden4

Voorbeelden


Naamgeving

Naamgeving

Waarbij deze transformatie nogmaals kan

toegepast worden


In combinatornotatie

of

In Combinatornotatie


Vereenvoudigingen

Vereenvoudigingen

l-lifting van de ly geeft ons

Hetgeen kan herschreven worden als


Deel i functionele programmeertalen

Vereenvoudigingen

l-lifting van de ly geeft ons

Hetgeen equivalent is met


Recursie

Recursie


Complexiteit

Complexiteit

Aantal reducties n * 5 + 3 O(N)


Type afleiding

Type-afleiding

  • Types toekennen aan de argumenten +resultaat


Deel i functionele programmeertalen

Type-afleiding

  • Types toekennen aan het functielichaam

  • Unificatie van de types


Voorbeeld1

Voorbeeld


Deel i functionele programmeertalen

Voorbeeld


Deel i functionele programmeertalen

Voorbeeld

Niet alle supercombinatoren hebben een type


Strictheidsanalyse

Strictheidsanalyse

  • Transformatie naar een abstract domein

zwordt afgebeeld op 0, alle andere waarden op 1


Deel i functionele programmeertalen

Strictheidsanalyse

  • Transformatie voor ingebouwde functies


Voorbeeld2

Voorbeeld

Na transformatie:

Striktheidsanalyse:


Deel i functionele programmeertalen

Voorbeeld

Striktheidsanalyse:


Fixpunt berekening

Fixpunt berekening

Na substitutie van deze functie krijgen we


Deel i functionele programmeertalen

Fixpunt berekening

Fixpunt:

Striktheidsanalyse:


  • Login