Nekaj vaj iz 2. poglavja

main
Jurij Podgoršek 2024-07-25 11:08:15 +02:00
parent ed873d1590
commit 6baa905b87
4 changed files with 734 additions and 42 deletions

View File

@ -3,13 +3,13 @@
"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-06-02 Sun 15:31 -->
<!-- 2024-07-24 sre 22:20 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Kompotov programerski bralni krožek #1: SICP</title>
<meta name="author" content="Lio Novelli" />
<meta name="author" content="Yuri" />
<meta name="generator" content="Org Mode" />
<style>
<style type="text/css">
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
@ -198,7 +198,7 @@
<body>
<div id="content" class="content">
<h1 class="title">Kompotov programerski bralni krožek #1: SICP</h1>
<div class="footer" id="orgb2b54d1">
<div class="footer" id="org89373e3">
<p>
Izvorna koda se nahaja na <a href="https://git.kompot.si/programerski-bralni-krozek/sicp">git.kompot.si</a>.
</p>
@ -214,18 +214,21 @@ Za bralni krožek se dogovarjamo prek (javne) mailing liste, na katero se lahko
</p>
<div id="org118a398" class="figure">
<div id="orgcd03147" class="figure">
<p><img src="./tb.jpg" alt="tb.jpg" />
</p>
</div>
<div id="outline-container-org02019a8" class="outline-2">
<h2 id="org02019a8">Srečanja</h2>
<div class="outline-text-2" id="text-org02019a8">
<div id="outline-container-org5f6fc7e" class="outline-2">
<h2 id="org5f6fc7e">Srečanja</h2>
<div class="outline-text-2" id="text-org5f6fc7e">
</div>
<div id="outline-container-org7fd9abd" class="outline-3">
<h3 id="org7fd9abd">#5: sreda, 12. 6. 2024 ob 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org7fd9abd">
<div id="outline-container-org499ffe7" class="outline-3">
<h3 id="org499ffe7">#6: sreda, 24. 7. 2024 ob 19.45 v parlamentu</h3>
</div>
<div id="outline-container-org17aaf2f" class="outline-3">
<h3 id="org17aaf2f">#5: sreda, 12. 6. 2024 ob 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org17aaf2f">
<p>
<a href="https://dogodki.kompot.si/events/63a4ad96-7cc2-45a3-8560-18a1a28cf9b5">Povezava</a> do najave dogodka.
</p>
@ -234,21 +237,27 @@ Za bralni krožek se dogovarjamo prek (javne) mailing liste, na katero se lahko
Beremo prvo podpoglavje drugega poglavja Grajenje abstrakcij s podatki.
</p>
</div>
<div id="outline-container-orge85f0d9" class="outline-4">
<h4 id="orge85f0d9">zapiski</h4>
<div class="outline-text-4" id="text-orge85f0d9">
<ul class="org-ul">
<li><a href="zapiski/g1smo/2_6_zapiski_vaje.html">g1smo</a></li>
</ul>
</div>
<div id="outline-container-org6dabd7c" class="outline-3">
<h3 id="org6dabd7c">#4: sreda, 29. 5. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org6dabd7c">
</div>
</div>
<div id="outline-container-org1f75703" class="outline-3">
<h3 id="org1f75703">#4: sreda, 29. 5. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org1f75703">
<p>
Dogodek je <a href="https://dogodki.kompot.si/events/0f3df86f-abc0-4725-bb4c-3587262a672c">tukaj</a>.
Preglejujemo naloge iz prvega poglavja.
</p>
</div>
</div>
<div id="outline-container-org8097d33" class="outline-3">
<h3 id="org8097d33">#3: četrtek, 16. 5. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org8097d33">
<div id="outline-container-org1e6cb58" class="outline-3">
<h3 id="org1e6cb58">#3: četrtek, 16. 5. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org1e6cb58">
<p>
Kot ponavadi je dogodek na našem <a href="https://dogodki.kompot.si/events/8435c26d-4dbd-4e28-94c2-a237c837865d">mobilizonu</a>.
</p>
@ -259,10 +268,9 @@ Ker vsebuje poglavje veliko vaj, za katere nismo našli časa, smo se odločili
Na srečanju smo skupaj reševali vajo 1.29.
</p>
</div>
<div id="outline-container-org15650ba" class="outline-4">
<h4 id="org15650ba">zapiski</h4>
<div class="outline-text-4" id="text-org15650ba">
<div id="outline-container-org63ebce9" class="outline-4">
<h4 id="org63ebce9">zapiski</h4>
<div class="outline-text-4" id="text-org63ebce9">
<ul class="org-ul">
<li><a href="zapiski/sicp-lio.html#MissingReference">lio</a></li>
<li><a href="./zapiski/g1smo/1_3_zapiski_vaje.html">g1smo</a></li>
@ -270,10 +278,9 @@ Na srečanju smo skupaj reševali vajo 1.29.
</div>
</div>
</div>
<div id="outline-container-org81e1376" class="outline-3">
<h3 id="org81e1376">#2: torek, 30. 4. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org81e1376">
<div id="outline-container-orgcde6933" class="outline-3">
<h3 id="orgcde6933">#2: torek, 30. 4. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-orgcde6933">
<p>
Dogodek je <a href="https://dogodki.kompot.si/events/8435c26d-4dbd-4e28-94c2-a237c837865d">tukaj</a>.
</p>
@ -282,10 +289,9 @@ Dogodek je <a href="https://dogodki.kompot.si/events/8435c26d-4dbd-4e28-94c2-a23
Nadaljujemo z branjem poglavja 1.2, Procedures and the processes they generate.
</p>
</div>
<div id="outline-container-orgb685cb5" class="outline-4">
<h4 id="orgb685cb5">zapiski</h4>
<div class="outline-text-4" id="text-orgb685cb5">
<div id="outline-container-orga3bab17" class="outline-4">
<h4 id="orga3bab17">zapiski</h4>
<div class="outline-text-4" id="text-orga3bab17">
<ul class="org-ul">
<li><a href="zapiski/sicp_1_2_tina.md">tina</a> (<a href="zapiski/sicp_1_2_tina.scm">vaje</a>, <a href="zapiski/sicp_sec_1_2.scm">druga varjanta</a>)</li>
<li><a href="zapiski/sicp-lio.html#MissingReference">lio</a></li>
@ -294,10 +300,9 @@ Nadaljujemo z branjem poglavja 1.2, Procedures and the processes they generate.
</div>
</div>
</div>
<div id="outline-container-org643d31a" class="outline-3">
<h3 id="org643d31a">#1: sreda, 17. 4. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org643d31a">
<div id="outline-container-org403baff" class="outline-3">
<h3 id="org403baff">#1: sreda, 17. 4. 2024 18.45 v CTK</h3>
<div class="outline-text-3" id="text-org403baff">
<p>
Beremo uvod in do poglavja 1.2, približno 30 strani.
</p>
@ -306,10 +311,9 @@ Beremo uvod in do poglavja 1.2, približno 30 strani.
Link do <a href="https://dogodki.kompot.si/events/76672075-1c6f-48f1-bc37-05dde93371e5">dogodka na dogodki.kompot.si</a>.
</p>
</div>
<div id="outline-container-org5fc5dba" class="outline-4">
<h4 id="org5fc5dba">zapiski</h4>
<div class="outline-text-4" id="text-org5fc5dba">
<div id="outline-container-org2e2949d" class="outline-4">
<h4 id="org2e2949d">zapiski</h4>
<div class="outline-text-4" id="text-org2e2949d">
<ul class="org-ul">
<li><a href="zapiski/g1smo/1_1_zapiski_vaje.html">g1smo</a></li>
<li><a href="zapiski/sicp-lio.html">lio</a></li>
@ -320,4 +324,4 @@ Link do <a href="https://dogodki.kompot.si/events/76672075-1c6f-48f1-bc37-05dde9
</div>
</div>
</body>
</html>
</html>

View File

@ -14,10 +14,14 @@ Za bralni krožek se dogovarjamo prek (javne) mailing liste, na katero se lahko
[[file:./tb.jpg]]
* Srečanja
** #6: sreda, 24. 7. 2024 ob 19.45 v parlamentu
** #5: sreda, 12. 6. 2024 ob 18.45 v CTK
[[https://dogodki.kompot.si/events/63a4ad96-7cc2-45a3-8560-18a1a28cf9b5][Povezava]] do najave dogodka.
Beremo prvo podpoglavje drugega poglavja Grajenje abstrakcij s podatki.
*** zapiski
- [[file:zapiski/g1smo/2_6_zapiski_vaje.org][g1smo]]
** #4: sreda, 29. 5. 2024 18.45 v CTK
Dogodek je [[https://dogodki.kompot.si/events/0f3df86f-abc0-4725-bb4c-3587262a672c][tukaj]].

View File

@ -0,0 +1,507 @@
<?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-07-24 sre 22:18 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Zapiski in vaje #6 srečanja programerskega bralnega krožka SICP</title>
<meta name="author" content="Jurij" />
<meta name="generator" content="Org Mode" />
<style type="text/css">
#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">Zapiski in vaje #6 srečanja programerskega bralnega krožka SICP</h1>
<div id="outline-container-orgaa918c3" class="outline-2">
<h2 id="orgaa918c3">Teme</h2>
<div class="outline-text-2" id="text-orgaa918c3">
</div>
<div id="outline-container-org2a69a4f" class="outline-3">
<h3 id="org2a69a4f">Grajenje abstrakcij s podatki</h3>
<div class="outline-text-3" id="text-org2a69a4f">
<p>
Prvo poglavje, v katerem smo operirali s preprostimi števili, drugo poglavje nadgrajuje s podatkovnimi struktura oz. kombiniranjem podatkovnih objektov v sestavljene podatkovne modele.
</p>
<p>
Torej ustvarili bomo podatkovne abstrakcije in definirali funkcije ki lahko operirajo nad njimi.
Preprost primer je recimo racionalno število, ki ga sestavlja par števca in imenovalca.
</p>
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">ustvari-rac</span> s i<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>cons s i<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">stevec</span> x<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>car x<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">imenovalec</span> x<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>cdr x<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">izpisi-rac</span> x<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>newline<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #8ec07c;">(</span>stevec x<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #b8bb26;">"/"</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #8ec07c;">(</span>imenovalec x<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">polovica</span> <span style="color: #b16286;">(</span>ustvari-rac 1 2<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>izpisi-rac polovica<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>izpisi-rac <span style="color: #b16286;">(</span>ustvari-rac 6 3<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
<p>
Uporabimo funkcijo za najvecji skupni imenovlec, da poenostavimo recimo 6/3 v 2/1.
</p>
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">gcd</span> a b<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">if</span> <span style="color: #8ec07c;">(</span>= b 0<span style="color: #8ec07c;">)</span>
a
<span style="color: #8ec07c;">(</span>gcd b <span style="color: #d65d0e;">(</span>remainder a b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">ustvari-rac</span> s i<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">let</span> <span style="color: #8ec07c;">(</span><span style="color: #d65d0e;">(</span>g <span style="color: #458588;">(</span>gcd s i<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>cons <span style="color: #d65d0e;">(</span>/ s g<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>/ i g<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>izpisi-rac <span style="color: #b16286;">(</span>ustvari-rac 6 3<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org0c8d9f6" class="outline-2">
<h2 id="org0c8d9f6">vaje</h2>
<div class="outline-text-2" id="text-org0c8d9f6">
</div>
<div id="outline-container-orgff5527e" class="outline-3">
<h3 id="orgff5527e">2.1 bolji ustvari-rac</h3>
<div class="outline-text-3" id="text-orgff5527e">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">ustvari-rac</span> s i<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>cons
<span style="color: #8ec07c;">(</span><span style="color: #fb4933;">if</span> <span style="color: #d65d0e;">(</span>&lt; i 0<span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>* -1 s<span style="color: #d65d0e;">)</span>
s<span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>abs i<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgc271da6" class="outline-3">
<h3 id="orgc271da6">2.2 polovica daljice</h3>
<div class="outline-text-3" id="text-orgc271da6">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">make-point</span> cons<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">x-point</span> car<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">y-point</span> cdr<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">make-segment</span> cons<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">print-point</span> p<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>newline<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #b8bb26;">"("</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #8ec07c;">(</span>x-point p<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #b8bb26;">","</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #8ec07c;">(</span>y-point p<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>display <span style="color: #b8bb26;">")"</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">avg</span> a b<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>/ <span style="color: #8ec07c;">(</span>+ a b<span style="color: #8ec07c;">)</span> 2<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">start-segment</span> car<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">end-segment</span> cdr<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">midpoint-segment</span> s<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">let</span> <span style="color: #8ec07c;">(</span><span style="color: #d65d0e;">(</span>start <span style="color: #458588;">(</span>start-segment s<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>end <span style="color: #458588;">(</span>end-segment s<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>make-point <span style="color: #d65d0e;">(</span>avg <span style="color: #458588;">(</span>x-point start<span style="color: #458588;">)</span> <span style="color: #458588;">(</span>x-point end<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>avg <span style="color: #458588;">(</span>y-point start<span style="color: #458588;">)</span> <span style="color: #458588;">(</span>y-point end<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org791e50c" class="outline-3">
<h3 id="org791e50c">2.3 obseg in ploscina kvadra</h3>
<div class="outline-text-3" id="text-org791e50c">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #7c6f64;">;; </span><span style="color: #7c6f64;">Dolzina in sirina</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">ploscina-kvadra</span> k<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>* <span style="color: #8ec07c;">(</span>car k<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span>cdr k<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">obseg-kvadra</span> k<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>* 2 <span style="color: #8ec07c;">(</span>+ car k<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span>cdr k<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">make-kvader</span> cons<span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgf1adee4" class="outline-3">
<h3 id="orgf1adee4">2.4 Proceduralna reprezantacija parov</h3>
<div class="outline-text-3" id="text-orgf1adee4">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">cons</span> x y<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>m<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span>m x y<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">car</span> z<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>z <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>p q<span style="color: #d65d0e;">)</span> p<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #7c6f64;">;; </span><span style="color: #7c6f64;">kaksen je cdr?</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">cdr</span> z<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>z <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>p q<span style="color: #d65d0e;">)</span> q<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>list
<span style="color: #b16286;">(</span>cons 10 12<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>car <span style="color: #8ec07c;">(</span>cons 10 12<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>cdr <span style="color: #8ec07c;">(</span>cons 10 12<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgcf7a90a" class="outline-3">
<h3 id="orgcf7a90a">2.5 aritmeticni par v stevilu</h3>
<div class="outline-text-3" id="text-orgcf7a90a">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">cons</span> a b<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>* <span style="color: #8ec07c;">(</span>expt 2 a<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span>expt 3 b<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">car</span> p<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">if</span> <span style="color: #8ec07c;">(</span>= 0 <span style="color: #d65d0e;">(</span>modulo p 2<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>+ 1 <span style="color: #d65d0e;">(</span>car <span style="color: #458588;">(</span>/ p 2<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
0<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">cdr</span> p<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">if</span> <span style="color: #8ec07c;">(</span>= 0 <span style="color: #d65d0e;">(</span>modulo p 3<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>+ 1 <span style="color: #d65d0e;">(</span>cdr <span style="color: #458588;">(</span>/ p 3<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
0<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>list
<span style="color: #b16286;">(</span>cons 12 41<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>car <span style="color: #8ec07c;">(</span>cons 12 41<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>cdr <span style="color: #8ec07c;">(</span>cons 12 41<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org3389c10" class="outline-3">
<h3 id="org3389c10">2.6 churchova števila</h3>
<div class="outline-text-3" id="text-org3389c10">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">zero</span> <span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>f<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>x<span style="color: #d65d0e;">)</span> x<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">add-1</span> n<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>f<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>f <span style="color: #458588;">(</span><span style="color: #b16286;">(</span>n f<span style="color: #b16286;">)</span> x<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">one</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>f<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>f <span style="color: #458588;">(</span><span style="color: #b16286;">(</span><span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>f<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #458588;">(</span>x<span style="color: #458588;">)</span> x<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span> f<span style="color: #b16286;">)</span> x<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">two</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>f<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>f <span style="color: #458588;">(</span><span style="color: #b16286;">(</span>one f<span style="color: #b16286;">)</span> x<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #7c6f64;">;; </span><span style="color: #7c6f64;">pokrajsano</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">one</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>f<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>f x<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">two</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>f<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>f <span style="color: #458588;">(</span><span style="color: #b16286;">(</span><span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>f<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #458588;">(</span>x<span style="color: #458588;">)</span> <span style="color: #458588;">(</span>f x<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span> f<span style="color: #b16286;">)</span> x<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #7c6f64;">;; </span><span style="color: #7c6f64;">@TODO hmm kaj se zgodi tu vmes koristnega za razumevanje?</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">two</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #8ec07c;">(</span>f<span style="color: #8ec07c;">)</span> <span style="color: #8ec07c;">(</span><span style="color: #fb4933;">lambda</span> <span style="color: #d65d0e;">(</span>x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>f <span style="color: #458588;">(</span>f x<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgc045649" class="outline-3">
<h3 id="orgc045649">2.7 Racunanje z intervali (z napako)</h3>
<div class="outline-text-3" id="text-orgc045649">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">add-interval</span> x y<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>make-interval <span style="color: #8ec07c;">(</span>+ <span style="color: #d65d0e;">(</span>lower-bound x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>lower-bound y<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>+ <span style="color: #d65d0e;">(</span>upper-bound x<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>upper-bound y<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">mul-interval</span> x y<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span><span style="color: #fb4933;">let</span> <span style="color: #8ec07c;">(</span><span style="color: #d65d0e;">(</span>p1 <span style="color: #458588;">(</span>* <span style="color: #b16286;">(</span>lower-bound x<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>lower-bound y<span style="color: #b16286;">)</span><span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>p2 <span style="color: #458588;">(</span>* <span style="color: #b16286;">(</span>lower-bound x<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>upper-bound y<span style="color: #b16286;">)</span><span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>p3 <span style="color: #458588;">(</span>* <span style="color: #b16286;">(</span>upper-bound x<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>lower-bound y<span style="color: #b16286;">)</span><span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>p4 <span style="color: #458588;">(</span>* <span style="color: #b16286;">(</span>upper-bound x<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>upper-bound y<span style="color: #b16286;">)</span><span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>make-interval <span style="color: #d65d0e;">(</span>min p1 p2 p3 p4<span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>max p1 p2 p3 p4<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">div-interval</span> x y<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>mul-interval x
<span style="color: #8ec07c;">(</span>make-interval <span style="color: #d65d0e;">(</span>/ 1.0 <span style="color: #458588;">(</span>upper-bound y<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span>
<span style="color: #d65d0e;">(</span>/ 1.0 <span style="color: #458588;">(</span>lower-bound y<span style="color: #458588;">)</span><span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">make-interval</span> a b<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>cons a b<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">upper-bound</span> cdr<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">lower-bound</span> car<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>list
<span style="color: #b16286;">(</span>add-interval
<span style="color: #8ec07c;">(</span>make-interval 3 4<span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>make-interval 5 8<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>mul-interval
<span style="color: #8ec07c;">(</span>make-interval 5 6<span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>make-interval 8 10<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org9363d2f" class="outline-3">
<h3 id="org9363d2f">2.8 odstevanje intervala</h3>
<div class="outline-text-3" id="text-org9363d2f">
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">make-interval</span> a b<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>cons a b<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">upper-bound</span> cdr<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">lower-bound</span> car<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">sub-interval</span> a b<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>make-interval <span style="color: #8ec07c;">(</span>- <span style="color: #d65d0e;">(</span>lower-bound a<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>upper-bound b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>- <span style="color: #d65d0e;">(</span>upper-bound a<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>lower-bound b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>list
<span style="color: #b16286;">(</span>sub-interval <span style="color: #8ec07c;">(</span>make-interval 10 12<span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>make-interval 3 7<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org8140af8" class="outline-3">
<h3 id="org8140af8">2.9 srednja vrednost in napaka</h3>
<div class="outline-text-3" id="text-org8140af8">
<p>
Sestevanje in odstevanje je isto pri intervalu od-do kot srednja-vrednost napaka
</p>
<div class="org-src-container">
<pre class="src src-scheme"><span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">make-priblizek</span> vrednost napaka<span style="color: #b16286;">)</span> <span style="color: #b16286;">(</span>cons vrednost napaka<span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">vrednost</span> car<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #fabd2f;">napaka</span> cdr<span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">add-priblizek</span> a b<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>make-priblizek <span style="color: #8ec07c;">(</span>+ <span style="color: #d65d0e;">(</span>vrednost a<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>vrednost b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>+ <span style="color: #d65d0e;">(</span>napaka a<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>napaka b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">sub-priblizek</span> a b<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>make-priblizek <span style="color: #8ec07c;">(</span>- <span style="color: #d65d0e;">(</span>vrednost a<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>vrednost b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>+ <span style="color: #d65d0e;">(</span>napaka a<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>napaka b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span><span style="color: #fb4933;">define</span> <span style="color: #b16286;">(</span><span style="color: #fabd2f;">mul-priblizek</span> a b<span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>make-priblizek <span style="color: #8ec07c;">(</span>* <span style="color: #d65d0e;">(</span>vrednost a<span style="color: #d65d0e;">)</span> <span style="color: #d65d0e;">(</span>vrednost b<span style="color: #d65d0e;">)</span><span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">()</span><span style="color: #b16286;">)</span><span style="color: #458588;">)</span>
<span style="color: #458588;">(</span>list
<span style="color: #b8bb26;">"vsota in razlika je preprosta"</span>
<span style="color: #b16286;">(</span>add-priblizek <span style="color: #8ec07c;">(</span>make-priblizek 8 3<span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>make-priblizek 4 1<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b16286;">(</span>sub-priblizek <span style="color: #8ec07c;">(</span>make-priblizek 8 3<span style="color: #8ec07c;">)</span>
<span style="color: #8ec07c;">(</span>make-priblizek 4 1<span style="color: #8ec07c;">)</span><span style="color: #b16286;">)</span>
<span style="color: #b8bb26;">"pri mnozenju in deljenju pa je \"sirina\" (napaka) odvisna tudi od vrednosti"</span><span style="color: #458588;">)</span>
<span style="color: #7c6f64;">;; </span><span style="color: #7c6f64;">TODO napisi funkcije za mnozenje in deljenje</span>
</pre>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Jurij</p>
<p class="date">Created: 2024-07-24 sre 22:18</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>

View File

@ -87,8 +87,185 @@ Uporabimo funkcijo za najvecji skupni imenovlec, da poenostavimo recimo 6/3 v 2/
(avg (y-point start) (y-point end)))))
#+end_src
** 3.3 obseg in ploscina kvadra
** 2.3 obseg in ploscina kvadra
#+begin_src scheme
;; Dolzina in sirina
(define (ploscina-kvadra k)
(* (car k) (cdr k)))
(define (obseg-kvadra k)
(* 2 (+ car k) (cdr k)))
(define make-kvader cons)
#+end_src
** 2.4 Proceduralna reprezantacija parov
#+begin_src scheme
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
;; kaksen je cdr?
(define (cdr z)
(z (lambda (p q) q)))
(list
(cons 10 12)
(car (cons 10 12))
(cdr (cons 10 12)))
#+end_src
#+RESULTS:
: '(#<procedure 7f3e1bf08dc0 at <unknown port>:10:2 (m)> 10 12)
** 2.5 aritmeticni par v stevilu
#+begin_src scheme
(define (cons a b)
(* (expt 2 a) (expt 3 b)))
(define (car p)
(if (= 0 (modulo p 2))
(+ 1 (car (/ p 2)))
0))
(define (cdr p)
(if (= 0 (modulo p 3))
(+ 1 (cdr (/ p 3)))
0))
(list
(cons 12 41)
(car (cons 12 41))
(cdr (cons 12 41)))
#+end_src
#+RESULTS:
| 149393393160891541106688 | 12 | 41 |
** 2.6 churchova števila
#+begin_src scheme
(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
(define one
(lambda (f) (lambda (x) (f (((lambda (f) (lambda (x) x)) f) x)))))
(define two
(lambda (f) (lambda (x) (f ((one f) x)))))
;; pokrajsano
(define one
(lambda (f) (lambda (x) (f x))))
(define two
(lambda (f) (lambda (x) (f (((lambda (f) (lambda (x) (f x))) f) x)))))
;; @TODO hmm kaj se zgodi tu vmes koristnega za razumevanje?
(define two
(lambda (f) (lambda (x) (f (f x)))))
#+end_src
** 2.7 Racunanje z intervali (z napako)
#+begin_src scheme
(define (add-interval x y)
(make-interval (+ (lower-bound x) (lower-bound y))
(+ (upper-bound x) (upper-bound y))))
(define (mul-interval x y)
(let ((p1 (* (lower-bound x) (lower-bound y)))
(p2 (* (lower-bound x) (upper-bound y)))
(p3 (* (upper-bound x) (lower-bound y)))
(p4 (* (upper-bound x) (upper-bound y))))
(make-interval (min p1 p2 p3 p4)
(max p1 p2 p3 p4))))
(define (div-interval x y)
(mul-interval x
(make-interval (/ 1.0 (upper-bound y))
(/ 1.0 (lower-bound y)))))
(define (make-interval a b) (cons a b))
(define upper-bound cdr)
(define lower-bound car)
(list
(add-interval
(make-interval 3 4)
(make-interval 5 8))
(mul-interval
(make-interval 5 6)
(make-interval 8 10)))
#+end_src
#+RESULTS:
: ((8 . 12) (40 . 60))
** 2.8 odstevanje intervala
#+begin_src scheme
(define (make-interval a b) (cons a b))
(define upper-bound cdr)
(define lower-bound car)
(define (sub-interval a b)
(make-interval (- (lower-bound a) (upper-bound b))
(- (upper-bound a) (lower-bound b))))
(list
(sub-interval (make-interval 10 12)
(make-interval 3 7)))
#+end_src
#+RESULTS:
: ((3 . 9))
** 2.9 srednja vrednost in napaka
Sestevanje in odstevanje je isto pri intervalu od-do kot srednja-vrednost napaka
#+begin_src scheme
(define (make-priblizek vrednost napaka) (cons vrednost napaka))
(define vrednost car)
(define napaka cdr)
(define (add-priblizek a b)
(make-priblizek (+ (vrednost a) (vrednost b))
(+ (napaka a) (napaka b))))
(define (sub-priblizek a b)
(make-priblizek (- (vrednost a) (vrednost b))
(+ (napaka a) (napaka b))))
(define (mul-priblizek a b)
(make-priblizek (* (vrednost a) (vrednost b))
()))
(list
"vsota in razlika je preprosta"
(add-priblizek (make-priblizek 8 3)
(make-priblizek 4 1))
(sub-priblizek (make-priblizek 8 3)
(make-priblizek 4 1))
"pri mnozenju in deljenju pa je \"sirina\" (napaka) odvisna tudi od vrednosti")
;; TODO napisi funkcije za mnozenje in deljenje
#+end_src
#+RESULTS: