2024-04-30 19:33:52 +02:00
<?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2024-05-29 21:54:05 +02:00
<!-- 2024 - 05 - 29 Wed 21:50 -->
2024-04-30 19:33:52 +02:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > Structure and Interpretation of Computer Programs< / title >
< meta name = "author" content = "Lio Novelli" / >
< meta name = "generator" content = "Org Mode" / >
< style >
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
< / style >
< / head >
< body >
< div id = "content" class = "content" >
< h1 class = "title" > Structure and Interpretation of Computer Programs< / h1 >
< div id = "table-of-contents" role = "doc-toc" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" role = "doc-toc" >
< ul >
2024-05-29 21:54:05 +02:00
< li > < a href = "#orgc29ca22" > 1. Foreword and Preface< / a > < / li >
< li > < a href = "#org81536d5" > 2. 1. Grajenje abstrakcij s procedurami< / a >
2024-04-30 19:33:52 +02:00
< ul >
2024-05-29 21:54:05 +02:00
< li > < a href = "#org09ba581" > 2.1. Elementi programiranja< / a > < / li >
< li > < a href = "#org79ae90c" > 2.2. Izvajanje kombinacij(e)< / a > < / li >
< li > < a href = "#org4bf06e2" > 2.3. 1.1.4 Sestavljene procedure< / a > < / li >
< li > < a href = "#orgf96a231" > 2.4. 1.1.5 Substitucijski model za izvajanje procedur< / a > < / li >
< li > < a href = "#org2356eae" > 2.5. meta< / a >
2024-04-30 19:33:52 +02:00
< ul >
2024-05-29 21:54:05 +02:00
< li > < a href = "#org1a875a1" > 2.5.1. video lekcije< / a > < / li >
2024-04-30 19:33:52 +02:00
< / ul >
< / li >
2024-05-29 21:54:05 +02:00
< li > < a href = "#orge24b089" > 2.6. vaje< / a >
2024-04-30 19:33:52 +02:00
< ul >
2024-05-29 21:54:05 +02:00
< li > < a href = "#org9124e61" > 2.6.1. 1.3< / a > < / li >
< li > < a href = "#orgfb06a20" > 2.6.2. 1.5< / a > < / li >
< li > < a href = "#orgb4abc50" > 2.6.3. 1.6< / a > < / li >
< li > < a href = "#org19c25b3" > 2.6.4. 1.7< / a > < / li >
< li > < a href = "#orgd223612" > 2.6.5. 1.8< / a > < / li >
2024-04-30 19:33:52 +02:00
< / ul >
< / li >
2024-05-29 21:54:05 +02:00
< li > < a href = "#org73c888b" > 2.7. 1.1.8 Procedure kot crne skatle abstrakcij< / a > < / li >
< li > < a href = "#org95ea2ee" > 2.8. 1.2.2 Drevesna rekurzija< / a > < / li >
< li > < a href = "#org1358990" > 2.9. 1.2.3 Redi rasti< / a > < / li >
< li > < a href = "#org18b4f25" > 2.10. 1.2.4 Eksponentna funkcija< / a > < / li >
< li > < a href = "#orga719e3c" > 2.11. 1.2.5 Najvecji skupni deljitel< / a > < / li >
< li > < a href = "#org303b7e7" > 2.12. 1.2.6 Primer: Iskanje prastevil< / a > < / li >
< li > < a href = "#org308cc01" > 2.13. 1.3 Sestavljanje abstrakcij s procedurami visjega reda< / a > < / li >
< li > < a href = "#orgc7ad7a4" > 2.14. 1.3.1 Procedure kot argumenti< / a > < / li >
< li > < a href = "#org920469a" > 2.15. 1.3.2 Sestavljanje procedur z < code > Lambda< / code > < / a > < / li >
< li > < a href = "#orgb365f70" > 2.16. 1.3.3 Procedure kot splosne metode< / a > < / li >
< li > < a href = "#orge72480c" > 2.17. 1.3.4 Procedure kot vrnjene vrednosti< / a > < / li >
2024-04-30 19:33:52 +02:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orgc29ca22" class = "outline-2" >
< h2 id = "orgc29ca22" > < span class = "section-number-2" > 1.< / span > Foreword and Preface< / h2 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-2" id = "text-1" >
< blockquote >
< p >
Lisp je preživeli, v uporabi je že "polovico stoletja".
< / p >
< / blockquote >
< blockquote >
< p >
The discretionary exportable functionality entrusted to the individual Lisp programmer
is more than an order of magniture greater than that to be found within Pascal enterprises.
< / p >
< / blockquote >
< blockquote >
< p >
Želimo vzpostaviti idejo, da programski jezik ni samo način, da računalnik izvaja operacije,
ampak da je predvsem nov formalni medij za izražanje idej o metodologiji. Zato morajo biti
programi napisani predvsem zato, da jih ljudje berejo, in slučajno, da jih izvajajo računalniki.
< / p >
< p >
Bistvena tema ni sintaksa določenih struktur v programskem jeziku, niti … , temveč tehnike
nadzora intelektualne kompleksnosti veliki programskih sistemov.
< / p >
< / blockquote >
< blockquote >
< p >
Naš pristop k temi izvira iz prepričanja, da "computer science" ni znanost in da ima njen
pomen bolj malo opraviti z računalniki. Računalniška revolucija je revolucija v načinu
mišljenja in izražanju idej. Bistvo teh sprememb najbolše opiše pojem
< span class = "underline" > proceduralne epistemologije< / span > , ki se ukvarja s strukturo vednosti z imperativnega stališča
za razliko od klasične matematike, ki je bolj deklerativna. Matematika postavi okvir za
natančno spoprijemanje s pojmovanjem "kaj je". Računanje pa ponudi okvir za natančno
ukvarjanje s pojmovanjem "kako".
< / p >
< / blockquote >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org81536d5" class = "outline-2" >
< h2 id = "org81536d5" > < span class = "section-number-2" > 2.< / span > 1. Grajenje abstrakcij s procedurami< / h2 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-2" id = "text-2" >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org09ba581" class = "outline-3" >
< h3 id = "org09ba581" > < span class = "section-number-3" > 2.1.< / span > Elementi programiranja< / h3 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-3" id = "text-2-1" >
< dl class = "org-dl" >
< dt > Primitivni izrazi< / dt > < dd > predstavtljajo najpreprostejše gradnike (entitete)
programskega jezika< / dd >
< dt > Načini kombinacije,< / dt > < dd > s katerimi so sestavljeni elementi zgrajeni iz
preprostejših< / dd >
< dt > Načini abstrakcije,< / dt > < dd > s katerimi so lahko sestavljeni elementi poimenovani in
omogočajo upravljanje z njimii kot enotami< / dd >
< / dl >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org79ae90c" class = "outline-3" >
< h3 id = "org79ae90c" > < span class = "section-number-3" > 2.2.< / span > Izvajanje kombinacij(e)< / h3 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-3" id = "text-2-2" >
< p >
Postopek za izvajanje kombinacij:
< / p >
< ol class = "org-ol" >
< li > Izvedi podizraz kombinacije.< / li >
< li > Uporabi/uveljavi proceduro, ki je najbolje levi podizraz (operator) z
argumenti, ki so vrednosti drugih podizrazov (operandi).< / li >
< / ol >
< p >
Postopek evalvacije je rekurziven, saj drugi korak v sebi vključuje prvega,
oziroma vključuje svojo definicijo.
< / p >
< p >
Tako se zgradi akumulacijsko drevo. Na koncu vedno prideš do točke, ko izvajaš
primitivne izraze, ki so:
< / p >
< ul class = "org-ul" >
< li > vrednosti numeričnih števk, ki jo označujejo.< / li >
< li > vrednosti vgrajenih operatorjev so strojni ukazi sekvenc, ki izvedejo te
operacije.< / li >
< li > vrednosti drugih imen so objekti asociirani s temi imeni v okolju.< / li >
< / ul >
< p >
Drugo pravilo je poseben primer tretjega pravila. Simboli + in * so tudi
vključeni v globalno okolje in so asociirani s strojnimi ukazi, ki so njihove
vrednosti. < b > Pomembno je prepoznati vlogo okolja pri določanju pomena simbolov v
izrazih.< / b >
< / p >
< p >
To pravilo se ne nanaša na < span class = "underline" > posebne oblike (special forms)< / span > . < code > define< / code > je posebna
oblika.
< / p >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org4bf06e2" class = "outline-3" >
< h3 id = "org4bf06e2" > < span class = "section-number-3" > 2.3.< / span > 1.1.4 Sestavljene procedure< / h3 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-3" id = "text-2-3" >
< ul class = "org-ul" >
< li > Številke in aritmetične operacije so primitivni podatki in procedure.< / li >
< li > Gnezdenje kombinacij omogoča način za združevanje operacij.< / li >
< li > Definicije, ki asociirajo imena z vrednostmi omogočajo omejene načine
abstrakcije.< / li >
< / ul >
< p >
< code > (define (square x) (* x x))< / code >
< / p >
< p >
< code > (define square (lambda (x) (* x x)))< / code >
< / p >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orgf96a231" class = "outline-3" >
< h3 id = "orgf96a231" > < span class = "section-number-3" > 2.4.< / span > 1.1.5 Substitucijski model za izvajanje procedur< / h3 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-3" id = "text-2-4" >
< p >
Za izvajanje sestavljenih procedur z argumenti, izvedeš telo procedure z vsakim
formalnim parametrom, ki ga nadomestiš s pripadajočim argumentom.
< / p >
< p >
< span class = "underline" > ergh, tukaj se zapletam s slovenskimi prevodi< / span >
< / p >
< p >
< span class = "underline" > kaj je application in kaj evaluation?< / span >
< / p >
< p >
Načini, na katere deluje interpreter (prevajalnik):
< / p >
< dl class = "org-dl" >
< dt > Aplikativni vrstni red< / dt > < dd > Najprej evalviraj operator in operande, potem pa
izvedi proizvedeno proceduro s pridobljenimi argumenti.< / dd >
< dt > Normalni vrstni red< / dt > < dd > Ne izvajaj operandov dokler njihove vrednost niso
potrebne. Najprej zamenjaj izraze operandov s parametri, dokler ne pride do
izraza, ki vsebuje zgolj primitivne izraze in potem izvedi (vso) evalvacijo.< / dd >
< / dl >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org2356eae" class = "outline-3" >
< h3 id = "org2356eae" > < span class = "section-number-3" > 2.5.< / span > meta< / h3 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-3" id = "text-2-5" >
< p >
Linki:
< a href = "https://develop.spacemacs.org/layers/+lang/scheme/README.html" > https://develop.spacemacs.org/layers/+lang/scheme/README.html< / a >
< a href = "https://www.nongnu.org/geiser/" > https://www.nongnu.org/geiser/< / a >
< a href = "https://www.gnu.org/software/guile/learn/" > https://www.gnu.org/software/guile/learn/< / a >
< a href = "https://spritely.institute/static/papers/scheme-primer.html#introduction" > https://spritely.institute/static/papers/scheme-primer.html#introduction< / a >
< / p >
< p >
Kako nastavit spacemacs, in malo o guile-u.
< / p >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org1a875a1" class = "outline-4" >
< h4 id = "org1a875a1" > < span class = "section-number-4" > 2.5.1.< / span > video lekcije< / h4 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-4" id = "text-2-5-1" >
< p >
< a href = "https://yewtu.be/channel/UCEBb1b_L6zDS3xTUrIALZOw" > https://yewtu.be/channel/UCEBb1b_L6zDS3xTUrIALZOw< / a > (6.001 SICP: Structure and Interpretation of Computer Programs (2004))
< a href = "https://yewtu.be/playlist?list=PL7BcsI5ueSNFPCEisbaoQ0kXIDX9rR5FF" > https://yewtu.be/playlist?list=PL7BcsI5ueSNFPCEisbaoQ0kXIDX9rR5FF< / a > (MIT 6.001 Structure and Interpretation, 1986)
< / p >
< / div >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orge24b089" class = "outline-3" >
< h3 id = "orge24b089" > < span class = "section-number-3" > 2.6.< / span > vaje< / h3 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-3" id = "text-2-6" >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org9124e61" class = "outline-4" >
< h4 id = "org9124e61" > < span class = "section-number-4" > 2.6.1.< / span > 1.3< / h4 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-4" id = "text-2-6-1" >
< / div >
< ol class = "org-ol" >
2024-05-29 21:54:05 +02:00
< li > < a id = "org101bff2" > < / a > najprej narobe< br / >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-5" id = "text-2-6-1-1" >
< p >
Define a procedure that takes three numbers as arguments and returns the sum of
the squares of the two larger numbers.
< / p >
< div class = "org-src-container" >
2024-05-29 21:54:05 +02:00
< pre class = "src src-scheme" > < span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > sum-of-large< / span > x y z< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > +
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #67b11d;" > (< / span > > x y< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > * x x< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > * y y< span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #67b11d;" > (< / span > > y z< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > * y y< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > * z z< span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > sum-of-large < span style = "color: #a45bad;" > 3< / span > < span style = "color: #a45bad;" > 8< / span > < span style = "color: #a45bad;" > 5< / span > < span style = "color: #4f97d7;" > )< / span >
2024-04-30 19:33:52 +02:00
< / pre >
< / div >
< div class = "org-src-container" >
2024-05-29 21:54:05 +02:00
< pre class = "src src-scheme" > < span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > sum-of-larger< / span > x y z< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > let*< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > s < span style = "color: #b1951d;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > lambda< / span > < span style = "color: #4f97d7;" > (< / span > a< span style = "color: #4f97d7;" > )< / span > < span style = "color: #4f97d7;" > (< / span > * a a< span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #67b11d;" > (< / span > sl < span style = "color: #b1951d;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > lambda< / span > < span style = "color: #4f97d7;" > (< / span > b c< span style = "color: #4f97d7;" > )< / span > < span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #bc6ec5;" > (< / span > > b c< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > s b< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > s c< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
2024-04-30 19:33:52 +02:00
< span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > + < span style = "color: #67b11d;" > (< / span > sl x y< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > sl y z< span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
2024-05-29 21:54:05 +02:00
< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > sum-of-larger < span style = "color: #a45bad;" > 3< / span > < span style = "color: #a45bad;" > 8< / span > < span style = "color: #a45bad;" > 5< / span > < span style = "color: #4f97d7;" > )< / span >
2024-04-30 19:33:52 +02:00
< / pre >
< / div >
< / div >
< / li >
2024-05-29 21:54:05 +02:00
< li > < a id = "orge6e316f" > < / a > pravilno< br / >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-5" id = "text-2-6-1-2" >
< div class = "org-src-container" >
2024-05-29 21:54:05 +02:00
< pre class = "src src-scheme" > < span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > sum-squares-of-larger< / span > x y z< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #2d9574;" > (< / span > > x y< span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #67b11d;" > (< / span > > y z< span style = "color: #67b11d;" > )< / span >
2024-04-30 19:33:52 +02:00
< span style = "color: #67b11d;" > (< / span > + < span style = "color: #b1951d;" > (< / span > * x x< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > * y y< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #67b11d;" > (< / span > + < span style = "color: #b1951d;" > (< / span > * x x< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > * z z< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #2d9574;" > )< / span >
2024-05-29 21:54:05 +02:00
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #67b11d;" > (< / span > > x z< span style = "color: #67b11d;" > )< / span >
2024-04-30 19:33:52 +02:00
< span style = "color: #67b11d;" > (< / span > + < span style = "color: #b1951d;" > (< / span > * y y< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > * x x< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #67b11d;" > (< / span > + < span style = "color: #b1951d;" > (< / span > * y y< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > * z z< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #2d9574;" > )< / span >
2024-05-29 21:54:05 +02:00
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > sum-squares-of-larger < span style = "color: #a45bad;" > 9< / span > < span style = "color: #a45bad;" > 10< / span > < span style = "color: #a45bad;" > 8< / span > < span style = "color: #4f97d7;" > )< / span >
2024-04-30 19:33:52 +02:00
< / pre >
< / div >
< / div >
< / li >
< / ol >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orgfb06a20" class = "outline-4" >
< h4 id = "orgfb06a20" > < span class = "section-number-4" > 2.6.2.< / span > 1.5< / h4 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-4" id = "text-2-6-2" >
< p >
Aplikativni vrstni red: pade takoj v neskoncno zanko.
Normalni vrstni red: izvrsi test in pride v if, ki ne izvrsi drugega dela.
< / p >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orgb4abc50" class = "outline-4" >
< h4 id = "orgb4abc50" > < span class = "section-number-4" > 2.6.3.< / span > 1.6< / h4 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-4" id = "text-2-6-3" >
< p >
< a href = "sqrt-newton.scm" > sqrt-newton.scm< / a >
< / p >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org19c25b3" class = "outline-4" >
< h4 id = "org19c25b3" > < span class = "section-number-4" > 2.6.4.< / span > 1.7< / h4 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-4" id = "text-2-6-4" >
< ul class = "org-ul" >
< li > < code > good-enough?< / code > ni vredu za iskanje korenov majhnih stevil.< / li >
< li > pravtako za zelo velika stevila< / li >
< li > napisi alternativno < code > good-enough?< / code > proceduro, ki bo gledala, kdaj so spremembe
dovolj majhne in takrat prekini funkcijo.< / li >
< / ul >
< p >
// Poglej v sqrt-newton.scm
< / p >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orgd223612" class = "outline-4" >
< h4 id = "orgd223612" > < span class = "section-number-4" > 2.6.5.< / span > 1.8< / h4 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-4" id = "text-2-6-5" >
< p >
// Glej v sqrt-newton.sqm
< / p >
< / div >
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org73c888b" class = "outline-3" >
< h3 id = "org73c888b" > < span class = "section-number-3" > 2.7.< / span > 1.1.8 Procedure kot crne skatle abstrakcij< / h3 >
2024-04-30 19:33:52 +02:00
< div class = "outline-text-3" id = "text-2-7" >
< ul class = "org-ul" >
< li > block structure< / li >
< li > lexical scoping< / li >
< / ul >
< / div >
< / div >
2024-05-16 22:33:30 +02:00
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org95ea2ee" class = "outline-3" >
< h3 id = "org95ea2ee" > < span class = "section-number-3" > 2.8.< / span > 1.2.2 Drevesna rekurzija< / h3 >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org1358990" class = "outline-3" >
< h3 id = "org1358990" > < span class = "section-number-3" > 2.9.< / span > 1.2.3 Redi rasti< / h3 >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org18b4f25" class = "outline-3" >
< h3 id = "org18b4f25" > < span class = "section-number-3" > 2.10.< / span > 1.2.4 Eksponentna funkcija< / h3 >
< div class = "outline-text-3" id = "text-2-10" >
< p >
#name: exponent
< / p >
< div class = "org-src-container" >
< pre class = "src src-scheme" > < span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > O(n) korakov in O(n) prostora< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > expt< / span > b n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #2d9574;" > (< / span > = n < span style = "color: #a45bad;" > 0< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #a45bad;" > 1< / span >
< span style = "color: #2d9574;" > (< / span > * b < span style = "color: #67b11d;" > (< / span > expt b < span style = "color: #b1951d;" > (< / span > - n < span style = "color: #a45bad;" > 1< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > expt-i< / span > b n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > expt-iter b n < span style = "color: #a45bad;" > 1< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > O(n) korakov O(1) prostor< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > expt-iter< / span > b cnt prod< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #2d9574;" > (< / span > = cnt < span style = "color: #a45bad;" > 0< / span > < span style = "color: #2d9574;" > )< / span >
prod
< span style = "color: #2d9574;" > (< / span > expt-iter b < span style = "color: #67b11d;" > (< / span > - cnt < span style = "color: #a45bad;" > 1< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > * b prod< span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > fast-expt< / span > b n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > cond< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > = n < span style = "color: #a45bad;" > 0< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #a45bad;" > 1< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > even? n< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > square < span style = "color: #b1951d;" > (< / span > fast-expt b < span style = "color: #4f97d7;" > (< / span > / n < span style = "color: #a45bad;" > 2< / span > < span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > else< / span > < span style = "color: #67b11d;" > (< / span > * b < span style = "color: #b1951d;" > (< / span > fast-expt b < span style = "color: #4f97d7;" > (< / span > - n < span style = "color: #a45bad;" > 1< / span > < span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > even?< / span > n< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > = < span style = "color: #2d9574;" > (< / span > remainder n < span style = "color: #a45bad;" > 2< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #a45bad;" > 0< / span > < span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > square< / span > x< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > * x x< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > 1.16< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > successive squaring (fast-expt) but with iteration.< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > transformation (* a (expt b n)) constant< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > fast-expt-i< / span > b n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > fast-expt-iter b n < span style = "color: #a45bad;" > 1< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > fast-expt-iter< / span > b n a< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > cond< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > = n < span style = "color: #a45bad;" > 0< / span > < span style = "color: #67b11d;" > )< / span > a< span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > even? n< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > fast-expt-iter < span style = "color: #b1951d;" > (< / span > square b< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > / n < span style = "color: #a45bad;" > 2< / span > < span style = "color: #b1951d;" > )< / span > a< span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > else< / span > < span style = "color: #67b11d;" > (< / span > fast-expt-iter b < span style = "color: #b1951d;" > (< / span > - n < span style = "color: #a45bad;" > 1< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > * a b< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > I'm not sure why this works. I was just guessing.< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > excersize 1.17< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > slow-multi< / span > a b< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #2d9574;" > (< / span > = b < span style = "color: #a45bad;" > 0< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #a45bad;" > 0< / span >
< span style = "color: #2d9574;" > (< / span > + a < span style = "color: #67b11d;" > (< / span > * a < span style = "color: #b1951d;" > (< / span > - b < span style = "color: #a45bad;" > 1< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > halve< / span > x< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > / x < span style = "color: #a45bad;" > 2< / span > < span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > double< / span > x< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > * x < span style = "color: #a45bad;" > 2< / span > < span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > fast-multi< / span > a b< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > cond< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > = b < span style = "color: #a45bad;" > 0< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #a45bad;" > 0< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > even? b< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > double < span style = "color: #b1951d;" > (< / span > fast-multi a < span style = "color: #4f97d7;" > (< / span > halve b< span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > else< / span > < span style = "color: #67b11d;" > (< / span > + a < span style = "color: #b1951d;" > (< / span > fast-multi a < span style = "color: #4f97d7;" > (< / span > - b < span style = "color: #a45bad;" > 1< / span > < span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > excersize 1.18< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > fast-multi-i< / span > a b< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > fast-multi-iter a b < span style = "color: #a45bad;" > 0< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > fast-multi-iter< / span > a b s< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > cond< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > = b < span style = "color: #a45bad;" > 0< / span > < span style = "color: #67b11d;" > )< / span > s< span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #67b11d;" > (< / span > even? b< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > fast-multi-iter < span style = "color: #b1951d;" > (< / span > double a< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > halve b< span style = "color: #b1951d;" > )< / span > s< span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > else< / span > < span style = "color: #67b11d;" > (< / span > fast-multi-iter a < span style = "color: #b1951d;" > (< / span > - b < span style = "color: #a45bad;" > 1< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > + s a< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< / pre >
< / div >
< / div >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orga719e3c" class = "outline-3" >
< h3 id = "orga719e3c" > < span class = "section-number-3" > 2.11.< / span > 1.2.5 Najvecji skupni deljitel< / h3 >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org303b7e7" class = "outline-3" >
< h3 id = "org303b7e7" > < span class = "section-number-3" > 2.12.< / span > 1.2.6 Primer: Iskanje prastevil< / h3 >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-org308cc01" class = "outline-3" >
< h3 id = "org308cc01" > < span class = "section-number-3" > 2.13.< / span > 1.3 Sestavljanje abstrakcij s procedurami visjega reda< / h3 >
< div class = "outline-text-3" id = "text-2-13" >
< p >
Procedure, ki spreminjajo druge procedure se imenujejo < b > procedure višjega reda< / b > .
< / p >
< / div >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orgc7ad7a4" class = "outline-3" >
< h3 id = "orgc7ad7a4" > < span class = "section-number-3" > 2.14.< / span > 1.3.1 Procedure kot argumenti< / h3 >
2024-05-16 22:33:30 +02:00
< div class = "outline-text-3" id = "text-2-14" >
2024-05-29 21:54:05 +02:00
< p >
Primer vsote.
< / p >
< div class = "org-src-container" >
< pre class = "src src-guile" >
< / pre >
< / div >
2024-05-16 22:33:30 +02:00
< p >
//exercise 1.29
#name: simpson
< / p >
< div class = "org-src-container" >
2024-05-29 21:54:05 +02:00
< pre class = "src src-scheme" > < span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > sum< / span > term a next b< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #2d9574;" > (< / span > > a b< span style = "color: #2d9574;" > )< / span >
< span style = "color: #a45bad;" > 0< / span >
2024-05-16 22:33:30 +02:00
< span style = "color: #2d9574;" > (< / span > + < span style = "color: #67b11d;" > (< / span > term a< span style = "color: #67b11d;" > )< / span >
< span style = "color: #67b11d;" > (< / span > sum term < span style = "color: #b1951d;" > (< / span > next a< span style = "color: #b1951d;" > )< / span > next b< span style = "color: #67b11d;" > )< / span >
< span style = "color: #2d9574;" > )< / span >
2024-05-29 21:54:05 +02:00
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > integral< / span > f a b dx< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > add-dx< / span > x< span style = "color: #2d9574;" > )< / span > < span style = "color: #2d9574;" > (< / span > + x dx< span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > * < span style = "color: #2d9574;" > (< / span > sum f < span style = "color: #67b11d;" > (< / span > + a < span style = "color: #b1951d;" > (< / span > / dx < span style = "color: #a45bad;" > 2.0< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > add-dx b< span style = "color: #2d9574;" > )< / span > dx< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > sum-s< / span > term a next b fact< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > fact is altering between 4 and 2< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > check-fact< / span > fact< span style = "color: #2d9574;" > )< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #67b11d;" > (< / span > = fact < span style = "color: #a45bad;" > 4< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #a45bad;" > 4< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #2d9574;" > (< / span > > a b< span style = "color: #2d9574;" > )< / span >
< span style = "color: #a45bad;" > 0< / span >
2024-05-16 22:33:30 +02:00
< span style = "color: #2d9574;" > (< / span > + < span style = "color: #67b11d;" > (< / span > * fact < span style = "color: #b1951d;" > (< / span > term a< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #67b11d;" > (< / span > sum-s term < span style = "color: #b1951d;" > (< / span > next a< span style = "color: #b1951d;" > )< / span > next b < span style = "color: #b1951d;" > (< / span > check-fact fact< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #2d9574;" > )< / span >
2024-05-29 21:54:05 +02:00
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > simpson< / span > f a b dx< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > add-dx< / span > x< span style = "color: #2d9574;" > )< / span > < span style = "color: #2d9574;" > (< / span > + x dx< span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > * < span style = "color: #2d9574;" > (< / span > + < span style = "color: #67b11d;" > (< / span > f a< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > f b< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > sum-s f < span style = "color: #b1951d;" > (< / span > add-dx a< span style = "color: #b1951d;" > )< / span > add-dx < span style = "color: #b1951d;" > (< / span > - b dx< span style = "color: #b1951d;" > )< / span > < span style = "color: #a45bad;" > 4< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #2d9574;" > (< / span > / dx < span style = "color: #a45bad;" > 3.0< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > simpson-gizmo< / span > f a b dx< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > add-dxdx< / span > x< span style = "color: #2d9574;" > )< / span > < span style = "color: #2d9574;" > (< / span > + x dx dx< span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > * < span style = "color: #2d9574;" > (< / span > +
< span style = "color: #67b11d;" > (< / span > * < span style = "color: #a45bad;" > 4< / span > < span style = "color: #b1951d;" > (< / span > sum f < span style = "color: #4f97d7;" > (< / span > + a dx< span style = "color: #4f97d7;" > )< / span > add-dxdx b< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #67b11d;" > (< / span > * < span style = "color: #a45bad;" > 2< / span > < span style = "color: #b1951d;" > (< / span > sum f a add-dxdx b< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
2024-05-16 22:33:30 +02:00
< span style = "color: #67b11d;" > (< / span > - < span style = "color: #b1951d;" > (< / span > f a< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #67b11d;" > (< / span > - < span style = "color: #b1951d;" > (< / span > f b< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
2024-05-29 21:54:05 +02:00
< span style = "color: #2d9574;" > )< / span > < span style = "color: #2d9574;" > (< / span > / dx < span style = "color: #a45bad;" > 3.0< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > cube< / span > x< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > * x x x< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > list
< span style = "color: #bc6ec5;" > (< / span > integral cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #a45bad;" > 0.01< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > integral cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #a45bad;" > 0.001< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > simpson cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #a45bad;" > 0.01< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > simpson cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #a45bad;" > 0.001< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > simpson cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #2d9574;" > (< / span > / < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 1000< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > simpson-gizmo cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #a45bad;" > 0.01< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > simpson-gizmo cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #2d9574;" > (< / span > / < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 10000< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > simpson-gizmo cube < span style = "color: #a45bad;" > 1< / span > < span style = "color: #a45bad;" > 2< / span > < span style = "color: #a45bad;" > 0.00001< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
2024-05-16 22:33:30 +02:00
< / pre >
< / div >
< p >
// exercise 1.30
< / p >
< div class = "org-src-container" >
2024-05-29 21:54:05 +02:00
< pre class = "src src-scheme" > < span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > sum-i< / span > term a next b< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > iter< / span > a result< span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #67b11d;" > (< / span > > a b< span style = "color: #67b11d;" > )< / span >
2024-05-16 22:33:30 +02:00
result
2024-05-29 21:54:05 +02:00
< span style = "color: #67b11d;" > (< / span > iter < span style = "color: #b1951d;" > (< / span > next a< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > + result < span style = "color: #4f97d7;" > (< / span > term a< span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
2024-05-16 22:33:30 +02:00
< span style = "color: #2d9574;" > )< / span >
2024-05-29 21:54:05 +02:00
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > iter a < span style = "color: #a45bad;" > 0< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
2024-05-16 22:33:30 +02:00
< / pre >
< / div >
2024-05-29 21:54:05 +02:00
< p >
// excercise 1.30, 1.31. 1.32
< / p >
< div class = "org-src-container" >
< pre class = "src src-scheme" > < span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > Analogno napisi produkt kot vsoto.< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > Pokazi kako izgleda fakulteta.< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > Aproksimacija pi/4 = 2/3*4/3*4/5*6/5*6/7*8/7...< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > produkt-r< / span > term a next b< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > a, b sta spodnja in zgornja meja< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #2d9574;" > (< / span > > a b< span style = "color: #2d9574;" > )< / span >
< span style = "color: #a45bad;" > 1< / span >
< span style = "color: #2d9574;" > (< / span > * < span style = "color: #67b11d;" > (< / span > term a< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > produkt-r term < span style = "color: #b1951d;" > (< / span > next a< span style = "color: #b1951d;" > )< / span > next b< span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > fakulteta-p< / span > n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > produkt-r < span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > lambda< / span > < span style = "color: #67b11d;" > (< / span > x< span style = "color: #67b11d;" > )< / span > x< span style = "color: #2d9574;" > )< / span > < span style = "color: #a45bad;" > 1< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > lambda< / span > < span style = "color: #67b11d;" > (< / span > x< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > + x < span style = "color: #a45bad;" > 1< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span > n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > pribl-pi< / span > n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > produkt-r < span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > lambda< / span > < span style = "color: #67b11d;" > (< / span > a< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > / < span style = "color: #b1951d;" > (< / span > * < span style = "color: #4f97d7;" > (< / span > - a < span style = "color: #a45bad;" > 1.0< / span > < span style = "color: #4f97d7;" > )< / span > < span style = "color: #4f97d7;" > (< / span > + a < span style = "color: #a45bad;" > 1.0< / span > < span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > * a a< span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
< span style = "color: #a45bad;" > 3.0< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > lambda< / span > < span style = "color: #67b11d;" > (< / span > x< span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > + x < span style = "color: #a45bad;" > 2.0< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span >
n
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > gizmo se je spomnil resitve - dva produkta (zgornji in spodnji)< / span >
< span style = "color: #2aa1ae; background-color: #292e34;" > ;; < / span > < span style = "color: #2aa1ae; background-color: #292e34;" > iterativni produkt-i< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > produkt-i< / span > term a next b< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #2d9574;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > iter-p< / span > a result< span style = "color: #2d9574;" > )< / span >
< span style = "color: #2d9574;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > if< / span > < span style = "color: #67b11d;" > (< / span > > a b< span style = "color: #67b11d;" > )< / span >
result
< span style = "color: #67b11d;" > (< / span > iter-p < span style = "color: #b1951d;" > (< / span > next a< span style = "color: #b1951d;" > )< / span > < span style = "color: #b1951d;" > (< / span > * result < span style = "color: #4f97d7;" > (< / span > term a< span style = "color: #4f97d7;" > )< / span > < span style = "color: #b1951d;" > )< / span > < span style = "color: #67b11d;" > )< / span >
< span style = "color: #2d9574;" > )< / span >
< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > iter-p a < span style = "color: #a45bad;" > 1< / span > < span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > pribl-pi-term< / span > a< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > / < span style = "color: #2d9574;" > (< / span > * < span style = "color: #67b11d;" > (< / span > - a < span style = "color: #a45bad;" > 1.0< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #67b11d;" > (< / span > + a < span style = "color: #a45bad;" > 1< / span > < span style = "color: #67b11d;" > )< / span > < span style = "color: #2d9574;" > )< / span > < span style = "color: #2d9574;" > (< / span > * a a< span style = "color: #2d9574;" > )< / span > < span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > pribl-pi-next< / span > a< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #bc6ec5;" > (< / span > + a < span style = "color: #a45bad;" > 2.0< / span > < span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< span style = "color: #4f97d7;" > (< / span > < span style = "color: #4f97d7; font-weight: bold;" > define< / span > < span style = "color: #bc6ec5;" > (< / span > < span style = "color: #bc6ec5; font-weight: bold;" > pribl-pii< / span > n< span style = "color: #bc6ec5;" > )< / span >
< span style = "color: #bc6ec5;" > (< / span > produkt-i
pribl-pi-term
< span style = "color: #a45bad;" > 3.0< / span >
pribl-pi-next
n
< span style = "color: #bc6ec5;" > )< / span > < span style = "color: #4f97d7;" > )< / span >
< / pre >
2024-05-16 22:33:30 +02:00
< / div >
< / div >
2024-05-29 21:54:05 +02:00
< / div >
< div id = "outline-container-org920469a" class = "outline-3" >
< h3 id = "org920469a" > < span class = "section-number-3" > 2.15.< / span > 1.3.2 Sestavljanje procedur z < code > Lambda< / code > < / h3 >
< div class = "outline-text-3" id = "text-2-15" >
< p >
Splosna forma < code > let< / code > izraza
< / p >
2024-05-16 22:33:30 +02:00
2024-05-29 21:54:05 +02:00
< pre class = "example" id = "orgc6db3ea" >
(let ((< var1> < exp1> )
(< var2> < exp2> )
...
(< varn> < expn> ))
< body> )
< / pre >
< p >
To je okrajsava za
< / p >
< pre class = "example" id = "org4ff7fd6" >
((lambda (< var1> ... < varn> )
< body> )
< exp1>
...
< exp2>
)
< / pre >
< / div >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orgb365f70" class = "outline-3" >
< h3 id = "orgb365f70" > < span class = "section-number-3" > 2.16.< / span > 1.3.3 Procedure kot splosne metode< / h3 >
< div class = "outline-text-3" id = "text-2-16" >
< p >
Ce pogledamo proceduro za integral, vidimo mocnejse abstrakcije: procedure, ki
izrazajo splosne racunske metode, neodvisne od posameznih vkljucenih funkcij.
< / p >
< / div >
2024-05-16 22:33:30 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "outline-container-orge72480c" class = "outline-3" >
< h3 id = "orge72480c" > < span class = "section-number-3" > 2.17.< / span > 1.3.4 Procedure kot vrnjene vrednosti< / h3 >
< div class = "outline-text-3" id = "text-2-17" >
< p >
V splošnem programski jeziki omejujo, kateri komputacijski elemente lahko (koda)
spreminja. Elementi z najmanj omejitvami imajo < i > prvorazredni< / i > status. Pravice in
privilegiji prvorazrednih elementov so:
< / p >
< ul class = "org-ul" >
< li > lahko so poimenovani s spremenljivkami< / li >
< li > lahko so podani kot argumenti procedur< / li >
< li > lahko so vrnjeni kot rezultati procedur< / li >
< li > lahko so vključeni v podatkovne strukture< / li >
< / ul >
< p >
V Lispu imajo, za razliko od drugih programskih jezikov, procedure prvorazredni
status. To predstavlja težave za implementacijo, ampak nudi višjo ekspresivno
moč programskega jezika. Najvišja cena pri implementaciji procedur s
prvorazrednim statusom je, da je potrebno rezervirati prostor za procedurine
proste spremenljivke tudi, ko se procedura ne izvaja. V scheme-u so te
spremenljivke shranjene v procedurino okolje (poglavje 4.1).
< / p >
< / div >
< / div >
2024-05-16 22:33:30 +02:00
< / div >
2024-04-30 19:33:52 +02:00
< / div >
2024-05-29 21:54:05 +02:00
< div id = "postamble" class = "status" >
< p class = "author" > Author: Lio Novelli< / p >
< p class = "date" > Created: 2024-05-29 Wed 21:50< / p >
< p class = "validation" > < a href = "https://validator.w3.org/check?uri=referer" > Validate< / a > < / p >
2024-04-30 19:33:52 +02:00
< / div >
< / body >
< / html >