1 libxz - notes-heavenstorage.notes-heaven.com/notesheaven/archive/67580_pllab/...01/03/2007 23:00...
TRANSCRIPT
01/03/2007 23:00 ilpeivwpet zepkz zpcq03/03/2007 22:00:oexg` oekcir
1 libxz
qex zxibq zry ,09/03/2007 ,iyiy mei:dybd
zipexhwl` yibdl yi libxzd z` ***hlwd zeiweg wecal jxev oi` df alya
oekpl mi`ex mz` mda zenewna xfr 'et exicbdoekpl mi`ex mz` mda zenewna ceriz etiqed
gn y m ix et
:yibdl mkilr eze` TESTS zewicad uaew dpan ***(= (<func name> <argumentes>) <expected value>)
(= (my add 2 3 4) 9) :`nbecl
yibdl yiy mivaw ***
TESTS •ex1.scm •
README - ilpeivte` •
{ tar -cvf ex1.tar ex1.scm TESTS README } i'"r ex1.tar l mivaewn
i'"r zxcben (13,8,5,3,2,1,1) ivpeait zxcq .1a1=1 a2=1 an=an−1+an−2
(fibon <index>) 'etd z` eynn •mipey`xd mixai`d n mekq z` dxifgnd (fibonSum <n>) 'etd z` eynn •
ivpeait zxcqa
(my power <x(real)> <n(integer - might be negative)>) 'etd z` eynn • .2xn z` dxifgnd
(n square <x(real)> <n(integer)> <tolerance(real)>) 'etd z` eynn •(dzika bvedy my sqrt l dnec ote`a) n
√x l aexiw dxifgnd
ak =(n−1)ak−1+
x
(ak−1)n−1
n : n√
x l ziaihxhi`d aexiwd zgqep(zipexyr dcewp mr) real xtqnk exiard ipey`xd yegipd z`
.d`ixw `l j` dpekp didz d`vezd zxg`
1-1
(third square <x(real)>) , (second square <x(real)>) 'etd z` eynn •(forth square <x(real)>) ,
4√
x , 3√
x ,√
x l aexiw zexifgnd0.001 ly zerh ick cr
dwelg zix`y aeyigl remainder 'etd z` ecnil .3
zeipey`x zwical (prime <n>) zip`ilead 'etd z` eynn •i`) zexf zwical (co prime <n1> <n2>) zip`ilead 'etd z` eynn •
(1 caln szeyn wlgn meiw•
n-n miphwd mixtqnd xtqn z` dxifgnd (phi <n>) 'etd z` eynn •(xlie` 'et) el mixfe
mixtqnd zltkn z` dxifgnd (mul from to <n1> <n2>) 'etd z` eynn .4n2 l n1 oia
n! = (mul from to 1 n)∣∣∣∣ a1 a2
a3 a4
∣∣∣∣ dhppinxhcd z` (det 2 2 <a1> <a2> <a3> <a4>) 'etd z` eynn .5a1 ∗ a4 − a2 ∗ a3 =
z` mipene { c0=1 cn=Σnk=1ck−1cn−k } i'"r mixcben Catalan olhw ixtqn .6
.miil`ny miixbeq nae miipni miixbeq na miiwegd miehiad xtqna lkzqdl mileki mz` olhw ixtqn lr sqep rcinlhttp : //en.wikipedia.org/wiki/Catalan number
cn z` dxifgnd (catalan <index>) 'etd z` eynn
1-2
07/03/2007 23:15 ilpeivwpet zepkz zpcq11/03/2007 21:35:oexg` oekcir
1 libxz
qex zxibq zry ,15/03/2007 ,iying mei:dybd
zipexhwl` yibdl yi libxzd z` ***hlwd zeiweg wecal jxev oi` df alya
oekpl mi`ex mz` mda zenewna xfr 'pet exicbdoekpl mi`ex mz` mda zenewna ceriz etiqed
dzika epxcbdy itk lambda zxfra wx 'pet exicbd.mixg` mitirqa mieqn sirqa exicbzy 'peta ynzydl (ulnene) mi`yx mz`
.zeierh zellek `l zeiqiqad 'petdy `ceel ulnen dfk dxwnay oaen
:yibdl mkilr eze` TESTS zewicad uaew dpan ***(= (<func name> <argumentes>) <expected value>)
(= (my add 2 3 4) 9) :`nbecl
yibdl yiy mivaw ***
ex2.scm •TESTS •
README - ilpeivte` •
{ tar -cvf ex2.tar ex2.scm TESTS README } i'"r ex2.tar l mivaewn
'etd z` eynn .1
(sum function <function> <function>) •(composed function <function> <function>) •
zeixtqnd zeixpe`d 'etd z` zexifgne f,g zeixtqn zeixpe` 'et izy zelawndf+g,f◦g=f(g(x))
'etd i"r miakexnd mixtqnd z` lcnp .2(define complex (lambda (a b) (cons a b)))
a+bi → (complex a b)
'etd z` eynn
1-1
(complex add <complex number> <complex number>) •(complex mul <complex number> <complex number>) •
.dn`zda dltknde xeaigd z`vez epidy akexn xtqn zexifgnd
dniyxd z` dxifgnd (series <a(function)> <n(natural)>) 'etd z` eynn .3a(0), a(1), a(2), a(3), . . . , a(n)
zniyx ixa`n cg` lkl 8 dtiqend (add 8 to all <list>) 'etd z` eynn .4.d`vezd z` dxifgne hlwd
m"m` #t dxifgnd (forall <list> <condition>) zip`ilead 'etd z` eynn .5dniyxd ixa`n cg` lkl miiwzn i`pzd
'etd z` eynn .6
ilniqwnd xai`de ilnipind xai`d z` dxifgnd (list min max <list>)pair k dniyxa
dniyxa mixai`d zltkn z` dxifgnd (list product <list>) ••dniyxa mixai`d rvenn z` dxifgnd (list average <list>) •
-nay mixai`d zxcq z` dxifgnd (even indexes <list>) 'etd z` eynn .7miibefd zenew
.dzika epi`xy select even 'etdn dpey ef 'ety al eniy
'etd z` eynn .8
mdilr dniyxd ixa` z` dxifgnd (filter <list> <boolean function>) •#t dxifgn 'etd
dniyxd ixa` z` dxifgnd (multi filter <list> <boolean function list>) •#t zexifgn 'etd lk mdilr
a0, a1, a2, a3, . . . , ak dxcq ozpida xy` (item no <index> <list>) 'etd z` eynn .9xai`d z` dxifgn ilily i xy`ke ai z` dxifgn (-(k+1)6i6k) i qwcpi`e
.seqdn i-id
ozpida xy` (change item no <value> <index> <list>) 'etd z` eynn .10ai z` dtilgn v jxre (-(k+1)6i6k) i qwcpi`, a0, a1, a2, a3, . . . , ak dxcq
.seqdn i-id xai`d z` dtilgn ilily i xy`ke va
-gn a0, a1, a2, a3, . . . dxcq ozpida xy` (monotone <list>) 'etd z` eynn .11zniiwnd b0, b1, b2, b3, . . . dxciqd z` dxif
b1 = a1 •∀i : bi = eixg` `vnpe bi−1 n lecbd hlwd zxcqa oey`xd xai`d •
:`nbecl
(monotone ’(1 2 4 3 7)) → ’(1 2 4 7) •
1-2
(monotone ’(1 9 2 3 4)) → ’(1 9) •(monotone ’(1 9 9 9 2 3 4)) → ’(1 9) •
a0, a1, a2, a3, . . . zexcq ozpida xy` (interleave <list> <list>) 'etd z` eynn .12a0, b0, a1, b1, a2, b2, . . . dxciqd z` dxifgn b0, b1, b2, b3, . . . ,
:`nbecl
(interleave ’(1 2 3 4) ’(a b)) → ’(1 a 2 b 3 4) •(interleave ’(1 2 3 ) ’(a b c d e)) → ’(1 a 2 b 3 c d e) •
(interleave ’() ’(a b c d e)) → ’(a b c d e) •
1-3
21/03/2007 01:00 ilpeivwpet zepkz zpcq23/03/2007 08:00:oexg` oekcir
3 libxz
12:00 ,30/03/2007 ,iyiy mei:dybd
zipexhwl` yibdl yi libxzd z` ***hlwd zeiweg wecal jxev oi` df alya
( leta eynzyd ) oekpl mi`ex mz` mda zenewna xfr 'pet exicbdoekpl mi`ex mz` mda zenewna ceriz etiqed
dzika epxcbdy itk lambda zxfra wx 'pet exicbd.mixg` mitirqa mieqn sirqa exicbzy 'peta ynzydl (ulnene) mi`yx mz`
.zeierh zellek `l zeiqiqad 'petdy `ceel ulnen dfk dxwnay oaen
:yibdl mkilr eze` TESTS zewicad uaew dpan ***(= (<func name> <argumentes>) <expected value>)
(= (my add 2 3 4) 9) :`nbecl
yibdl yiy mivaw ***
ex3.scm •TESTS •
README - ilpeivte` •
{ tar -cvf ex3.tar ex3.scm TESTS README } i'"r ex3.tar l mivaewn
'etd z` exind .1
(n root <x(real)> <n(integer)> <tolerance(real)>)
(catalan <index>)
.zeipevig xfr 'eta `le let a dpynzyzy jk oey`xa libxza mzazkyn root l n square n owez 'etd myy al eniy
(zixhnxt) ziaiqxewx dxciq .2a0(x), a1(x), a2(x), a3(x), . . .
'etd i'"r zxcben
(first-elem x)
1-1
(next-elem n x prev)
i'"r xcben xnn! `nbecl
first-elem(x) = 1
next-elem(n,x,prev) = x*n*prev.igkepd xai`d ly qwcpi`d `ed n xy`k
'etd z` eynn
(k-elem x first-elem-func next-elem-func) •ak z` dxifgn k ozpday 'et dxifgnd
(compute-k-sum x first-elem-func next-elem-func) •Σk
i=0ai z` dxifgn k ozpday 'et dxifgnd(compute-inf-sum x first-elem-func next-elem-func) •
dxcqdy egipd ) Σ∞i=0ai l aexiw dxifgn tolernace ozpday 'et dxifgnd( |an| → 0 zniwn
Σki=0ai dxifgn df dxwnae |ak|6tolerance 'etd ly dxivrd i`pz
(my-sin x tolerance) •`gqepd itl sin(x) z` zaxwnd
sin(x)=Σ∞n=0(−1)n· x2n+1
(2n+1)!
.mcewd sirqa xcbedy itk tolerancea yeniyde.mcewd sirqdn compute-inf-suma ynzydl mkilr
'etd z` eynn .3
(list-prefix list1 list2) •list2 ly `yix `id list1 m`d dxifgnd
(sub-list list1 list2) •list2 ly (zetivxa) dxciq-zz `id list1 m`d dxifgnd
.cala zeixtqn zexcq xear zexcben 'etd izy:`nbecl
(list-prefix ’(1 2 3 4 5 6 7 8) ’(1 2 3 4)) → #f
(sub-list ’(1 2 3 4 5 6 7 8) ’(1 2 3 4)) → #f
(list-prefix ’(1 2 3 4 5 6 7 8) ’(2 3 4 5)) → #f
(sub-list ’(1 2 3 4 5 6 7 8) ’(2 3 4)) → #f
(list-prefix ’(1 2 3 4) (1 2 3 4 5 6 7 8)) → #t
(sub-list ’(1 2 3 4) (1 2 3 4 5 6 7 8)) → #t
(list-prefix ’(2 3 4 5) (1 2 3 4 5 6 7 8)) → #f
1-2
(sub-list ’(3 4 5 6 7) (1 2 3 4 5 6 7 8)) → #t
(sub-list ’(1 2 5) ’(1 2 3 4 5 6 7 8)) → #f
mixai`d xtqn z` dxifgnd (satisfy predicate a1 a2 a3 . . .) 'etd z` eynn .4hwicxtd z` zeniiwnd hlwa
:`nbecl
.ynn iaeig hlwd m`d xifgnd pos hwicxt miiw ik dgpda(satisfy pos 1 2 3 4) → 4
(satisfy pos 1 -2 -3 4) → 2
(satisfy pos) → 0
(satisfy) → wcai `l
xcqa dniyxd z` dxifgne dniyx zlawnd (my-reverse list) 'etd z` eynn .5apf ziqxewxa zynzyne jetd
dxifgne zpienn zixtqn dniyx zlawnd (my-uniqe list) 'etd z` eynn .6mikixv mkpi`y al eniy) .zg` mrt weica riten xai` lk da zpienn dniyx
(oeind gztn lr xac gipdl
strings zniyxe miez zniyx zlawnd (maximizer list1 list2) 'etd z` eynn .7mr) dniyxdn miez ly ilniqwnd xtqnd z` llekd string d z` dxifgne
(case sensitive) .(zexfg:`nbecl (oey`xd z` exifgd minqwnn xtqn yie dxwna)
(maximizer ’(#\a #\b #\c) ’(”abc” ”ccc” ”ab cd” ”aaaa”) ) →”aaaa”
(maximizer ’(#\a #\b #\c) ’(”abc” ”ccc” ”ab cd” ”bb b” ”aa aa””aaaa”) ) → ”aa aa”
m`d xifgnd (substring string1 string2 <optional bool>) 'etd z` eynn .8.ipyd string d ly string -zz epid oey`xd string d
- lcgnd zxixa) (case sensitive) dpid dwicad m`d-ilpeivte`d xhnxtd( false
:`nbecl
(substring ”aaa” ”baaab” #t) → #t
(substring ”aaa” ”baaab” #f) → #t
(substring ”aAa” ”baaab” #t) → #f
(substring ”aAa” ”baaab” #f) → #t
(substring ”aAa” ”baaab”) → #t
1-3
strings xtqn lawnd (concatenate string1 string2 . . .) 'etd z` eynn .9.mze` xyxyne
:`nbecl
(concatenate ”aaa” ”baaab”) → ”aaabaaab”
(concatenate ”aaa” ”baaab” ”222”) → ”aaabaaab222”
(concatenate) → ”Empty string” *”Empty string” string d `ed hltd
: types.pdf xeryd mekq jezn .10
sum-nested-list(ls) is
case ls of
() ⇒ 0cons(x,ls’) ⇒
case x ofnumber ⇒ x + sum-nested-list(ls’)list ⇒ sum-nested-list(x) + sum-nested-list(ls’)
.l"pd cew-ece`qtd z` zynnnd (sum-nested-list list) 'etd z` eynn:`nbecl
(sum-nested-list ’(1 (2 3 a) (a b c) (a (b 6)))) → 12
1-4
14/04/2007 23:30 ilpeivwpet zepkz zpcq16/04/2007 00:17:oexg` oekcir
4 libxz
23:59 ,20/04/2007 ,iyiy mei:dybd
zipexhwl` yibdl yi libxzd z` ***hlwd zeiweg wecal jxev oi`
( leta eynzyd ) oekpl mi`ex mz` mda zenewna xfr 'pet exicbdoekpl mi`ex mz` mda zenewna ceriz etiqed
dzika epxcbdy itk lambda zxfra wx 'pet exicbd.mixg` mitirqa mieqn sirqa exicbzy 'peta ynzydl (ulnene) mi`yx mz`
.zeierh zellek `l zeiqiqad 'petdy `ceel ulnen dfk dxwnay oaen
:yibdl mkilr eze` TESTS zewicad uaew dpan ***(= (<func name> <argumentes>) <expected value>)
(= (my add 2 3 4) 9) :`nbecl
yibdl yiy mivaw ***
ex4.scm •TESTS •
README - ilpeivte` •
{ tar -cvf ex4.tar ex4.scm TESTS README } i'"r ex4.tar l mivaewn
'etd ly ex4.scm jezl yenind z` ewizrd
stream-nil (value) •stream-null? •stream-cons •stream-car •stream-cdr •
-nebx` dyely zlawnd 'et ozpda xy` (tri-uncurry f) 'etd z` eynn • .1.mihpnebx` dyely zlawnd dlewy 'et dxifgn 'cg` cg`' mihp
1-1
ly edylk xtqn zlawnd 'et ozpda xy` (uncurry f) 'etd z` eynn •zlawnd dlewy 'et dxifgn (cg` hpnebx` zegtl) 'cg` cg`' mihpnebx`
'zg` zaa' mihpnebx`d z`.efa ef ynzydl zeleki 'etd :dxrd
:`nbecl
(define muladd(lambda (x)
(lambda (y)(lambda (z)
(+ (* x y) z)))))
(((muladd 3) 4) 5) → 17
((tri-uncurry muladd) 3 4 5) → 17
((uncurry muladd) 3 4 5) → 17
(((uncurry muladd) 3 4) 5) → 17
((((uncurry muladd) 3) 4) 5) → 17
'etd z` eynn .2
(elem k stream) •(tail k stream) •
.dn`zda (llek) i- k d xai`dn lgd `tiqde i- k d xai`d z` zexifgnd(0 qwcpi`a oneqi oey`xd xai`d)
:`nbecl
(elem 3 naturals) → 3
(tail 4 naturals) → <4 , 5 , 6 , 7 , 8 , . . .>
'etd z` eynn .3
.lewy stream dxifgn dniyx ozpda xy` (list->stream list) •.dlewy dniyx dxifgn iteq stream ozpda xy` (stream->list stream) •
zxcq z` xifgn xtqn ozpida xy` (make-power-stream n) 'etd z` eynn .4.ely zewfgd
:`nbecl
(make-power-stream 3) → <3 , 9 , 27 , 81 , . . .>
(make-power-stream 2) → <2 , 4 , 8 , 16 , . . .>
(make-power-stream 1) → <1 , 1 , 1 , 1 , . . .>
(make-power-stream -1.5) → <-1.5 , 2.25 , -3.375 , 5.0625 , . . .>
'etd z` eynn .5
1-2
(stream-add stream stream) •(stream-convolution stream stream) •
b0, b1, b2, b3, . . . e a0, a1, a2, a3, . . . ozpda xy`kxai` xai` xcben mekqd
a0 + b0, a1 + b1, a2 + b2, a3 + b3, . . .
zxcben diveleapewdec0, c1, c2, c3, . . .
ck = Σki=0ai ∗ bk−i
< a0, a1, a2, a3, . . . >⇒ Σ∞i=0aixi zewfg ixeh :laewn xyt
.ltk dpid diveleapew df xyt zgzelrak eil` qgizp df dxwnae iteq zeidl mb leki streams dn cg` lk:al eniy
.miqt` dleky `tiq.ziteqpi` dxciq zeidl cinz dkixv d`vezd
:`nbecl
(stream-add (tail 3 naturals) (tail 5 naturals) → <8,10,12,14,. . .>
(stream-convolutiom <1,1,1,. . .> <1,-1> → <1,0,0,0,0. . .>
(stream-convolutiom <1,1,1,. . .> <1,-1,0,0,0> → <1,0,0,0,0. . .>
1-3
20/05/2007 23:45 ilpeivwpet zepkz zpcq24/05/2007 21:45:oexg` oekcir
5 libxz
23:59 ,06/06/2007 ,iriax mei:dybd
zipexhwl` yibdl yi libxzd z` ***
libxza miritend zenyl zedf zeybend zeivwpetd zenyy e`ce
hlwd zeiweg wecal jxev oi`
( leta eynzyd ) oekpl mi`ex mz` mda zenewna xfr 'pet exicbd
oekpl mi`ex mz` mda zenewna ceriz etiqed
dzika epxcbdy itk lambda zxfra wx 'pet exicbd
.mixg` mitirqa mieqn sirqa exicbzy 'peta ynzydl (ulnene) mi`yx mz`
.zeierh zellek `l zeiqiqad 'petdy `ceel ulnen dfk dxwnay oaen
apf ziqxewxa ynzydl hxtae xyt`d lkk zeliri zeivwpet aezkl mkilr ***.lirie xyt`y zenewna
:yibdl mkilr eze` TESTS zewicad uaew dpan ***
(= (<func name> <argumentes>) <expected value>)
(= (my add 2 3 4) 9) :`nbecl
yibdl yiy mivaw ***
ex5.scm •TESTS •
README - ilpeivte` •
{ tar -cvf ex5.tar ex5.scm TESTS README } i'"r ex5.tar l mivaewn
'etd ly ex5.scm jezl yenind z` ewizrd
stream-nil (value) •stream-null? •stream-cons •
stream-car •stream-cdr •
1-1
02/06 l 25/05 oiay reayd jldna x`ecl oinf did` `ly mkal zneyzl egw
(sum <int>) 'etd z` eynn .1
`ad ote`a f0, f1, f2, f3, . . . zeixpe` 'et zexfbp dpnn
f0 z` dxifgn a0 oneqiy hlw ozpida sum
fi+1 z` dxifgn ai+1 oneqiy ixtqn hlw ozpida fi
:symbol beqn mihlw lr fi sqepa
z` xifgn ’SUM hlwd lri∑
k=0
ak
ai z` xifgn ’LAST hlwd lr
`nbecl
(define a (sum 3))
(define b (a 3))
(define c (b 4))
(define d (c 5))
(define e (d 6))
(define f (e 7))
(define g (f 8))
(define f2 (d 7))
(define g2 (d 8))
(a ’SUM) → 3
(e ’SUM) → 21
(g ’SUM) → 36
(a ’LAST) → 3
(e ’LAST) → 6
(g ’LAST) → 8
(g2 ’SUM) → 23
(g2 ’LAST) → 8
(long-func1 f n) 'etd z` eynn .2
z` mihpnebx` ipy zlawnd 'ete n > 0 ozpda zaygnd
(f 0 (f 1 (. . . (f < n− 1 > n))))
(long-func2 f n) 'etd z` eynn
z` mihpnebx` ipy zlawnd 'ete n > 0 ozpda zaygnd
1-2
(f n (f < n− 1 > (. . . (f 1 0))))
ote`a z`vl zekixv zeivpetd j` zxcben dpi` n = 0 lr zeivwpetd zebdpzd.serl `le xceqn
`nbecl
(long-func1 (lambda (x y) (+ x y)) 6) → 21
(long-func2 (lambda (x y) (+ x y)) 6) → 21
(long-func1 (lambda (x y) (* x y)) 6) → 0
(long-func2 (lambda (x y) (* x y)) 6) → 0
(long-func1 (lambda (x y) (if (or (= x 0) (= y 0)) 1 (* x y))) 6) →720
(long-func2 (lambda (x y) (if (or (= x 0) (= y 0)) 1 (* x y))) 6) →720
(long-func1 (lambda (x y) (- x y)) 6) → 3
(long-func2 (lambda (x y) (- x y)) 6) → 3
(long-func1 (lambda (x y) (- x y)) 5) → -3
(long-func2 (lambda (x y) (- x y)) 5) → 3
(split-at <i:int> <x:stream of numbers/list of numbers>) 'etd z` eynn .3
ea pair dxifgnd (i > 0)
x ly `yixd epide i jxe`a list epid oey`xd xai`d
x ly `tiqd epide x enk qetihd eze`n epid ipyd xai`de
.wix zeidl leki x e x ly ekxe`n lecb zeidl leki i y al eniy
`nbecl
(car . . .) → <list1> izpeek <list1> . <list2>) oeniqa :dxrd
(cdr . . .) → <list2>
(split-at 2 ’(0 1 2 3 4 5)) → ((0 1) . (2 3 4 5))
(car (split-at 2 ’(0 1 2 3 4 5))) → (0 1)
(cdr (split-at 2 ’(0 1 2 3 4 5))) → (2 3 4 5)
(split-at 0 ’(0 1 2 3 4 5)) → (() . (0 1 2 3 4 5))
(split-at 9 ’(0 1 2 3 4 5)) → ((0 1 2 3 4 5) . ())
(split-at 2 naturals) → ((0 1) . < 2345... >)
(split-at 0 <1 1>) → (<> . <1 1>)
(split-at 9 <1 1>) → (<1 1> . <>)
(fib-generator) 'etd z` eynn .4
1, 1, 2, 3, 5, 8, . . . i'vpeait ixtqn z` llekd stream dxifgnd
.mcewd libxza mzynny stream-add a eynzyd :fnx
1-3
(partial-sums <stream:infinite/finite/empty>) 'etd z` eynn .5
stream zlawnd
.miiwlgd minekqd ly stream d z` dxifgne
`nbecl
(partial-sums <1,3,2,1,. . . >) → <1,4,6,7,. . . >
(partial-sums <1,1,1>) → <1,2,3>
(partial-sums <>) → <>
(is-length <stream/list> r) 'etd z` eynn .6
r `ed oey`xd hpnebx`d jxe` m`d dxifgnd (r > 0)
(stream-merge <list of infinite streams>) 'etd z` eynn .7
lk mda mipienn miixtqn miiteqpi` streams ly dwix `l dniyx zlawnd.zg` mrt xzeid lkl riten xtqn
eze` ly miletk miwzer llek `l `ed s`y cegi`d stream z` dxifgn 'etd.xtqnd
`nbecl
(stream-merge <2,4,6,8,. . . > <1,3,5,7,. . . >) → <1,2,3,4,5,. . . >
(stream-merge <2,4,6,8,. . . > <3,6,9,12,. . . >)→<2,3,4,6,8,9,10,12,. . . >
∀stream s (stream-merge s) → s
∀stream s (stream-merge s s) → s
∀stream s (stream-merge s s s) → s
1-4
16/06/2007 23:45 ilpeivwpet zepkz zpcq20/06/2007 22:30:oexg` oekcir
6 libxz
23:59 ,05/07/2007 ,iying mei:dybd
zipexhwl` yibdl yi libxzd z` ***
libxza miritend zenyl zedf zeybend zeivwpetd zenyy e`ce
hlwd zeiweg wecal jxev oi`
( leta eynzyd ) oekpl mi`ex mz` mda zenewna xfr 'pet exicbd
oekpl mi`ex mz` mda zenewna ceriz etiqed
dzika epxcbdy itk lambda zxfra wx 'pet exicbd
.mixg` mitirqa mieqn sirqa exicbzy 'peta ynzydl (ulnene) mi`yx mz`
.zeierh zellek `l zeiqiqad 'petdy `ceel ulnen dfk dxwnay oaen
apf ziqxewxa ynzydl hxtae xyt`d lkk zeliri zeivwpet aezkl mkilr ***.lirie xyt`y zenewna
:yibdl mkilr eze` TESTS zewicad uaew dpan ***
(= (<func name> <argumentes>) <expected value>)
(= (my add 2 3 4) 9) :`nbecl
yibdl yiy mivaw ***
ex6.scm •TESTS •
README - ilpeivte` •
{ tar -cvf ex6.tar ex6.scm TESTS README } i'"r ex6.tar l mivaewn
ex6.scm jezl 'etd ly yenind z` ewizrd
stream-nil (value) •stream-null? •stream-cons •
stream-car •stream-cdr •
1-1
(expr2func expression) 'etd z` eynn .1
xcqk mihpnebx`d xcq) eze` zaygnd 'et dxifgne zfexgna iehia lawnd(zfexgna drtedd
:zfexgnd qwhpiq
ziweg zfexgn `ed xtqn lk
dpzyn zbvine ziweg zfexgn `id ze` lk
xehxte`d oial miehiad-izz oia cigi geex weica
(expr1 + expr2)
(expr1 - expr2)
(expr1 * expr2)
`nbecl
((expr2func ”5”) ) → 5
((expr2func ”(5 + 13)”) ) → 18
((expr2func ”(x + 13)”) 1) → 14
((expr2func ”(x - y)”) 1 2) → -1
((expr2func ”(x - x)”) 1) → 0
((expr2func ”((z * z) - (y * y))”) 5 4) → 9
(add-monitor func) 'etd z` eynn .2
dpnqpy dycg 'et dxifgne (cg` hpnebx` zlawn xy` ixtqn ) f 'et zlawndf2 k
f enk dxifgn ixtqn hpnebx` mr d`xwida f2
cr d`xwpy minrtd xtqn z` dxifgn ′TIMES hpnebx`d mr d`xwida f2ixtqn hpnebx` mr dk
hpnebx` lr) dpexg`d d`vezd z` dxifgn ′LAST hpnebx`d mr d`xwida f2.ixtqn hpnebx` lr oiicr d`xwp `l m` 0 e` (ixtqn
`nbecl
(define a (add-monitor add3) )
(a ’TIMES) → 0
(a ’LAST) → 0
(a 53) → 56
(a ’TIMES) → 1
(a ’LAST) → 56
(a 5) → 8
(a ’TIMES) → 2
(a ’LAST) → 8
1-2
(a 3) → 6
(a 4) → 7
(a ’TIMES) → 4
(a ’LAST) → 7
(my-equal? a b) 'etd z` eynn .3
oia deynd
( mibevid lka) mixtqn •(case sensitive) zefexgn •
symbols •characters (case sensitive) •l'"pd ly (zeppewn) zeniyx •
#f xifgdl divwpetd lr qetih eze`n mpi` m` - hlw ihpnebx` bef lr
#t xifgdl divwpetd lr mieye qetih eze`n mpid m`
#f xifgdl divwpetd lr mipeye qetih eze`n mpid m`
zeaiyg mr) odixai` lka zeeye jxe`d eze`a od m'"m` zeey dpaygz zeniyx( xcql
xifgdl 'etd lr l'"pd miqetihd cg`n epi` zeniyxd ixai`n cg` e` hlwd m`”Unexpected type” zfexgnd z`
cala mineh` miqetih xear Scheme ly d`eeydd 'eta ynzydl mileki mz`.zeniyx xear `l j`
(uniform-list? <nested list>) 'etd z` eynn .4
dniyxd ly mineh`d mixa`d lk m` wx #t xifgne zppewn dniyx lawnd(dwix dniyxd e`) qetih eze`n
wecal yiy miqetih
boolean •mixtqn •zefexgn •symbols •
characters •
lke xcql zeaiyg oi` xnelk .zixtqn dveaw xear set qetihd z` eynn .5.zg` mrt riten xai`
'etd z` eynn
(empty-set)dwix dveaw dxifgn
1-3
(set-is-empty? <set>)
(set-is-in? <set> <element>)zekiiy wcead
(set-add <set> <element>)xai`d ztqed xg`l dveaw xifgnd
(set-union <set1> <set2>)cegi`d zveaw z` xifgnd
(set-intersect <set1> <set2>)jezigd zveaw z` xifgnd
(set-length <set>)dveawd lceb z` xifgnd
(set-map <set> <unary-func>)dpezpd dveawd lr divwpetd zpenz z` xifgnd
zlawnd (stream-zip <zipping-func> <stream1> <stream2>) 'etd z` eynn .6. stream dxifgne streams ipy
.xzei xvwd jxe`a epid hltd if` xzei xvw mihlwdn cg` m`
mihlwd ly i d mihpnl`d lr 'etd zlrtdn lawzn hltd ly i d hpnl`d
`nbecl
(stream-zip cons primes naturals) ⇒< (1.1)(2.2)(3.3)(5.4)(7.5)... >
1-4