<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>brianp.de &#187; Scheme</title>
	<atom:link href="http://brianp.de/tag/scheme/feed/" rel="self" type="application/rss+xml" />
	<link>http://brianp.de</link>
	<description>Wissen ist der erste Rohstoff, der sich bei Gebrauch vermehrt! - brandeins</description>
	<lastBuildDate>Fri, 30 Jul 2010 15:39:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Scheme: Funktion mit internem privatem Attribut (private Variable)</title>
		<link>http://brianp.de/2010/03/21/scheme-funktion-mit-internem-privatem-attribut-private-variable/</link>
		<comments>http://brianp.de/2010/03/21/scheme-funktion-mit-internem-privatem-attribut-private-variable/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 22:54:17 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Attribut]]></category>
		<category><![CDATA[counter]]></category>
		<category><![CDATA[intern]]></category>
		<category><![CDATA[privat]]></category>
		<category><![CDATA[set!]]></category>
		<category><![CDATA[Variable]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=975</guid>
		<description><![CDATA[Mit folgender Anweisung definiert man eine simple Zählfunktion in Scheme von der man beliebig viele unabhänge Zähler parallel erstellen kann. &#40;define &#40;counter init&#41; &#160; &#40;local &#160; &#160; &#40;&#40;define i &#40;- init 1&#41;&#41;&#41; &#160; &#160; &#40;lambda &#40;&#41; &#160; &#160; &#160; &#40;begin &#160; &#160; &#160; &#160; &#40;set! i &#40;+ i 1&#41;&#41; &#160; &#160; &#160; &#160; i &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Mit folgender Anweisung definiert man eine simple Zählfunktion in Scheme von der man beliebig viele unabhänge Zähler parallel erstellen kann.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>counter init<span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span>local<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> i <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> init <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">set!</span> i <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; i<br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span></div></div>
<p>Wie man sieht definiert man zuerst eine Funktion namens counter die einen Parameter erwartet. Die Funktion hat intern eine lokale Variable die zu beginn auf den übergebenen Wert (vermindert um 1) gesetzt wird. Schließlich gibt die Funktion eine neue Funktion zurück die mit der eben erstellen lokalen Variable zählt.  Diese interne private Variable kommt einem privaten Attribut einer Klasse einer modernen Programmiersprache nahe.<br />
Somit ergeben folgende Anweisungen:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> c1 <span style="color: #66cc66;">&#40;</span>counter <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> c2 <span style="color: #66cc66;">&#40;</span>counter <span style="color: #cc66cc;">1100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c2<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c2<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c2<span style="color: #66cc66;">&#41;</span></div></div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">0<br />
1100<br />
1101<br />
1<br />
2<br />
3<br />
1102</div></div>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="U2NoZW1lOiBGdW5rdGlvbiBtaXQgaW50ZXJuZW0gcHJpdmF0ZW0gQXR0cmlidXQgKHByaXZhdGUgVmFyaWFibGUp" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDEwLzAzLzIxL3NjaGVtZS1mdW5rdGlvbi1taXQtaW50ZXJuZW0tcHJpdmF0ZW0tYXR0cmlidXQtcHJpdmF0ZS12YXJpYWJsZS8=" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAxMC0wMy0yMSAyMzowMzoxNw==" /><input type="hidden" name="postContent_0" value="PHA+TWl0IGZvbGdlbmRlciBBbndlaXN1bmcgZGVmaW5pZXJ0IG1hbiBlaW5lIHNpbXBsZSBaw6RobGZ1bmt0aW9uIGluIFNjaGVtZSB2b24gZGVyIG1hbiBiZWxpZWJpZyB2aWVsZSB1bmFiaMOkbmdlIFrDpGhsZXIgcGFyYWxsZWwgZXJzdGVsbGVuIGthbm4uPC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNDo6PC9kaXY+CjxwPldpZSBtYW4gc2llaHQgZGVmaW5pZXJ0IG1hbiB6dWVyc3QgZWluZSBGdW5rdGlvbiBuYW1lbnMgY291bnRlciBkaWUgZWluZW4gUGFyYW1ldGVyIGVyd2FydGV0LiBEaWUgRnVua3Rpb24gaGF0IGludGVybiBlaW5lIGxva2FsZSBWYXJpYWJsZSBkaWUgenUgYmVnaW5uIGF1ZiBkZW4gw7xiZXJnZWJlbmVuIFdlcnQgKHZlcm1pbmRlcnQgdW0gMSkgZ2VzZXR6dCB3aXJkLiBTY2hsaWXDn2xpY2ggZ2lidCBkaWUgRnVua3Rpb24gZWluZSBuZXVlIEZ1bmt0aW9uIHp1csO8Y2sgZGllIG1pdCBkZXIgZWJlbiBlcnN0ZWxsZW4gbG9rYWxlbiBWYXJpYWJsZSB6w6RobHQuICBEaWVzZSBpbnRlcm5lIHByaXZhdGUgVmFyaWFibGUga29tbXQgZWluZW0gcHJpdmF0ZW4gQXR0cmlidXQgZWluZXIgS2xhc3NlIGVpbmVyIG1vZGVybmVuIFByb2dyYW1taWVyc3ByYWNoZSBuYWhlLjxiciAvPgpTb21pdCBlcmdlYmVuIGZvbGdlbmRlIEFud2Vpc3VuZ2VuOjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzU6OjwvZGl2Pgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNjo6PC9kaXY+Cg==" /><a href="http://de.pdf24.org" target="_blank" title="PDF erstellen"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF erstellen" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2010/03/21/scheme-funktion-mit-internem-privatem-attribut-private-variable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quicksort in Scheme</title>
		<link>http://brianp.de/2010/03/17/quicksort-in-scheme/</link>
		<comments>http://brianp.de/2010/03/17/quicksort-in-scheme/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 20:10:30 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Algorithmen]]></category>
		<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Algorithmus]]></category>
		<category><![CDATA[Quicksort]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=945</guid>
		<description><![CDATA[&#40;define &#40;my-quicksort l&#41; &#160; &#40;if &#40;empty? l&#41; &#160; &#160; &#160; empty &#160; &#160; &#160; &#40;append &#160; &#160; &#160; &#160;&#40;my-quicksort &#40;filter &#40;lambda &#40;x&#41; &#40;&#60;= x &#40;first l&#41;&#41;&#41; &#40;rest l&#41;&#41;&#41; &#160; &#160; &#160; &#160;&#40;list &#40;first l&#41;&#41; &#160; &#160; &#160; &#160;&#40;my-quicksort &#40;filter &#40;lambda &#40;x&#41; &#40;&#62; x &#40;first l&#41;&#41;&#41; &#40;rest l&#41;&#41;&#41; &#160; &#160; &#160; &#41; &#160; &#41; &#41; Aufruf [...]]]></description>
			<content:encoded><![CDATA[<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>my<span style="color: #66cc66;">-</span>quicksort <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>empty? <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; empty<br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">append</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span>my<span style="color: #66cc66;">-</span>quicksort <span style="color: #66cc66;">&#40;</span>filter <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;=</span> x <span style="color: #66cc66;">&#40;</span>first <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>rest <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span>first <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span>my<span style="color: #66cc66;">-</span>quicksort <span style="color: #66cc66;">&#40;</span>filter <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> x <span style="color: #66cc66;">&#40;</span>first <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>rest <span style="color: #b1b100;">l</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span></div></div>
<p>Aufruf z.B. mit</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>my<span style="color: #66cc66;">-</span>quicksort '<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8</span> <span style="color: #cc66cc;">7</span> <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">22</span> <span style="color: #cc66cc;">9</span> <span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">11</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>produziert</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">7</span> <span style="color: #cc66cc;">8</span> <span style="color: #cc66cc;">9</span> <span style="color: #cc66cc;">11</span> <span style="color: #cc66cc;">22</span><span style="color: #66cc66;">&#41;</span></div></div>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="UXVpY2tzb3J0IGluIFNjaGVtZQ==" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDEwLzAzLzE3L3F1aWNrc29ydC1pbi1zY2hlbWUv" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAxMC0wMy0xNyAyMTowMzozMA==" /><input type="hidden" name="postContent_0" value="PGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzEwOjo8L2Rpdj4KPHA+QXVmcnVmIHouQi4gbWl0PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfMTE6OjwvZGl2Pgo8cD5wcm9kdXppZXJ0PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfMTI6OjwvZGl2Pgo=" /><a href="http://de.pdf24.org" target="_blank" title="PDF Creator"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Creator" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2010/03/17/quicksort-in-scheme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wichtige Scheme Funktionen</title>
		<link>http://brianp.de/2009/11/28/wichtige-scheme-funktionen/</link>
		<comments>http://brianp.de/2009/11/28/wichtige-scheme-funktionen/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 15:05:09 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[fold]]></category>
		<category><![CDATA[Funktion]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[Liste]]></category>
		<category><![CDATA[map]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=797</guid>
		<description><![CDATA[foldr und foldl Die Funktion fold wendet eine Funktion auf jedes Element einer Liste an, speichert das Ergebnis in einer neuen Liste und gibt diese zurück. foldr liest die Liste von links nach rechts ein. foldl von rechts nach links, also falsch herum. Daraus ergibt sich auch gleich eine sehr hilfreiche Anwendung von foldl: &#62; [...]]]></description>
			<content:encoded><![CDATA[<h3>foldr und foldl</h3>
<p>Die Funktion fold wendet eine Funktion auf jedes Element einer Liste an, speichert das Ergebnis in einer neuen Liste und gibt diese zurück.<br />
<a href="http://docs.plt-scheme.org/reference/pairs.html#(def._((lib._scheme/base..ss)._foldr))">foldr</a> liest die Liste von links nach rechts ein. <a href="http://docs.plt-scheme.org/reference/pairs.html#(def._((lib._scheme/base..ss)._foldl))">foldl</a> von rechts nach links, also falsch herum. Daraus ergibt sich auch gleich eine sehr hilfreiche Anwendung von foldl:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span>foldl <span style="color: #b1b100;">cons</span> empty <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">3</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Es invertiert also einfach die übergebene Liste.</p>
<p>Ein anderes Beispiel (bei dem es keinen Unterschied macht, ob man foldr oder foldl nutzt):</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span>foldr <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #cc66cc;">15</span></div></div>
<h3>map</h3>
<p><a href="http://docs.plt-scheme.org/reference/pairs.html#(def._((lib._scheme/private/map..ss)._map))">map</a> wendet eine Funktion auf alle Elemente einer Liste an, und gibt die jeweiligen Ergebnisse als neue Liste zurück.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">map</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> x x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">9</span> <span style="color: #cc66cc;">16</span> <span style="color: #cc66cc;">25</span><span style="color: #66cc66;">&#41;</span></div></div>
<h3>filter</h3>
<p><a href="http://docs.plt-scheme.org/reference/pairs.html#(def._((lib._scheme/base..ss)._filter))">filter</a> filtert eine Liste. Dazu übergibt man eine Funktion die entweder true zurückgibt, wenn das gerade getestete Element in die neue Liste soll, oder eben false, wenn es nicht in die neue Liste soll.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span>filter <span style="color: #b1b100;">even?</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span></div></div>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="V2ljaHRpZ2UgU2NoZW1lIEZ1bmt0aW9uZW4=" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzExLzI4L3dpY2h0aWdlLXNjaGVtZS1mdW5rdGlvbmVuLw==" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMS0yOCAxNjoxMTowOQ==" /><input type="hidden" name="postContent_0" value="PGgzPmZvbGRyIHVuZCBmb2xkbDwvaDM+CjxwPkRpZSBGdW5rdGlvbiBmb2xkIHdlbmRldCBlaW5lIEZ1bmt0aW9uIGF1ZiBqZWRlcyBFbGVtZW50IGVpbmVyIExpc3RlIGFuLCBzcGVpY2hlcnQgZGFzIEVyZ2VibmlzIGluIGVpbmVyIG5ldWVuIExpc3RlIHVuZCBnaWJ0IGRpZXNlIHp1csO8Y2suPGJyIC8+CjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnBsdC1zY2hlbWUub3JnL3JlZmVyZW5jZS9wYWlycy5odG1sIyhkZWYuXygobGliLl9zY2hlbWUvYmFzZS4uc3MpLl9mb2xkcikpIj5mb2xkcjwvYT4gbGllc3QgZGllIExpc3RlIHZvbiBsaW5rcyBuYWNoIHJlY2h0cyBlaW4uIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLnBsdC1zY2hlbWUub3JnL3JlZmVyZW5jZS9wYWlycy5odG1sIyhkZWYuXygobGliLl9zY2hlbWUvYmFzZS4uc3MpLl9mb2xkbCkpIj5mb2xkbDwvYT4gdm9uIHJlY2h0cyBuYWNoIGxpbmtzLCBhbHNvIGZhbHNjaCBoZXJ1bS4gRGFyYXVzIGVyZ2lidCBzaWNoIGF1Y2ggZ2xlaWNoIGVpbmUgc2VociBoaWxmcmVpY2hlIEFud2VuZHVuZyB2b24gZm9sZGw6PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfMTc6OjwvZGl2Pgo8cD5FcyBpbnZlcnRpZXJ0IGFsc28gZWluZmFjaCBkaWUgw7xiZXJnZWJlbmUgTGlzdGUuPC9wPgo8cD5FaW4gYW5kZXJlcyBCZWlzcGllbCAoYmVpIGRlbSBlcyBrZWluZW4gVW50ZXJzY2hpZWQgbWFjaHQsIG9iIG1hbiBmb2xkciBvZGVyIGZvbGRsIG51dHp0KTo8L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS18xODo6PC9kaXY+CjxoMz5tYXA8L2gzPgo8cD48YSBocmVmPSJodHRwOi8vZG9jcy5wbHQtc2NoZW1lLm9yZy9yZWZlcmVuY2UvcGFpcnMuaHRtbCMoZGVmLl8oKGxpYi5fc2NoZW1lL3ByaXZhdGUvbWFwLi5zcykuX21hcCkpIj5tYXA8L2E+IHdlbmRldCBlaW5lIEZ1bmt0aW9uIGF1ZiBhbGxlIEVsZW1lbnRlIGVpbmVyIExpc3RlIGFuLCB1bmQgZ2lidCBkaWUgamV3ZWlsaWdlbiBFcmdlYm5pc3NlIGFscyBuZXVlIExpc3RlIHp1csO8Y2suPC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfMTk6OjwvZGl2Pgo8aDM+ZmlsdGVyPC9oMz4KPHA+PGEgaHJlZj0iaHR0cDovL2RvY3MucGx0LXNjaGVtZS5vcmcvcmVmZXJlbmNlL3BhaXJzLmh0bWwjKGRlZi5fKChsaWIuX3NjaGVtZS9iYXNlLi5zcykuX2ZpbHRlcikpIj5maWx0ZXI8L2E+IGZpbHRlcnQgZWluZSBMaXN0ZS4gRGF6dSDDvGJlcmdpYnQgbWFuIGVpbmUgRnVua3Rpb24gZGllIGVudHdlZGVyIHRydWUgenVyw7xja2dpYnQsIHdlbm4gZGFzIGdlcmFkZSBnZXRlc3RldGUgRWxlbWVudCBpbiBkaWUgbmV1ZSBMaXN0ZSBzb2xsLCBvZGVyIGViZW4gZmFsc2UsIHdlbm4gZXMgbmljaHQgaW4gZGllIG5ldWUgTGlzdGUgc29sbC48L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS18yMDo6PC9kaXY+Cg==" /><a href="http://de.pdf24.org" target="_blank" title="PDF Download"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Download" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/11/28/wichtige-scheme-funktionen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheme Kurs – Teil 7: IO</title>
		<link>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-7-io/</link>
		<comments>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-7-io/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 13:58:29 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Ausgabe]]></category>
		<category><![CDATA[EA]]></category>
		<category><![CDATA[Eingabe]]></category>
		<category><![CDATA[IO]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=808</guid>
		<description><![CDATA[Bis jetzt habe ich noch nichts zur Ein- und Ausgabe von Daten in Scheme gesagt. Simple Ausgaben kann man realisieren indem man einfach die Variable hinschreibt, ohne sie auf eine Funktion anzuwenden. &#40;define hallo-welt &#34;Hallo Welt!&#34;&#41; hallo-welt Es gibt aber auch eine Menge Funktionen mit denen man Ausgaben bewältigen kann. Darunter ist das aus C/C++ [...]]]></description>
			<content:encoded><![CDATA[<p>Bis jetzt habe ich noch nichts zur Ein- und Ausgabe von Daten in Scheme gesagt. Simple Ausgaben kann man realisieren indem man einfach die Variable hinschreibt, ohne sie auf eine Funktion anzuwenden.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> hallo<span style="color: #66cc66;">-</span>welt <span style="color: #ff0000;">&quot;Hallo Welt!&quot;</span><span style="color: #66cc66;">&#41;</span><br />
hallo<span style="color: #66cc66;">-</span>welt</div></div>
<p>Es gibt aber auch eine Menge Funktionen mit denen man <strong>Ausgaben</strong> bewältigen kann. Darunter ist das aus C/C++ bekannte printf.<br />
Ich möchte nicht näher auf die Ausgabefunktionen eingehen, da sie keine große Schwierigkeit darstellen. Alle nötigen Informationen dazu findet man unter:<br />
<a href="http://download.plt-scheme.org/doc/html/reference/Writing.html">http://download.plt-scheme.org/doc/html/reference/Writing.html</a></p>
<p>Das gleiche gilt für die <strong>Eingabe</strong> von Daten. Alle nötigen Informationen findet man hier:<br />
<a href="http://download.plt-scheme.org/doc/html/reference/Reading.html">http://download.plt-scheme.org/doc/html/reference/Reading.html</a></p>
<p>Ein kleines Beispiel zum Abschluss:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>printf <span style="color: #ff0000;">&quot;Bitte geben Sie Ihren Name ein: &quot;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> name <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">read</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>printf <span style="color: #ff0000;">&quot;Hallo ~v&quot;</span> name<span style="color: #66cc66;">&#41;</span></div></div>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="U2NoZW1lIEt1cnMg4oCTIFRlaWwgNzogSU8=" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzExLzI4L3NjaGVtZS1rdXJzLSVlMiU4MCU5My10ZWlsLTctaW8v" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMS0yOCAxNDoxMToyOQ==" /><input type="hidden" name="postContent_0" value="PHA+QmlzIGpldHp0IGhhYmUgaWNoIG5vY2ggbmljaHRzIHp1ciBFaW4tIHVuZCBBdXNnYWJlIHZvbiBEYXRlbiBpbiBTY2hlbWUgZ2VzYWd0LiBTaW1wbGUgQXVzZ2FiZW4ga2FubiBtYW4gcmVhbGlzaWVyZW4gaW5kZW0gbWFuIGVpbmZhY2ggZGllIFZhcmlhYmxlIGhpbnNjaHJlaWJ0LCBvaG5lIHNpZSBhdWYgZWluZSBGdW5rdGlvbiBhbnp1d2VuZGVuLjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzIzOjo8L2Rpdj4KPHA+RXMgZ2lidCBhYmVyIGF1Y2ggZWluZSBNZW5nZSBGdW5rdGlvbmVuIG1pdCBkZW5lbiBtYW4gPHN0cm9uZz5BdXNnYWJlbjwvc3Ryb25nPiBiZXfDpGx0aWdlbiBrYW5uLiBEYXJ1bnRlciBpc3QgZGFzIGF1cyBDL0MrKyBiZWthbm50ZSBwcmludGYuPGJyIC8+CkljaCBtw7ZjaHRlIG5pY2h0IG7DpGhlciBhdWYgZGllIEF1c2dhYmVmdW5rdGlvbmVuIGVpbmdlaGVuLCBkYSBzaWUga2VpbmUgZ3Jvw59lIFNjaHdpZXJpZ2tlaXQgZGFyc3RlbGxlbi4gQWxsZSBuw7Z0aWdlbiBJbmZvcm1hdGlvbmVuIGRhenUgZmluZGV0IG1hbiB1bnRlcjo8YnIgLz4KPGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLnBsdC1zY2hlbWUub3JnL2RvYy9odG1sL3JlZmVyZW5jZS9Xcml0aW5nLmh0bWwiPmh0dHA6Ly9kb3dubG9hZC5wbHQtc2NoZW1lLm9yZy9kb2MvaHRtbC9yZWZlcmVuY2UvV3JpdGluZy5odG1sPC9hPjwvcD4KPHA+RGFzIGdsZWljaGUgZ2lsdCBmw7xyIGRpZSA8c3Ryb25nPkVpbmdhYmU8L3N0cm9uZz4gdm9uIERhdGVuLiBBbGxlIG7DtnRpZ2VuIEluZm9ybWF0aW9uZW4gZmluZGV0IG1hbiBoaWVyOjxiciAvPgo8YSBocmVmPSJodHRwOi8vZG93bmxvYWQucGx0LXNjaGVtZS5vcmcvZG9jL2h0bWwvcmVmZXJlbmNlL1JlYWRpbmcuaHRtbCI+aHR0cDovL2Rvd25sb2FkLnBsdC1zY2hlbWUub3JnL2RvYy9odG1sL3JlZmVyZW5jZS9SZWFkaW5nLmh0bWw8L2E+PC9wPgo8cD5FaW4ga2xlaW5lcyBCZWlzcGllbCB6dW0gQWJzY2hsdXNzOjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzI0Ojo8L2Rpdj4K" /><a href="http://de.pdf24.org" target="_blank" title="PDF Download"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Download" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-7-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheme Kurs – Teil 6: set!</title>
		<link>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-6-set/</link>
		<comments>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-6-set/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 13:37:34 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[!]]></category>
		<category><![CDATA[define]]></category>
		<category><![CDATA[Konstante]]></category>
		<category><![CDATA[Konvention]]></category>
		<category><![CDATA[set!]]></category>
		<category><![CDATA[Variable]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=802</guid>
		<description><![CDATA[Bis jetzt haben wir in Scheme nur mit Konstanten gearbeitet, die man einmal mit einem Wert belegen kann. Mit set! kann man aber den Wert einer Variable ändern. Davor muss man die Variable aber wie eine Konstante mit define erstellen, dass heißt, wir haben bis jetzt auch schon mit Variablen gearbeitet, nur konnten wir deren [...]]]></description>
			<content:encoded><![CDATA[<p>Bis jetzt haben wir in Scheme nur mit Konstanten gearbeitet, die man einmal mit einem Wert belegen kann.<br />
Mit <em>set!</em> kann man aber den Wert einer Variable ändern. Davor muss man die Variable aber wie eine Konstante mit <em>define</em> erstellen, dass heißt, wir haben bis jetzt auch schon mit Variablen gearbeitet, nur konnten wir deren Wert noch nicht ändern.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> i <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">set!</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">set!</span> i <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Die Variable <em>i</em> hat nach der ersten Zeile den Wert 0, da sie mit <em>define</em> mit dem Wert 0 definiert wird.<br />
Nach Zeile 2 ist der Wert von <em>i</em> 1, da wir es explizit mit <em>set!</em> festlegen.<br />
In Zeile 3 nutzen brechnen wir den neuen Wert von <em>i</em> mit dem alten (oder bisherigem) Wert von <em>i</em>. <em>i</em> ist also nach dieser Zeile 2.</p>
<p>Das Ausrufezeichen ist eine Scheme Konvention. Man muss sich nicht daran halten, aber es ist extrem sinnvoll. Denn so kann jeder sofort erkennen dass eine Funktion eine oder mehrere Zuweisungen vornimmt.<br />
Wenn man also eine Funktion schreibt, die einen Parameter verändert, dann sollte man an den Funktionsname ein Ausrufezeichen anhängen.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="U2NoZW1lIEt1cnMg4oCTIFRlaWwgNjogc2V0IQ==" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzExLzI4L3NjaGVtZS1rdXJzLSVlMiU4MCU5My10ZWlsLTYtc2V0Lw==" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMS0yOCAxNDoxMTozNA==" /><input type="hidden" name="postContent_0" value="PHA+QmlzIGpldHp0IGhhYmVuIHdpciBpbiBTY2hlbWUgbnVyIG1pdCBLb25zdGFudGVuIGdlYXJiZWl0ZXQsIGRpZSBtYW4gZWlubWFsIG1pdCBlaW5lbSBXZXJ0IGJlbGVnZW4ga2Fubi48YnIgLz4KTWl0IDxlbT5zZXQhPC9lbT4ga2FubiBtYW4gYWJlciBkZW4gV2VydCBlaW5lciBWYXJpYWJsZSDDpG5kZXJuLiBEYXZvciBtdXNzIG1hbiBkaWUgVmFyaWFibGUgYWJlciB3aWUgZWluZSBLb25zdGFudGUgbWl0IDxlbT5kZWZpbmU8L2VtPiBlcnN0ZWxsZW4sIGRhc3MgaGVpw590LCB3aXIgaGFiZW4gYmlzIGpldHp0IGF1Y2ggc2Nob24gbWl0IFZhcmlhYmxlbiBnZWFyYmVpdGV0LCBudXIga29ubnRlbiB3aXIgZGVyZW4gV2VydCBub2NoIG5pY2h0IMOkbmRlcm4uPC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfMjY6OjwvZGl2Pgo8cD5EaWUgVmFyaWFibGUgPGVtPmk8L2VtPiBoYXQgbmFjaCBkZXIgZXJzdGVuIFplaWxlIGRlbiBXZXJ0IDAsIGRhIHNpZSBtaXQgPGVtPmRlZmluZTwvZW0+IG1pdCBkZW0gV2VydCAwIGRlZmluaWVydCB3aXJkLjxiciAvPgpOYWNoIFplaWxlIDIgaXN0IGRlciBXZXJ0IHZvbiA8ZW0+aTwvZW0+IDEsIGRhIHdpciBlcyBleHBsaXppdCBtaXQgPGVtPnNldCE8L2VtPiBmZXN0bGVnZW4uPGJyIC8+CkluIFplaWxlIDMgbnV0emVuIGJyZWNobmVuIHdpciBkZW4gbmV1ZW4gV2VydCB2b24gPGVtPmk8L2VtPiBtaXQgZGVtIGFsdGVuIChvZGVyIGJpc2hlcmlnZW0pIFdlcnQgdm9uIDxlbT5pPC9lbT4uIDxlbT5pPC9lbT4gaXN0IGFsc28gbmFjaCBkaWVzZXIgWmVpbGUgMi48L3A+CjxwPkRhcyBBdXNydWZlemVpY2hlbiBpc3QgZWluZSBTY2hlbWUgS29udmVudGlvbi4gTWFuIG11c3Mgc2ljaCBuaWNodCBkYXJhbiBoYWx0ZW4sIGFiZXIgZXMgaXN0IGV4dHJlbSBzaW5udm9sbC4gRGVubiBzbyBrYW5uIGplZGVyIHNvZm9ydCBlcmtlbm5lbiBkYXNzIGVpbmUgRnVua3Rpb24gZWluZSBvZGVyIG1laHJlcmUgWnV3ZWlzdW5nZW4gdm9ybmltbXQuPGJyIC8+Cldlbm4gbWFuIGFsc28gZWluZSBGdW5rdGlvbiBzY2hyZWlidCwgZGllIGVpbmVuIFBhcmFtZXRlciB2ZXLDpG5kZXJ0LCBkYW5uIHNvbGx0ZSBtYW4gYW4gZGVuIEZ1bmt0aW9uc25hbWUgZWluIEF1c3J1ZmV6ZWljaGVuIGFuaMOkbmdlbi48L3A+Cg==" /><a href="http://de.pdf24.org" target="_blank" title="PDF Download"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Download" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-6-set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheme Kurs – Teil 5: local</title>
		<link>http://brianp.de/2009/10/30/scheme-kurs-%e2%80%93-teil-5-local/</link>
		<comments>http://brianp.de/2009/10/30/scheme-kurs-%e2%80%93-teil-5-local/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 20:57:16 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[local]]></category>
		<category><![CDATA[Namensraum]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=513</guid>
		<description><![CDATA[Mit dem Schlüsselwort local kann man in Scheme einen neuen Namesraum definieren, in dem man Variablen und Funktionen völlig normal erstellen und nutzen kann, mit dem Unterschied das diese Variablen und Funktionen nach Ende des local Bereiches nicht mehr existieren &#8211; der Name ist also wieder frei und kann erneut vergeben werden. Beispiel: &#62; &#40;define [...]]]></description>
			<content:encoded><![CDATA[<p>Mit dem Schlüsselwort local kann man in Scheme einen neuen Namesraum definieren, in dem man Variablen und Funktionen völlig normal erstellen und nutzen kann, mit dem Unterschied das diese Variablen und Funktionen nach Ende des local Bereiches nicht mehr existieren &#8211; der Name ist also wieder frei und kann erneut vergeben werden.</p>
<p>Beispiel:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> x <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&gt;</span> x<br />
<span style="color: #cc66cc;">5</span><br />
<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span>local <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> x <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #cc66cc;">10</span><br />
<span style="color: #66cc66;">&gt;</span> x<br />
<span style="color: #cc66cc;">5</span></div></div>
<p>Syntax:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>local <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span>expression1<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>expression2<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>...<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span>expression3<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>In der Klammer in der <em>expression1</em> und <em>expression2</em> stehen können beliebig viele variable Eigenschaften definiert werden. Danach (im den Klammern in denen <em>expression3</em> steht) wird dann die eigentliche Logik geschrieben.</p>
<p><em>local</em> ist wichtig wenn man eine temporäre Variable braucht, in einer rekursiv aufgerufenen Funktion.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="U2NoZW1lIEt1cnMg4oCTIFRlaWwgNTogbG9jYWw=" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzEwLzMwL3NjaGVtZS1rdXJzLSVlMiU4MCU5My10ZWlsLTUtbG9jYWwv" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMC0zMCAyMjoxMDoxNg==" /><input type="hidden" name="postContent_0" value="PHA+TWl0IGRlbSBTY2hsw7xzc2Vsd29ydCBsb2NhbCBrYW5uIG1hbiBpbiBTY2hlbWUgZWluZW4gbmV1ZW4gTmFtZXNyYXVtIGRlZmluaWVyZW4sIGluIGRlbSBtYW4gVmFyaWFibGVuIHVuZCBGdW5rdGlvbmVuIHbDtmxsaWcgbm9ybWFsIGVyc3RlbGxlbiB1bmQgbnV0emVuIGthbm4sIG1pdCBkZW0gVW50ZXJzY2hpZWQgZGFzIGRpZXNlIFZhcmlhYmxlbiB1bmQgRnVua3Rpb25lbiBuYWNoIEVuZGUgZGVzIGxvY2FsIEJlcmVpY2hlcyBuaWNodCBtZWhyIGV4aXN0aWVyZW4gJiM4MjExOyBkZXIgTmFtZSBpc3QgYWxzbyB3aWVkZXIgZnJlaSB1bmQga2FubiBlcm5ldXQgdmVyZ2ViZW4gd2VyZGVuLjwvcD4KPHA+QmVpc3BpZWw6PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfMjk6OjwvZGl2Pgo8cD5TeW50YXg6PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfMzA6OjwvZGl2Pgo8cD5JbiBkZXIgS2xhbW1lciBpbiBkZXIgPGVtPmV4cHJlc3Npb24xPC9lbT4gdW5kIDxlbT5leHByZXNzaW9uMjwvZW0+IHN0ZWhlbiBrw7ZubmVuIGJlbGllYmlnIHZpZWxlIHZhcmlhYmxlIEVpZ2Vuc2NoYWZ0ZW4gZGVmaW5pZXJ0IHdlcmRlbi4gRGFuYWNoIChpbSBkZW4gS2xhbW1lcm4gaW4gZGVuZW4gPGVtPmV4cHJlc3Npb24zPC9lbT4gc3RlaHQpIHdpcmQgZGFubiBkaWUgZWlnZW50bGljaGUgTG9naWsgZ2VzY2hyaWViZW4uPC9wPgo8cD48ZW0+bG9jYWw8L2VtPiBpc3Qgd2ljaHRpZyB3ZW5uIG1hbiBlaW5lIHRlbXBvcsOkcmUgVmFyaWFibGUgYnJhdWNodCwgaW4gZWluZXIgcmVrdXJzaXYgYXVmZ2VydWZlbmVuIEZ1bmt0aW9uLjwvcD4K" /><a href="http://de.pdf24.org" target="_blank" title="PDF Creator"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Creator" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/30/scheme-kurs-%e2%80%93-teil-5-local/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auswertungsreihenfolge</title>
		<link>http://brianp.de/2009/10/28/auswertungsreihenfolge/</link>
		<comments>http://brianp.de/2009/10/28/auswertungsreihenfolge/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 19:59:32 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Applikativ]]></category>
		<category><![CDATA[Auswertungsreihenfolge]]></category>
		<category><![CDATA[Normal]]></category>
		<category><![CDATA[Scheme]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=503</guid>
		<description><![CDATA[Es gibt zwei verschiedene Reihenfolgen wie Ausdrücke ausgewertet &#8211; also abgearbeitet &#8211; werden können. Ich möchte die beiden Reihenfolgen an folgendem (nicht ganz sinnvollem) Beispiel erklären: &#40;define &#40;quadrat-negativ zahl&#41; &#40;- &#40;* zahl zahl&#41;&#41;&#41; &#40;define &#40;quadrat-positiv zahl&#41; &#40;* zahl zahl&#41;&#41; Applikative Auswertungsreihenfolge Bei derApplikative Auswertungsreihenfolge werden zuerst die höchstwertigen Klammern ausgewertet, bis man zur Hauptklammer gelangt. [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt zwei verschiedene Reihenfolgen wie Ausdrücke ausgewertet &#8211; also abgearbeitet &#8211; werden können. Ich möchte die beiden Reihenfolgen an folgendem (nicht ganz sinnvollem) Beispiel erklären:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>negativ zahl<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> zahl zahl<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv zahl<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> zahl zahl<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<ul>
<li>
		<strong>Applikative Auswertungsreihenfolge</strong><br />
		Bei derApplikative Auswertungsreihenfolge werden zuerst die höchstwertigen Klammern ausgewertet, bis man zur Hauptklammer gelangt.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>negativ <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>negativ <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>negativ <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>negativ <span style="color: #cc66cc;">25</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">25</span> <span style="color: #cc66cc;">25</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">625</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Wie man sehen kann, werden die Zahlen erst ausgerechnet, wenn sie wirklich an der Reihe sind. Genau so wird auch mit Funktionen verfahren. Sie 	werden erst &#8220;eingesetzt&#8221;, wenn es nötig wird.
	</li>
<li>
		<strong>Normale Auswertungsreihenfolge</strong><br />
		Bei der Normale Auswertungsreihenfolge ist es genau umgedreht. Es wird der Gesamtausdruck einfach von Anfang an abgegangen, und sobald ein gerade gelesener Ausdruck ausführbar ist, wird er ausgeführt. Genau so wird auch mit Funktionen verfahren:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>negativ <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">25</span> <span style="color: #66cc66;">&#40;</span>quadrat<span style="color: #66cc66;">-</span>positiv <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">25</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">25</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">5</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">25</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">5</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">25</span> <span style="color: #cc66cc;">25</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">625</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Natürlich liefert auch diese Auswertungsreihenfolge das gleiche Ergebnis wie die Normale, aber es ist in diesem Beispiel viel aufwendiger und unübersichtlicher.
	</li>
</ul>
<p>In Scheme und vielen anderen Programmiersprachen wird die <strong>applikative Auswertungsreihenfolge</strong> verwendet &#8211; mit der Ausnahme von ifs, conds, ands, &#8230; Der Vorteil ist, das wenn man z.B. eine if-Bedingung hat:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">AND</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">4</span> <span style="color: #cc66cc;">9</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span>sehr<span style="color: #66cc66;">-</span>aufwendige<span style="color: #66cc66;">-</span>funktion params<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp;...<br />
<span style="color: #66cc66;">&#41;</span></div></div>
<p>und man bemerkt schon bei der ersten Bedingung <em>(= 4 9)</em> dass die Aussage falsch ist, dann kann die gesamte Bedingung nicht mehr <em>true</em> werden, da sie mit einem AND Verknüpft ist. Deshalb kann man sich das Ausführen der Funktion <em>(sehr-aufwendige-funktion params)</em> sparen und direkt ins <em>else</em> springen.</p>
<p><small>Bemerk für mich: Foliensatz T4, Folien 2-5 und Übung 1, Aufgabe 5.</small></p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="QXVzd2VydHVuZ3NyZWloZW5mb2xnZQ==" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzEwLzI4L2F1c3dlcnR1bmdzcmVpaGVuZm9sZ2Uv" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMC0yOCAyMToxMDozMg==" /><input type="hidden" name="postContent_0" value="PHA+RXMgZ2lidCB6d2VpIHZlcnNjaGllZGVuZSBSZWloZW5mb2xnZW4gd2llIEF1c2Ryw7xja2UgYXVzZ2V3ZXJ0ZXQgJiM4MjExOyBhbHNvIGFiZ2VhcmJlaXRldCAmIzgyMTE7IHdlcmRlbiBrw7ZubmVuLiBJY2ggbcO2Y2h0ZSBkaWUgYmVpZGVuIFJlaWhlbmZvbGdlbiBhbiBmb2xnZW5kZW0gKG5pY2h0IGdhbnogc2lubnZvbGxlbSkgQmVpc3BpZWwgZXJrbMOkcmVuOjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzM1Ojo8L2Rpdj4KPHVsPgo8bGk+CgkJPHN0cm9uZz5BcHBsaWthdGl2ZSBBdXN3ZXJ0dW5nc3JlaWhlbmZvbGdlPC9zdHJvbmc+PGJyIC8+CgkJQmVpIGRlckFwcGxpa2F0aXZlIEF1c3dlcnR1bmdzcmVpaGVuZm9sZ2Ugd2VyZGVuIHp1ZXJzdCBkaWUgaMO2Y2hzdHdlcnRpZ2VuIEtsYW1tZXJuIGF1c2dld2VydGV0LCBiaXMgbWFuIHp1ciBIYXVwdGtsYW1tZXIgZ2VsYW5ndC48L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS18zNjo6PC9kaXY+CjxwPldpZSBtYW4gc2VoZW4ga2Fubiwgd2VyZGVuIGRpZSBaYWhsZW4gZXJzdCBhdXNnZXJlY2huZXQsIHdlbm4gc2llIHdpcmtsaWNoIGFuIGRlciBSZWloZSBzaW5kLiBHZW5hdSBzbyB3aXJkIGF1Y2ggbWl0IEZ1bmt0aW9uZW4gdmVyZmFocmVuLiBTaWUgCXdlcmRlbiBlcnN0ICYjODIyMDtlaW5nZXNldHp0JiM4MjIxOywgd2VubiBlcyBuw7Z0aWcgd2lyZC4KCTwvbGk+CjxsaT4KCQk8c3Ryb25nPk5vcm1hbGUgQXVzd2VydHVuZ3NyZWloZW5mb2xnZTwvc3Ryb25nPjxiciAvPgoJCUJlaSBkZXIgTm9ybWFsZSBBdXN3ZXJ0dW5nc3JlaWhlbmZvbGdlIGlzdCBlcyBnZW5hdSB1bWdlZHJlaHQuIEVzIHdpcmQgZGVyIEdlc2FtdGF1c2RydWNrIGVpbmZhY2ggdm9uIEFuZmFuZyBhbiBhYmdlZ2FuZ2VuLCB1bmQgc29iYWxkIGVpbiBnZXJhZGUgZ2VsZXNlbmVyIEF1c2RydWNrIGF1c2bDvGhyYmFyIGlzdCwgd2lyZCBlciBhdXNnZWbDvGhydC4gR2VuYXUgc28gd2lyZCBhdWNoIG1pdCBGdW5rdGlvbmVuIHZlcmZhaHJlbjo8L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS18zNzo6PC9kaXY+CjxwPk5hdMO8cmxpY2ggbGllZmVydCBhdWNoIGRpZXNlIEF1c3dlcnR1bmdzcmVpaGVuZm9sZ2UgZGFzIGdsZWljaGUgRXJnZWJuaXMgd2llIGRpZSBOb3JtYWxlLCBhYmVyIGVzIGlzdCBpbiBkaWVzZW0gQmVpc3BpZWwgdmllbCBhdWZ3ZW5kaWdlciB1bmQgdW7DvGJlcnNpY2h0bGljaGVyLgoJPC9saT4KPC91bD4KPHA+SW4gU2NoZW1lIHVuZCB2aWVsZW4gYW5kZXJlbiBQcm9ncmFtbWllcnNwcmFjaGVuIHdpcmQgZGllIDxzdHJvbmc+YXBwbGlrYXRpdmUgQXVzd2VydHVuZ3NyZWloZW5mb2xnZTwvc3Ryb25nPiB2ZXJ3ZW5kZXQgJiM4MjExOyBtaXQgZGVyIEF1c25haG1lIHZvbiBpZnMsIGNvbmRzLCBhbmRzLCAmIzgyMzA7IERlciBWb3J0ZWlsIGlzdCwgZGFzIHdlbm4gbWFuIHouQi4gZWluZSBpZi1CZWRpbmd1bmcgaGF0OjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzM4Ojo8L2Rpdj4KPHA+dW5kIG1hbiBiZW1lcmt0IHNjaG9uIGJlaSBkZXIgZXJzdGVuIEJlZGluZ3VuZyA8ZW0+KD0gNCA5KTwvZW0+IGRhc3MgZGllIEF1c3NhZ2UgZmFsc2NoIGlzdCwgZGFubiBrYW5uIGRpZSBnZXNhbXRlIEJlZGluZ3VuZyBuaWNodCBtZWhyIDxlbT50cnVlPC9lbT4gd2VyZGVuLCBkYSBzaWUgbWl0IGVpbmVtIEFORCBWZXJrbsO8cGZ0IGlzdC4gRGVzaGFsYiBrYW5uIG1hbiBzaWNoIGRhcyBBdXNmw7xocmVuIGRlciBGdW5rdGlvbiA8ZW0+KHNlaHItYXVmd2VuZGlnZS1mdW5rdGlvbiBwYXJhbXMpPC9lbT4gc3BhcmVuIHVuZCBkaXJla3QgaW5zIDxlbT5lbHNlPC9lbT4gc3ByaW5nZW4uPC9wPgo8cD48c21hbGw+QmVtZXJrIGbDvHIgbWljaDogRm9saWVuc2F0eiBUNCwgRm9saWVuIDItNSB1bmQgw5xidW5nIDEsIEF1ZmdhYmUgNS48L3NtYWxsPjwvcD4K" /><a href="http://de.pdf24.org" target="_blank" title="PDF Download"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Download" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/28/auswertungsreihenfolge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheme Kurs – Teil 4: Listen und Prädikate</title>
		<link>http://brianp.de/2009/10/23/scheme-kurs-%e2%80%93-teil-4-listen-und-pradikate/</link>
		<comments>http://brianp.de/2009/10/23/scheme-kurs-%e2%80%93-teil-4-listen-und-pradikate/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 20:02:31 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[empty]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[Listen]]></category>
		<category><![CDATA[Prädikat]]></category>
		<category><![CDATA[rekursiv]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=403</guid>
		<description><![CDATA[Oft weiß man nicht von Anfang an wie viele Elemente man abarbeiten muss. Deshalb kann man diese auch nicht in einem statischem Datentyp speichern, sondern man muss auf dynamische Datentypen zurückgreifen. Bei diesen kann man die Anzahl der Elemente auch zu Laufzeit problemlos ändern. Solche Datentypen sind zum Beispiel Listen. Diese Strukturen werden auch als [...]]]></description>
			<content:encoded><![CDATA[<p>Oft weiß man nicht von Anfang an wie viele Elemente man abarbeiten muss. Deshalb kann man diese auch nicht in einem statischem Datentyp speichern, sondern man muss auf dynamische Datentypen zurückgreifen. Bei diesen kann man die Anzahl der Elemente auch zu Laufzeit problemlos ändern. Solche Datentypen sind zum Beispiel Listen.<br />
Diese Strukturen werden auch als <strong>rekursive Datenstrukturen</strong> bezeichnet, weil jedes Element in der Liste eine Instanz zu seinem Nachbarn hat. Jedes Element kennt als das Element <em>&#8220;rechts&#8221;</em> neben ihm (wo auch immer rechts sein mag). Dabei ist darauf zu achten, das es einen speziellen Wert gibt, den nur das letzte Element besitzt um zu signalisieren das es kein Element mehr nach ihm gibt.</p>
<p>Rekursion umgangssprachlich beschrieben:</p>
<blockquote><p>Irgendwo in der eigenen Definition (z.B. Listen(-feld)- oder Funktionsdefinition) ist ein Verweis auf mich selbst, oder auf etwas gleichen Typs.</p></blockquote>
<h3>Eine Liste erstellen</h3>
<p>Eine Liste wird ähnlich wie eine Variable definiert:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> liste<br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> 'element1 <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cons</span> 'element2 empty<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Wir haben also eine Liste mit dem Name <em>liste</em> erstellt mit 2 Elementen. Das dritte Element <em>empty</em> ist das oben erwähnte Element welches signalisiert das das Ende der Liste erreicht wurde. Die Funktion cons (engl. <em>cons</em>truct) erwartet immer 2 Parameter: Der Erste ist das Element was man an die Liste anfügen will, und im 2. Parameter kann man entweder das nächste Listenelement anhängen oder man setzt das <em>empty</em> Element.</p>
<p>Man kann jeden beliebigen Datentyp in der Liste speichern, auch gemixt &#8211; und auch neue eigenständige Listen. Zum Beispiel kann das erste Element ein Symbol, das Zweite eine Zahl, das Dritte ein String usw. sein. Es ist bloß wichtig darauf zu achten, dass man prüft welchen Typs das aktuelle Element ist, bevor man es verwendet.</p>
<p>Es gibt noch eine weitere Möglichkeit eine Liste zu erstellen, und zwar mit der Funktion <em>list</em>:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #cc66cc;">52</span> 'hallo liste 'und 'so 'weiter<span style="color: #66cc66;">&#41;</span></div></div>
<p>Der Funktion <em>list</em> kann man beliebig viele Parameter übergeben, auch der Typ ist egal!</p>
<h3>Nächster Bitte!</h3>
<p>Stellen wir uns die Liste die wir erstellt haben nun bildlich vor:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">| 'element1 |----&gt;| 'element2 |----&gt; empty</div></div>
<p>Mit Scheme kann man nur auf das erste Element (<em>first</em>) der Liste zugreifen.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>first liste<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-&gt;</span> 'element1</div></div>
<p>Hier sehen wir wie man auf das erste Element in der vorhin definierten Liste zugreift. Dabei gibt die Funktion das entsprechende Symbol <em>&#8216;element1</em> zurück.<br />
Will man auf das zweite, oder irgendein anderes Element zugreifen so überspringt man das Element davor. Dazu gibt es die Funktion <em>rest</em>. Wenn man die Prozedur <em>rest</em> auf eine Liste anwendet, wird das erste Element der Liste fallen gelassen und alle übrig geblieben Elemente sind die neue Liste.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> neue<span style="color: #66cc66;">-</span>liste <span style="color: #66cc66;">&#40;</span>rest liste<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Die neue Liste sieht also so aus:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">| 'element2 |----&gt; empty</div></div>
<p>Jetzt kann man mit <em>first</em> auf das vormals Zweite, jetzt aber erste Element zugreifen.</p>
<h3>empty?</h3>
<p>Man kann die Prozedur <em>rest</em> ein weiteres mal auf die Liste <em>neue-liste</em> anwenden, dann zeigt das erste Listenelement aber auf <em>empty</em> &#8211; die Liste ist also leer. Wenn man jetzt versucht mit <em>first</em> auf das Element zuzugreifen gibt es einen Fehler!<br />
Damit das nicht passiert gibt es so genannte <strong>Prädikate</strong>.<br />
Mit der Funktion <em>empty?</em> kann man abfragen ob das aktuelle Element das spezielle <em>empty</em> Element ist.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>empty? <span style="color: #66cc66;">&#40;</span>rest neue<span style="color: #66cc66;">-</span>liste<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-&gt;</span> true</div></div>
<h3>andere Prädikate</h3>
<p>Es gibt noch eine Menge anderer Prädikate. Zum Beispiel hat jeder Datentyp sein eigenes.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">symbol?</span> 'test<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-&gt;</span> true<br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">symbol?</span> <span style="color: #cc66cc;">42</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-&gt;</span> false<br />
<br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list?</span> liste<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-&gt;</span> true</div></div>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="U2NoZW1lIEt1cnMg4oCTIFRlaWwgNDogTGlzdGVuIHVuZCBQcsOkZGlrYXRl" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzEwLzIzL3NjaGVtZS1rdXJzLSVlMiU4MCU5My10ZWlsLTQtbGlzdGVuLXVuZC1wcmFkaWthdGUv" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMC0yMyAyMjoxMDozMQ==" /><input type="hidden" name="postContent_0" value="PHA+T2Z0IHdlacOfIG1hbiBuaWNodCB2b24gQW5mYW5nIGFuIHdpZSB2aWVsZSBFbGVtZW50ZSBtYW4gYWJhcmJlaXRlbiBtdXNzLiBEZXNoYWxiIGthbm4gbWFuIGRpZXNlIGF1Y2ggbmljaHQgaW4gZWluZW0gc3RhdGlzY2hlbSBEYXRlbnR5cCBzcGVpY2hlcm4sIHNvbmRlcm4gbWFuIG11c3MgYXVmIGR5bmFtaXNjaGUgRGF0ZW50eXBlbiB6dXLDvGNrZ3JlaWZlbi4gQmVpIGRpZXNlbiBrYW5uIG1hbiBkaWUgQW56YWhsIGRlciBFbGVtZW50ZSBhdWNoIHp1IExhdWZ6ZWl0IHByb2JsZW1sb3Mgw6RuZGVybi4gU29sY2hlIERhdGVudHlwZW4gc2luZCB6dW0gQmVpc3BpZWwgTGlzdGVuLjxiciAvPgpEaWVzZSBTdHJ1a3R1cmVuIHdlcmRlbiBhdWNoIGFscyA8c3Ryb25nPnJla3Vyc2l2ZSBEYXRlbnN0cnVrdHVyZW48L3N0cm9uZz4gYmV6ZWljaG5ldCwgd2VpbCBqZWRlcyBFbGVtZW50IGluIGRlciBMaXN0ZSBlaW5lIEluc3RhbnogenUgc2VpbmVtIE5hY2hiYXJuIGhhdC4gSmVkZXMgRWxlbWVudCBrZW5udCBhbHMgZGFzIEVsZW1lbnQgPGVtPiYjODIyMDtyZWNodHMmIzgyMjE7PC9lbT4gbmViZW4gaWhtICh3byBhdWNoIGltbWVyIHJlY2h0cyBzZWluIG1hZykuIERhYmVpIGlzdCBkYXJhdWYgenUgYWNodGVuLCBkYXMgZXMgZWluZW4gc3BlemllbGxlbiBXZXJ0IGdpYnQsIGRlbiBudXIgZGFzIGxldHp0ZSBFbGVtZW50IGJlc2l0enQgdW0genUgc2lnbmFsaXNpZXJlbiBkYXMgZXMga2VpbiBFbGVtZW50IG1laHIgbmFjaCBpaG0gZ2lidC48L3A+CjxwPlJla3Vyc2lvbiB1bWdhbmdzc3ByYWNobGljaCBiZXNjaHJpZWJlbjo8L3A+CjxibG9ja3F1b3RlPjxwPklyZ2VuZHdvIGluIGRlciBlaWdlbmVuIERlZmluaXRpb24gKHouQi4gTGlzdGVuKC1mZWxkKS0gb2RlciBGdW5rdGlvbnNkZWZpbml0aW9uKSBpc3QgZWluIFZlcndlaXMgYXVmIG1pY2ggc2VsYnN0LCBvZGVyIGF1ZiBldHdhcyBnbGVpY2hlbiBUeXBzLjwvcD48L2Jsb2NrcXVvdGU+CjxoMz5FaW5lIExpc3RlIGVyc3RlbGxlbjwvaDM+CjxwPkVpbmUgTGlzdGUgd2lyZCDDpGhubGljaCB3aWUgZWluZSBWYXJpYWJsZSBkZWZpbmllcnQ6PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNDc6OjwvZGl2Pgo8cD5XaXIgaGFiZW4gYWxzbyBlaW5lIExpc3RlIG1pdCBkZW0gTmFtZSA8ZW0+bGlzdGU8L2VtPiBlcnN0ZWxsdCBtaXQgMiBFbGVtZW50ZW4uIERhcyBkcml0dGUgRWxlbWVudCA8ZW0+ZW1wdHk8L2VtPiBpc3QgZGFzIG9iZW4gZXJ3w6RobnRlIEVsZW1lbnQgd2VsY2hlcyBzaWduYWxpc2llcnQgZGFzIGRhcyBFbmRlIGRlciBMaXN0ZSBlcnJlaWNodCB3dXJkZS4gRGllIEZ1bmt0aW9uIGNvbnMgKGVuZ2wuIDxlbT5jb25zPC9lbT50cnVjdCkgZXJ3YXJ0ZXQgaW1tZXIgMiBQYXJhbWV0ZXI6IERlciBFcnN0ZSBpc3QgZGFzIEVsZW1lbnQgd2FzIG1hbiBhbiBkaWUgTGlzdGUgYW5mw7xnZW4gd2lsbCwgdW5kIGltIDIuIFBhcmFtZXRlciBrYW5uIG1hbiBlbnR3ZWRlciBkYXMgbsOkY2hzdGUgTGlzdGVuZWxlbWVudCBhbmjDpG5nZW4gb2RlciBtYW4gc2V0enQgZGFzIDxlbT5lbXB0eTwvZW0+IEVsZW1lbnQuPC9wPgo8cD5NYW4ga2FubiBqZWRlbiBiZWxpZWJpZ2VuIERhdGVudHlwIGluIGRlciBMaXN0ZSBzcGVpY2hlcm4sIGF1Y2ggZ2VtaXh0ICYjODIxMTsgdW5kIGF1Y2ggbmV1ZSBlaWdlbnN0w6RuZGlnZSBMaXN0ZW4uIFp1bSBCZWlzcGllbCBrYW5uIGRhcyBlcnN0ZSBFbGVtZW50IGVpbiBTeW1ib2wsIGRhcyBad2VpdGUgZWluZSBaYWhsLCBkYXMgRHJpdHRlIGVpbiBTdHJpbmcgdXN3LiBzZWluLiBFcyBpc3QgYmxvw58gd2ljaHRpZyBkYXJhdWYgenUgYWNodGVuLCBkYXNzIG1hbiBwcsO8ZnQgd2VsY2hlbiBUeXBzIGRhcyBha3R1ZWxsZSBFbGVtZW50IGlzdCwgYmV2b3IgbWFuIGVzIHZlcndlbmRldC48L3A+CjxwPkVzIGdpYnQgbm9jaCBlaW5lIHdlaXRlcmUgTcO2Z2xpY2hrZWl0IGVpbmUgTGlzdGUgenUgZXJzdGVsbGVuLCB1bmQgendhciBtaXQgZGVyIEZ1bmt0aW9uIDxlbT5saXN0PC9lbT46PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNDg6OjwvZGl2Pgo8cD5EZXIgRnVua3Rpb24gPGVtPmxpc3Q8L2VtPiBrYW5uIG1hbiBiZWxpZWJpZyB2aWVsZSBQYXJhbWV0ZXIgw7xiZXJnZWJlbiwgYXVjaCBkZXIgVHlwIGlzdCBlZ2FsITwvcD4KPGgzPk7DpGNoc3RlciBCaXR0ZSE8L2gzPgo8cD5TdGVsbGVuIHdpciB1bnMgZGllIExpc3RlIGRpZSB3aXIgZXJzdGVsbHQgaGFiZW4gbnVuIGJpbGRsaWNoIHZvcjo8L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS180OTo6PC9kaXY+CjxwPk1pdCBTY2hlbWUga2FubiBtYW4gbnVyIGF1ZiBkYXMgZXJzdGUgRWxlbWVudCAoPGVtPmZpcnN0PC9lbT4pIGRlciBMaXN0ZSB6dWdyZWlmZW4uPC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNTA6OjwvZGl2Pgo8cD5IaWVyIHNlaGVuIHdpciB3aWUgbWFuIGF1ZiBkYXMgZXJzdGUgRWxlbWVudCBpbiBkZXIgdm9yaGluIGRlZmluaWVydGVuIExpc3RlIHp1Z3JlaWZ0LiBEYWJlaSBnaWJ0IGRpZSBGdW5rdGlvbiBkYXMgZW50c3ByZWNoZW5kZSBTeW1ib2wgPGVtPiYjODIxNjtlbGVtZW50MTwvZW0+IHp1csO8Y2suPGJyIC8+CldpbGwgbWFuIGF1ZiBkYXMgendlaXRlLCBvZGVyIGlyZ2VuZGVpbiBhbmRlcmVzIEVsZW1lbnQgenVncmVpZmVuIHNvIMO8YmVyc3ByaW5ndCBtYW4gZGFzIEVsZW1lbnQgZGF2b3IuIERhenUgZ2lidCBlcyBkaWUgRnVua3Rpb24gPGVtPnJlc3Q8L2VtPi4gV2VubiBtYW4gZGllIFByb3plZHVyIDxlbT5yZXN0PC9lbT4gYXVmIGVpbmUgTGlzdGUgYW53ZW5kZXQsIHdpcmQgZGFzIGVyc3RlIEVsZW1lbnQgZGVyIExpc3RlIGZhbGxlbiBnZWxhc3NlbiB1bmQgYWxsZSDDvGJyaWcgZ2VibGllYmVuIEVsZW1lbnRlIHNpbmQgZGllIG5ldWUgTGlzdGUuPC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNTE6OjwvZGl2Pgo8cD5EaWUgbmV1ZSBMaXN0ZSBzaWVodCBhbHNvIHNvIGF1czo8L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS181Mjo6PC9kaXY+CjxwPkpldHp0IGthbm4gbWFuIG1pdCA8ZW0+Zmlyc3Q8L2VtPiBhdWYgZGFzIHZvcm1hbHMgWndlaXRlLCBqZXR6dCBhYmVyIGVyc3RlIEVsZW1lbnQgenVncmVpZmVuLjwvcD4KPGgzPmVtcHR5PzwvaDM+CjxwPk1hbiBrYW5uIGRpZSBQcm96ZWR1ciA8ZW0+cmVzdDwvZW0+IGVpbiB3ZWl0ZXJlcyBtYWwgYXVmIGRpZSBMaXN0ZSA8ZW0+bmV1ZS1saXN0ZTwvZW0+IGFud2VuZGVuLCBkYW5uIHplaWd0IGRhcyBlcnN0ZSBMaXN0ZW5lbGVtZW50IGFiZXIgYXVmIDxlbT5lbXB0eTwvZW0+ICYjODIxMTsgZGllIExpc3RlIGlzdCBhbHNvIGxlZXIuIFdlbm4gbWFuIGpldHp0IHZlcnN1Y2h0IG1pdCA8ZW0+Zmlyc3Q8L2VtPiBhdWYgZGFzIEVsZW1lbnQgenV6dWdyZWlmZW4gZ2lidCBlcyBlaW5lbiBGZWhsZXIhPGJyIC8+CkRhbWl0IGRhcyBuaWNodCBwYXNzaWVydCBnaWJ0IGVzIHNvIGdlbmFubnRlIDxzdHJvbmc+UHLDpGRpa2F0ZTwvc3Ryb25nPi48YnIgLz4KTWl0IGRlciBGdW5rdGlvbiA8ZW0+ZW1wdHk/PC9lbT4ga2FubiBtYW4gYWJmcmFnZW4gb2IgZGFzIGFrdHVlbGxlIEVsZW1lbnQgZGFzIHNwZXppZWxsZSA8ZW0+ZW1wdHk8L2VtPiBFbGVtZW50IGlzdC48L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS181Mzo6PC9kaXY+CjxoMz5hbmRlcmUgUHLDpGRpa2F0ZTwvaDM+CjxwPkVzIGdpYnQgbm9jaCBlaW5lIE1lbmdlIGFuZGVyZXIgUHLDpGRpa2F0ZS4gWnVtIEJlaXNwaWVsIGhhdCBqZWRlciBEYXRlbnR5cCBzZWluIGVpZ2VuZXMuPC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNTQ6OjwvZGl2Pgo=" /><a href="http://de.pdf24.org" target="_blank" title="PDF Download"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Download" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/23/scheme-kurs-%e2%80%93-teil-4-listen-und-pradikate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beliebiges Potenzieren mit Scheme</title>
		<link>http://brianp.de/2009/10/22/beliebiges-potenzieren-mit-scheme/</link>
		<comments>http://brianp.de/2009/10/22/beliebiges-potenzieren-mit-scheme/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 19:28:55 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Funktion]]></category>
		<category><![CDATA[lib]]></category>
		<category><![CDATA[Potenzieren]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=400</guid>
		<description><![CDATA[Leider gibt es in Scheme keine Funktion um eine Zahl beliebig zu potenzieren. Daher hab ich eine kleine Funktion dafür geschrieben: ;; Contract: ^ number number -&#62; number ;; Purpose: Returns result of number1^number2 ;; Example: (^ 2 10) -&#62; 1024 ;; &#160; &#160; &#160; &#160; &#160;(^ 2 -2) -&#62; 0.25 &#40;define &#40;^ x exp&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>Leider gibt es in Scheme keine Funktion um eine Zahl beliebig zu potenzieren. Daher hab ich eine kleine Funktion dafür geschrieben:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">;; Contract: ^ number number -&gt; number</span><br />
<span style="color: #808080; font-style: italic;">;; Purpose: Returns result of number1^number2</span><br />
<span style="color: #808080; font-style: italic;">;; Example: (^ 2 10) -&gt; 1024</span><br />
<span style="color: #808080; font-style: italic;">;; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(^ 2 -2) -&gt; 0.25</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">^</span> x <span style="color: #b1b100;">exp</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">^</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">^</span> x <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> <span style="color: #b1b100;">exp</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> x<span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">=</span> <span style="color: #b1b100;">exp</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>expect <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">^</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1024</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>expect <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">^</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">52</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>expect <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">^</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="QmVsaWViaWdlcyBQb3RlbnppZXJlbiBtaXQgU2NoZW1l" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzEwLzIyL2JlbGllYmlnZXMtcG90ZW56aWVyZW4tbWl0LXNjaGVtZS8=" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMC0yMiAyMToxMDo1NQ==" /><input type="hidden" name="postContent_0" value="PHA+TGVpZGVyIGdpYnQgZXMgaW4gU2NoZW1lIGtlaW5lIEZ1bmt0aW9uIHVtIGVpbmUgWmFobCBiZWxpZWJpZyB6dSBwb3RlbnppZXJlbi4gRGFoZXIgaGFiIGljaCBlaW5lIGtsZWluZSBGdW5rdGlvbiBkYWbDvHIgZ2VzY2hyaWViZW46PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNTY6OjwvZGl2Pgo=" /><a href="http://de.pdf24.org" target="_blank" title="PDF erstellen"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF erstellen" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/22/beliebiges-potenzieren-mit-scheme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheme Kurs – Teil 3: Strukturen (struct)</title>
		<link>http://brianp.de/2009/10/20/scheme-kurs-%e2%80%93-teil-3-strukturen-struct/</link>
		<comments>http://brianp.de/2009/10/20/scheme-kurs-%e2%80%93-teil-3-strukturen-struct/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 17:48:26 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Abstraktion]]></category>
		<category><![CDATA[define-struct]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[Struktur]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=385</guid>
		<description><![CDATA[Strukturen gibt es in vielen Programmiersprachen. Sie sind auch sehr sinnvoll, denn oft gilt es, Daten zu irgendetwas zusammen zu fassen. Dabei kann es sich z.B. um eine Person handeln. Jeder Mensch hat einen Vorname, Nachname, Wohnort, etc. Da bietet sich das erstellen einer Struktur an, in der man alle Daten die zu einem Menschen [...]]]></description>
			<content:encoded><![CDATA[<p>Strukturen gibt es in vielen Programmiersprachen. Sie sind auch sehr sinnvoll, denn oft gilt es, Daten zu irgendetwas zusammen zu fassen. Dabei kann es sich z.B. um eine Person handeln. Jeder Mensch hat einen Vorname, Nachname, Wohnort, etc. Da bietet sich das erstellen einer Struktur an, in der man alle Daten die zu <em>einem</em> Menschen gehören zusammen fasst.</p>
<p>In Scheme definiert man eine Struktur (engl. struct) mit:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>define<span style="color: #66cc66;">-</span>struct human <span style="color: #66cc66;">&#40;</span>forname surename residence<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Zuerst gibt man an, dass man eine Struktur definieren möchte. Danach folgt der Name der neuen Struktur und in einer neuen Klammer alle Eigenschaften die die Struktur haben soll (Eigenschaften des Konstruktors).<br />
Danach hat man die Struktur definiert, jetzt muss man noch eine Struktur erstellen, also einen Teil des Speichers reservieren und die bei der Strukturdefinition angegebenen Eigenschaften mit Werten füllen. Man kann auch sagen, man erstellt eine Instanz der Struktur:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> peter<span style="color: #66cc66;">-</span>mustermann<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>human<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span>'Peter 'Mustermann 'Berlin<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Die Instanz erstellt man mit <em>make-human</em>, wobei human natürlich der Name der Struktur ist, gefolgt von einer neuen Klammer mit den Werten die die Struktur speichern soll. Man übergibt die Werte an einen sogenannten <strong>Konstruktor</strong>.</p>
<h3>Wer bist du?</h3>
<p>Wenn man nicht weiß, welche Struktur in einer Variable gespeichert ist, kann man dafür die sogenannte <strong>Prädikat-Prozedur</strong> nutzen.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>human? peter<span style="color: #66cc66;">-</span>mustermann<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-&gt;</span> boolean</div></div>
<p>Die Prädikat-Prozedur ist der Name der Struktur, gefolgt von einem Fragezeichen. Als einzigen Parameter übergibt man die fragwürdige Variable. Die Prozedur gibt einen <em>boolean</em>-Wert zurück. In diesem Fall natürlich <em>true</em>.</p>
<h3>Wie heißt du, und wo kommst du her?</h3>
<p>Möchte man auf eine bestimmte Eigenschaft der Struktur zugreifen und deren Wert auslesen so benutzt man einen sogenannten <strong>Selektor</strong>:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>human<span style="color: #66cc66;">-</span>forename peter<span style="color: #66cc66;">-</span>mustermann<span style="color: #66cc66;">&#41;</span></div></div>
<p>Der Selektor ist der Name der Struktur gefolgt von dem Name der Eigenschaft die man auslesen will. Dazu muss man noch die Variable mit der entsprechenden Struktur angeben. Die Funktion gibt daraufhin den Wert zurück.</p>
<h3>Abstraktion</h3>
<p>Strukturen können sehr gut zur Datenabstraktion genutzt werden, denn sie vereinen zusammen gehörige Daten und helfen diese strukturierter und modularer zu verarbeiten. Des weiteren lässt sich eine Source, die mit <em>struct</em>s arbeitet wesentlich besser lesen, somit erhöhen sie auch die Wartbarkeit von Programmen.<br />
Die Schnittstellen zu den Strukturen stellen die <em>Konstruktoren</em> und <em>Selektoren</em> dar.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="U2NoZW1lIEt1cnMg4oCTIFRlaWwgMzogU3RydWt0dXJlbiAoc3RydWN0KQ==" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzEwLzIwL3NjaGVtZS1rdXJzLSVlMiU4MCU5My10ZWlsLTMtc3RydWt0dXJlbi1zdHJ1Y3Qv" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMC0yMCAxOToxMDoyNg==" /><input type="hidden" name="postContent_0" value="PHA+U3RydWt0dXJlbiBnaWJ0IGVzIGluIHZpZWxlbiBQcm9ncmFtbWllcnNwcmFjaGVuLiBTaWUgc2luZCBhdWNoIHNlaHIgc2lubnZvbGwsIGRlbm4gb2Z0IGdpbHQgZXMsIERhdGVuIHp1IGlyZ2VuZGV0d2FzIHp1c2FtbWVuIHp1IGZhc3Nlbi4gRGFiZWkga2FubiBlcyBzaWNoIHouQi4gdW0gZWluZSBQZXJzb24gaGFuZGVsbi4gSmVkZXIgTWVuc2NoIGhhdCBlaW5lbiBWb3JuYW1lLCBOYWNobmFtZSwgV29obm9ydCwgZXRjLiBEYSBiaWV0ZXQgc2ljaCBkYXMgZXJzdGVsbGVuIGVpbmVyIFN0cnVrdHVyIGFuLCBpbiBkZXIgbWFuIGFsbGUgRGF0ZW4gZGllIHp1IDxlbT5laW5lbTwvZW0+IE1lbnNjaGVuIGdlaMO2cmVuIHp1c2FtbWVuIGZhc3N0LjwvcD4KPHA+SW4gU2NoZW1lIGRlZmluaWVydCBtYW4gZWluZSBTdHJ1a3R1ciAoZW5nbC4gc3RydWN0KSBtaXQ6PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNjE6OjwvZGl2Pgo8cD5adWVyc3QgZ2lidCBtYW4gYW4sIGRhc3MgbWFuIGVpbmUgU3RydWt0dXIgZGVmaW5pZXJlbiBtw7ZjaHRlLiBEYW5hY2ggZm9sZ3QgZGVyIE5hbWUgZGVyIG5ldWVuIFN0cnVrdHVyIHVuZCBpbiBlaW5lciBuZXVlbiBLbGFtbWVyIGFsbGUgRWlnZW5zY2hhZnRlbiBkaWUgZGllIFN0cnVrdHVyIGhhYmVuIHNvbGwgKEVpZ2Vuc2NoYWZ0ZW4gZGVzIEtvbnN0cnVrdG9ycykuPGJyIC8+CkRhbmFjaCBoYXQgbWFuIGRpZSBTdHJ1a3R1ciBkZWZpbmllcnQsIGpldHp0IG11c3MgbWFuIG5vY2ggZWluZSBTdHJ1a3R1ciBlcnN0ZWxsZW4sIGFsc28gZWluZW4gVGVpbCBkZXMgU3BlaWNoZXJzIHJlc2VydmllcmVuIHVuZCBkaWUgYmVpIGRlciBTdHJ1a3R1cmRlZmluaXRpb24gYW5nZWdlYmVuZW4gRWlnZW5zY2hhZnRlbiBtaXQgV2VydGVuIGbDvGxsZW4uIE1hbiBrYW5uIGF1Y2ggc2FnZW4sIG1hbiBlcnN0ZWxsdCBlaW5lIEluc3RhbnogZGVyIFN0cnVrdHVyOjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzYyOjo8L2Rpdj4KPHA+RGllIEluc3RhbnogZXJzdGVsbHQgbWFuIG1pdCA8ZW0+bWFrZS1odW1hbjwvZW0+LCB3b2JlaSBodW1hbiBuYXTDvHJsaWNoIGRlciBOYW1lIGRlciBTdHJ1a3R1ciBpc3QsIGdlZm9sZ3Qgdm9uIGVpbmVyIG5ldWVuIEtsYW1tZXIgbWl0IGRlbiBXZXJ0ZW4gZGllIGRpZSBTdHJ1a3R1ciBzcGVpY2hlcm4gc29sbC4gTWFuIMO8YmVyZ2lidCBkaWUgV2VydGUgYW4gZWluZW4gc29nZW5hbm50ZW4gPHN0cm9uZz5Lb25zdHJ1a3Rvcjwvc3Ryb25nPi48L3A+CjxoMz5XZXIgYmlzdCBkdT88L2gzPgo8cD5XZW5uIG1hbiBuaWNodCB3ZWnDnywgd2VsY2hlIFN0cnVrdHVyIGluIGVpbmVyIFZhcmlhYmxlIGdlc3BlaWNoZXJ0IGlzdCwga2FubiBtYW4gZGFmw7xyIGRpZSBzb2dlbmFubnRlIDxzdHJvbmc+UHLDpGRpa2F0LVByb3plZHVyPC9zdHJvbmc+IG51dHplbi48L3A+CjxkaXY+OjpDT0RFQ09MT1JFUl9CTE9DS182Mzo6PC9kaXY+CjxwPkRpZSBQcsOkZGlrYXQtUHJvemVkdXIgaXN0IGRlciBOYW1lIGRlciBTdHJ1a3R1ciwgZ2Vmb2xndCB2b24gZWluZW0gRnJhZ2V6ZWljaGVuLiBBbHMgZWluemlnZW4gUGFyYW1ldGVyIMO8YmVyZ2lidCBtYW4gZGllIGZyYWd3w7xyZGlnZSBWYXJpYWJsZS4gRGllIFByb3plZHVyIGdpYnQgZWluZW4gPGVtPmJvb2xlYW48L2VtPi1XZXJ0IHp1csO8Y2suIEluIGRpZXNlbSBGYWxsIG5hdMO8cmxpY2ggPGVtPnRydWU8L2VtPi48L3A+CjxoMz5XaWUgaGVpw590IGR1LCB1bmQgd28ga29tbXN0IGR1IGhlcj88L2gzPgo8cD5Nw7ZjaHRlIG1hbiBhdWYgZWluZSBiZXN0aW1tdGUgRWlnZW5zY2hhZnQgZGVyIFN0cnVrdHVyIHp1Z3JlaWZlbiB1bmQgZGVyZW4gV2VydCBhdXNsZXNlbiBzbyBiZW51dHp0IG1hbiBlaW5lbiBzb2dlbmFubnRlbiA8c3Ryb25nPlNlbGVrdG9yPC9zdHJvbmc+OjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzY0Ojo8L2Rpdj4KPHA+RGVyIFNlbGVrdG9yIGlzdCBkZXIgTmFtZSBkZXIgU3RydWt0dXIgZ2Vmb2xndCB2b24gZGVtIE5hbWUgZGVyIEVpZ2Vuc2NoYWZ0IGRpZSBtYW4gYXVzbGVzZW4gd2lsbC4gRGF6dSBtdXNzIG1hbiBub2NoIGRpZSBWYXJpYWJsZSBtaXQgZGVyIGVudHNwcmVjaGVuZGVuIFN0cnVrdHVyIGFuZ2ViZW4uIERpZSBGdW5rdGlvbiBnaWJ0IGRhcmF1ZmhpbiBkZW4gV2VydCB6dXLDvGNrLjwvcD4KPGgzPkFic3RyYWt0aW9uPC9oMz4KPHA+U3RydWt0dXJlbiBrw7ZubmVuIHNlaHIgZ3V0IHp1ciBEYXRlbmFic3RyYWt0aW9uIGdlbnV0enQgd2VyZGVuLCBkZW5uIHNpZSB2ZXJlaW5lbiB6dXNhbW1lbiBnZWjDtnJpZ2UgRGF0ZW4gdW5kIGhlbGZlbiBkaWVzZSBzdHJ1a3R1cmllcnRlciB1bmQgbW9kdWxhcmVyIHp1IHZlcmFyYmVpdGVuLiBEZXMgd2VpdGVyZW4gbMOkc3N0IHNpY2ggZWluZSBTb3VyY2UsIGRpZSBtaXQgPGVtPnN0cnVjdDwvZW0+cyBhcmJlaXRldCB3ZXNlbnRsaWNoIGJlc3NlciBsZXNlbiwgc29taXQgZXJow7ZoZW4gc2llIGF1Y2ggZGllIFdhcnRiYXJrZWl0IHZvbiBQcm9ncmFtbWVuLjxiciAvPgpEaWUgU2Nobml0dHN0ZWxsZW4genUgZGVuIFN0cnVrdHVyZW4gc3RlbGxlbiBkaWUgPGVtPktvbnN0cnVrdG9yZW48L2VtPiB1bmQgPGVtPlNlbGVrdG9yZW48L2VtPiBkYXIuPC9wPgo=" /><a href="http://de.pdf24.org" target="_blank" title="PDF Creator"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Creator" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/20/scheme-kurs-%e2%80%93-teil-3-strukturen-struct/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
