1 libxz - notes-heavenstorage.notes-heaven.com/notesheaven/archive/67580_pllab/...01/03/2007 23:00...

20
01/03/2007 23:00 03/03/2007 22:00 09/03/2007 TESTS (= (<func name><argumentes>) <expected value>) (= (my add 2 3 4) 9) TESTS ex1.scm README { tar -cvf ex1.tar ex1.scm TESTS README } ex1.tar a 1 =1 a 2 =1 a n =a n-1 +a n-2 (fibon <index>) n (fibonSum <n>) (my power <x(real)><n(integer - might be negative)>) x n (n square <x(real)><n(integer)><tolerance(real)>) my sqrt n x a k = (n-1)a k-1 + x (a k-1 ) n-1 n n x real

Upload: others

Post on 20-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 2: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 3: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 4: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 5: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 6: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 7: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 8: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 9: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 10: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 11: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 12: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 13: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 14: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 15: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 16: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 17: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

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

Page 18: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 19: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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

Page 20: 1 libxz - Notes-Heavenstorage.notes-heaven.com/notesheaven/Archive/67580_PLLAB/...01/03/2007 23:00 ilpeivwpet zepkz zpcq 03/03/2007 22:00:oexg` oekcir 1 libxz qex zxibq zry , 09/03/2007

(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