<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: M&#248;nstergjenkjenning i Erlang</title>
	<atom:link href="http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/</link>
	<description>om livet som .net utvikler</description>
	<lastBuildDate>Wed, 16 May 2012 21:05:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-114222</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Sun, 18 Dec 2011 21:51:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-114222</guid>
		<description>Hei Sjur! Jeg skjønner hvorfor du liker din løsning bedre. Rekursjon er gøy! Jeg synes likevel min løsning kommuniserer bittelitt bedre, men takk for eksempelet ditt. Din teknikk er uansett viktig, og hadde egnet seg mye bedre om jeg måtte ha validert en liste som var lengre.</description>
		<content:encoded><![CDATA[<p>Hei Sjur! Jeg skjønner hvorfor du liker din løsning bedre. Rekursjon er gøy! Jeg synes likevel min løsning kommuniserer bittelitt bedre, men takk for eksempelet ditt. Din teknikk er uansett viktig, og hadde egnet seg mye bedre om jeg måtte ha validert en liste som var lengre.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sjur</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-114221</link>
		<dc:creator>Sjur</dc:creator>
		<pubDate>Sun, 18 Dec 2011 21:44:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-114221</guid>
		<description>Hei, likte ikke helt din straight løsning.. Det som er kult mer erlang er jo mønster gjenkjenning og liste håndteringen. Kommer derfor med eget forslag:
&lt;code&gt;
is_straight_sorted([X,Y&#124;R]) when Y == X + 1 -&gt; is_straight_sorted([Y&#124;R]);
is_straight_sorted([_,_&#124;_]) -&gt; no;
is_straight_sorted([_]) -&gt; yes.

is_straight(Hand) -&gt; is_straight_sorted(order(hand_to_values(Hand))).
&lt;/code&gt;
Siden du er så flink til å forklare din kode får jeg vel forsøke å gjøre det samme.

1-3 krever en sortert liste, derav linje 4 som sorterer listen før jeg kaller is_straight_sorted.
Det er i linje 1 magien skjer. Argumentet til funksjonen i 1 matcher alle lister som har 2 eller flere elementer. Første element tilordnes i X, andre i Y og resten i R. R kan være tom liste ([]). Så har jeg lagt inn en såkalt &lt;a href=&quot;http://www.erlang.org/doc/getting_started/seq_prog.html#id62365&quot; rel=&quot;nofollow&quot;&gt;guard&lt;/a&gt; som gjør at patternet kun matcher dersom Y er X + 1. Dersom dette er sant har vi sjekket første element i listen og kan fortsette å sjekke resten av listen ([Y&#124;R]).  Dersom guarden feiler vil vi matche i linje 2 og returnere no. Når vi har sjekke alle elementene og står igjen med siste element i Y og R er tom ([]) matcher hverken 1 eller 2 lenger og vi treffer 3 som da vil si at alle elementer er ok og vi returnerer yes.

Ellers skryt til bloggen din og julekalenderen!
Sjur</description>
		<content:encoded><![CDATA[<p>Hei, likte ikke helt din straight løsning.. Det som er kult mer erlang er jo mønster gjenkjenning og liste håndteringen. Kommer derfor med eget forslag:<br />
<code><br />
is_straight_sorted([X,Y|R]) when Y == X + 1 -&gt; is_straight_sorted([Y|R]);<br />
is_straight_sorted([_,_|_]) -&gt; no;<br />
is_straight_sorted([_]) -&gt; yes.</p>
<p>is_straight(Hand) -&gt; is_straight_sorted(order(hand_to_values(Hand))).<br />
</code><br />
Siden du er så flink til å forklare din kode får jeg vel forsøke å gjøre det samme.</p>
<p>1-3 krever en sortert liste, derav linje 4 som sorterer listen før jeg kaller is_straight_sorted.<br />
Det er i linje 1 magien skjer. Argumentet til funksjonen i 1 matcher alle lister som har 2 eller flere elementer. Første element tilordnes i X, andre i Y og resten i R. R kan være tom liste ([]). Så har jeg lagt inn en såkalt <a href="http://www.erlang.org/doc/getting_started/seq_prog.html#id62365" rel="nofollow">guard</a> som gjør at patternet kun matcher dersom Y er X + 1. Dersom dette er sant har vi sjekket første element i listen og kan fortsette å sjekke resten av listen ([Y|R]).  Dersom guarden feiler vil vi matche i linje 2 og returnere no. Når vi har sjekke alle elementene og står igjen med siste element i Y og R er tom ([]) matcher hverken 1 eller 2 lenger og vi treffer 3 som da vil si at alle elementer er ok og vi returnerer yes.</p>
<p>Ellers skryt til bloggen din og julekalenderen!<br />
Sjur</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Haskell</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-113871</link>
		<dc:creator>Haskell</dc:creator>
		<pubDate>Wed, 07 Dec 2011 08:08:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-113871</guid>
		<description>[...] er lazy (for de som vet hva det er), har pattern matching og list comprehensions, og et sterkt, statisk typesystem. Jeg kunne sagt mye mer, men uansett hva [...]</description>
		<content:encoded><![CDATA[<p>[...] er lazy (for de som vet hva det er), har pattern matching og list comprehensions, og et sterkt, statisk typesystem. Jeg kunne sagt mye mer, men uansett hva [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Likheter mellom F# og Erlang</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-113610</link>
		<dc:creator>Likheter mellom F# og Erlang</dc:creator>
		<pubDate>Fri, 18 Nov 2011 14:58:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-113610</guid>
		<description>[...] det kan være fra F# til et språk jeg selv har jobbet endel med, nemlig Erlang. Jeg har blogget om pattern matching i Erlang tidligere, og her kan du se hvordan Christians algoritme ville sett [...]</description>
		<content:encoded><![CDATA[<p>[...] det kan være fra F# til et språk jeg selv har jobbet endel med, nemlig Erlang. Jeg har blogget om pattern matching i Erlang tidligere, og her kan du se hvordan Christians algoritme ville sett [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kenneth</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104550</link>
		<dc:creator>Kenneth</dc:creator>
		<pubDate>Fri, 03 Sep 2010 13:25:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104550</guid>
		<description>Ja, jeg innså til slutt at jeg ikke kunne bruke den &quot;vanlige&quot; metoden for å hente ut fibonacci-rekken, da den er rekursiv. :)</description>
		<content:encoded><![CDATA[<p>Ja, jeg innså til slutt at jeg ikke kunne bruke den &#8220;vanlige&#8221; metoden for å hente ut fibonacci-rekken, da den er rekursiv. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104447</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Thu, 02 Sep 2010 13:45:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104447</guid>
		<description>Kan alltid stole på at Ameth kommer med en fungerende løsning..., som er helt umulig å forstå ;)

For dem som er interessert i å se et hav av ulike implementasjoner av fibonacci i ulike språk: http://en.literateprograms.org/Category:Fibonacci_numbers</description>
		<content:encoded><![CDATA[<p>Kan alltid stole på at Ameth kommer med en fungerende løsning&#8230;, som er helt umulig å forstå ;)</p>
<p>For dem som er interessert i å se et hav av ulike implementasjoner av fibonacci i ulike språk: <a href="http://en.literateprograms.org/Category:Fibonacci_numbers" rel="nofollow">http://en.literateprograms.org/Category:Fibonacci_numbers</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ameth</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104440</link>
		<dc:creator>Ameth</dc:creator>
		<pubDate>Thu, 02 Sep 2010 11:34:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104440</guid>
		<description>Enumerable.Range(1, 11).Select(i =&gt; (Math.Pow(1+Math.Sqrt(5), i) - Math.Pow(1-Math.Sqrt(5), i)) / (Math.Pow(2, i) * Math.Sqrt(5)));

Men noe sier meg at å gjøre det slik ikke var poenget (og jeg kan ikke nok C# til annet (første gang jeg bruker det nå, faktisk)). I Haskell gjøres det uansett slik:

fibs = 1:1:zipWith (+) fibs (tail fibs)</description>
		<content:encoded><![CDATA[<p>Enumerable.Range(1, 11).Select(i =&gt; (Math.Pow(1+Math.Sqrt(5), i) &#8211; Math.Pow(1-Math.Sqrt(5), i)) / (Math.Pow(2, i) * Math.Sqrt(5)));</p>
<p>Men noe sier meg at å gjøre det slik ikke var poenget (og jeg kan ikke nok C# til annet (første gang jeg bruker det nå, faktisk)). I Haskell gjøres det uansett slik:</p>
<p>fibs = 1:1:zipWith (+) fibs (tail fibs)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104302</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Wed, 01 Sep 2010 13:38:59 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104302</guid>
		<description>Ja, Linq og lambda i C# har mange bruksområder, og gir kompakt og fin kode når du venner deg til det. Men fibonaccirekken er nok ikke så enkel nei. Prøv gjerne igjen :)</description>
		<content:encoded><![CDATA[<p>Ja, Linq og lambda i C# har mange bruksområder, og gir kompakt og fin kode når du venner deg til det. Men fibonaccirekken er nok ikke så enkel nei. Prøv gjerne igjen :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kenneth</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104292</link>
		<dc:creator>Kenneth</dc:creator>
		<pubDate>Wed, 01 Sep 2010 12:33:17 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104292</guid>
		<description>Innså til slutt at å produsere fibonacci-følgen med en slik one-liner ikke var riktig så enkelt. Men poenget mitt består! ;)</description>
		<content:encoded><![CDATA[<p>Innså til slutt at å produsere fibonacci-følgen med en slik one-liner ikke var riktig så enkelt. Men poenget mitt består! ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kenneth</title>
		<link>http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104289</link>
		<dc:creator>Kenneth</dc:creator>
		<pubDate>Wed, 01 Sep 2010 12:05:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/04/23/mnstergjenkjenning-i-erlang/#comment-104289</guid>
		<description>Dette er ikke relatert til verken mønstergjenkjenning eller lisp, men jeg ser at du har skrevet en del interessante ting om det i forhold til C# og tankemønster.

Linq og labmda-uttrykk er noe jeg synes er veldig greit i C# og det har ufattelig mange bruksområder for dette og jeg kom på en artig one-liner for initialisering av array i fibonacci-følgen. Du er kanskje klar over dette fra før, men jeg slenger med koden.

int[] fib = Enumerable.Range( 0, 10 ).Select( i =&gt; (i == 0 &#124;&#124; i == 1) ? 0 : i-1 + i-2 ).ToArray();

... Som også selvfølgelig kan initialisere arrays uten stygge for-looper. :)</description>
		<content:encoded><![CDATA[<p>Dette er ikke relatert til verken mønstergjenkjenning eller lisp, men jeg ser at du har skrevet en del interessante ting om det i forhold til C# og tankemønster.</p>
<p>Linq og labmda-uttrykk er noe jeg synes er veldig greit i C# og det har ufattelig mange bruksområder for dette og jeg kom på en artig one-liner for initialisering av array i fibonacci-følgen. Du er kanskje klar over dette fra før, men jeg slenger med koden.</p>
<p>int[] fib = Enumerable.Range( 0, 10 ).Select( i =&gt; (i == 0 || i == 1) ? 0 : i-1 + i-2 ).ToArray();</p>
<p>&#8230; Som også selvfølgelig kan initialisere arrays uten stygge for-looper. :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

