Lataa esitys
Esittely latautuu. Ole hyvä ja odota
1
Laiska laskenta, korekursio ja äärettömyys
TIEA341 Funktio-ohjelmointi Syksy 2005
2
Muistatko graafinsievennyksen?
3
DAG-esitys ja graafinsievennys
Lausekkeen rakennepuu, jos- sa yhteiset alilausekkeet on samastettu Graafinsievennys Sievennetään DAG-esitystä tavalliseen tapaan, mutta korvataan louksi DAG:ssa sievennetyn alilausekkeen “juurisolmu” vastauksen juuri- solmulla * 2 + x = 2 * 2 x * (2 + x)
4
* 2 + x = 2 * 2 x * (2 + x) Redeksi
5
* 4 * (2 + 4) + 4 2 Redeksi
6
* 4 * 6 6 4 Redeksi
7
24 24
8
Laiska laskenta Laiska laskenta on toinen nimitys graafinsievennykselle Ytimekkäästi: mitään ei lasketa ennen kuin on pakko, ja mitään ei lasketa kahdesti mutta tämä on yksinkertaistus “Mitään ei lasketa ennen kuin on pakko” normaalijärjestys “Mitään ei lasketa kahdesti” viittaa DAG-esityksen ominaisuuteen, jossa yhteiset alilausekkeet samastetaan ei pidä ottaa liian kirjaimellisesti
9
Tarvevälitys Toinen näkökulma laiskaan laskentaan Arvovälitys:
funktion argumentit lasketaan ennen funktiokutsua parametrit saavat laskennan tulokset arvoikseen Nimivälitys: funktion argumentti lasketaan joka kerta, kun vastaavaa parametria käytetään funktion sisällä Tarvevälitys (laiska laskenta): kuten nimivälitys, paitsi että argumentin arvo muistetaan, kun se on kerran laskettu
10
Striktit ja nonstriktit funktiot
Yksiparametrisen funktion sanotaan olevan strikti, jos f e sievenee pohjaksi aina, kun e sievenee pohjaksi lyhyesti. “f ⊥ = ⊥“ Muuten se on nonstrikti Moniparametriset funktiot tarkastellaan parametri kerrallaan pitäen muut vakioina “f a ⊥ c d = ⊥“ Esim. ⊥ && x = ⊥ mutta False && ⊥ = False Nonstriktit funktiot eivät ole mahdollisia applikatiivista järjestystä (arvovälitys) käytettäessä
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.