<?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>CodeMocha &#187; ml</title>
	<atom:link href="http://codemocha.com/tag/ml/feed/" rel="self" type="application/rss+xml" />
	<link>http://codemocha.com</link>
	<description>Freshly ground code.  Thoughts on software and algorithms by Chet Mancini</description>
	<lastBuildDate>Wed, 16 Nov 2011 02:26:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Euclidean Algorithm</title>
		<link>http://codemocha.com/2009/07/euclidean-algorithm/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=euclidean-algorithm</link>
		<comments>http://codemocha.com/2009/07/euclidean-algorithm/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 03:46:41 +0000</pubDate>
		<dc:creator>Chet</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[ml]]></category>

		<guid isPermaLink="false">http://codemocha.com/?p=9</guid>
		<description><![CDATA[One of my favorite algorithms is the simple, elegant Euclidean algorithm for finding the greatest common denominator of two numbers. In ML or another functional language it really is beautiful: 12fun gcd&#40;a, 0&#41; = a &#160; &#160;&#124; gcd&#40;a, b&#41; = gcd&#40;b, a mod b&#41;; Of course, the same can be done in Java iteratively: 123456789public [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favorite algorithms is the simple, elegant Euclidean algorithm for finding the greatest common denominator of two numbers.  In ML or another functional language it really is beautiful:<span id="more-9"></span></p>
<div class="codecolorer-container ocaml vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="ocaml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #06c; font-weight: bold;">fun</span> gcd<span style="color: #a52a2a;">&#40;</span>a, <span style="color: #c6c;">0</span><span style="color: #a52a2a;">&#41;</span> <span style="color: #a52a2a;">=</span> a<br />
&nbsp; &nbsp;<span style="color: #a52a2a;">|</span> gcd<span style="color: #a52a2a;">&#40;</span>a, b<span style="color: #a52a2a;">&#41;</span> <span style="color: #a52a2a;">=</span> gcd<span style="color: #a52a2a;">&#40;</span>b, a <span style="color: #06c; font-weight: bold;">mod</span> b<span style="color: #a52a2a;">&#41;</span><span style="color: #a52a2a;">;</span></div></td></tr></tbody></table></div>
<p>Of course, the same can be done in Java iteratively:</p>
<div class="codecolorer-container java vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> gcd<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> a, <span style="color: #000066; font-weight: bold;">int</span> b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">int</span> c<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>b<span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; c <span style="color: #339933;">=</span> a<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; a <span style="color: #339933;">=</span> b<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; b <span style="color: #339933;">=</span> c<span style="color: #339933;">%</span>b<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> a<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Or recursively:</p>
<div class="codecolorer-container java vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> gcd<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> a, <span style="color: #000066; font-weight: bold;">int</span> b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>b<span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> a<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> gcd<span style="color: #009900;">&#40;</span>b, a<span style="color: #339933;">%</span>b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://codemocha.com/2009/07/euclidean-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recursive Fibonacci</title>
		<link>http://codemocha.com/2009/07/recursive-fibonacci/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=recursive-fibonacci</link>
		<comments>http://codemocha.com/2009/07/recursive-fibonacci/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 03:40:28 +0000</pubDate>
		<dc:creator>Chet</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[college]]></category>
		<category><![CDATA[fibonacci]]></category>
		<category><![CDATA[ml]]></category>
		<category><![CDATA[recusion]]></category>

		<guid isPermaLink="false">http://codemocha.com/?p=7</guid>
		<description><![CDATA[Here are two recursive fibonacci functions in ML I did for CS243. Can you tell which one is more efficient? 123456789101112fun fibonacci&#40;n&#41; = &#160; let &#160; &#160; &#160; fun fib&#40;&#40;a, b&#41;, i&#41;= &#160; &#160; &#160; if i=0 then b &#160; &#160; &#160; &#160; else fib&#40;&#40;b, a + b&#41;, i-1&#41;; &#160; &#160; &#160; &#160; &#160; &#160;in [...]]]></description>
			<content:encoded><![CDATA[<p>Here are two recursive fibonacci functions in ML I did for CS243.  Can you tell which one is more efficient?<span id="more-7"></span></p>
<div class="codecolorer-container ocaml vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="ocaml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #06c; font-weight: bold;">fun</span> fibonacci<span style="color: #a52a2a;">&#40;</span>n<span style="color: #a52a2a;">&#41;</span> <span style="color: #a52a2a;">=</span> <br />
&nbsp; <span style="color: #06c; font-weight: bold;">let</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">fun</span> fib<span style="color: #a52a2a;">&#40;</span><span style="color: #a52a2a;">&#40;</span>a, b<span style="color: #a52a2a;">&#41;</span>, i<span style="color: #a52a2a;">&#41;</span><span style="color: #a52a2a;">=</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">if</span> i<span style="color: #a52a2a;">=</span><span style="color: #c6c;">0</span> <span style="color: #06c; font-weight: bold;">then</span> b<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #06c; font-weight: bold;">else</span> fib<span style="color: #a52a2a;">&#40;</span><span style="color: #a52a2a;">&#40;</span>b, a <span style="color: #a52a2a;">+</span> b<span style="color: #a52a2a;">&#41;</span>, i<span style="color: #a52a2a;">-</span><span style="color: #c6c;">1</span><span style="color: #a52a2a;">&#41;</span><span style="color: #a52a2a;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #06c; font-weight: bold;">in</span><br />
&nbsp; fib<span style="color: #a52a2a;">&#40;</span><span style="color: #a52a2a;">&#40;</span><span style="color: #c6c;">0</span>, <span style="color: #c6c;">1</span><span style="color: #a52a2a;">&#41;</span>, n<span style="color: #a52a2a;">&#41;</span><br />
&nbsp; <span style="color: #06c; font-weight: bold;">end</span><span style="color: #a52a2a;">;</span><br />
<br />
<span style="color: #06c; font-weight: bold;">fun</span> fibonacci<span style="color: #a52a2a;">&#40;</span><span style="color: #c6c;">0</span><span style="color: #a52a2a;">&#41;</span> <span style="color: #a52a2a;">=</span> <span style="color: #c6c;">1</span><br />
&nbsp; <span style="color: #a52a2a;">|</span> fibonacci<span style="color: #a52a2a;">&#40;</span><span style="color: #c6c;">1</span><span style="color: #a52a2a;">&#41;</span> <span style="color: #a52a2a;">=</span> <span style="color: #c6c;">1</span><br />
&nbsp; <span style="color: #a52a2a;">|</span> fibonacci<span style="color: #a52a2a;">&#40;</span>n<span style="color: #a52a2a;">&#41;</span> <span style="color: #a52a2a;">=</span> fibonacci<span style="color: #a52a2a;">&#40;</span>n<span style="color: #a52a2a;">-</span><span style="color: #c6c;">1</span><span style="color: #a52a2a;">&#41;</span> <span style="color: #a52a2a;">+</span> fibonacci<span style="color: #a52a2a;">&#40;</span>n<span style="color: #a52a2a;">-</span><span style="color: #c6c;">2</span><span style="color: #a52a2a;">&#41;</span><span style="color: #a52a2a;">;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://codemocha.com/2009/07/recursive-fibonacci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

