<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Entries tagged with Ralf Laemmel</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Tags/ralf-laemmel/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9 - Entries tagged with Ralf Laemmel</title>
      <link>http://channel9.msdn.com/Tags/ralf-laemmel</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Tags/ralf-laemmel</link>
    <language>en</language>
    <pubDate>Wed, 22 May 2013 00:52:17 GMT</pubDate>
    <lastBuildDate>Wed, 22 May 2013 00:52:17 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>5</c9:totalResults>
    <c9:pageCount>1</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>C9 Lectures: Dr. Ralf L&#228;mmel - Going Bananas</title>
      <description><![CDATA[ <p>Dr. Ralf Lämmel returns&nbsp;for an&nbsp;exploration of&nbsp;<strong>folds</strong>, aka <strong>bananas</strong>. This is lecture <strong>5 </strong>in <strong><a href="https://channel9.msdn.com/Tags/ralf-laemmel">his C9 Lecture series</a></strong>&nbsp; covering advanced&nbsp;functional programming topics.&nbsp;Welcome back, Ralf! We're so happy to have you here!</p><p>Why <em>bananas</em>, Ralf?</p><p><em>Banana </em>is functional programming slang for &quot;fold&quot;—an application of the <a href="http://en.wikipedia.org/wiki/Catamorphism">catamorphic recursion scheme</a> most widely known in the <a href="http://en.wikibooks.org/wiki/Haskell/List_processing">higher-order list processing</a> tradition of&nbsp;<a href="http://en.wikipedia.org/wiki/Bird-Meertens_Formalism">Bird-Meertens Formalism</a> and the Squiggol community. <a href="http://research.microsoft.com/en-us/um/people/emeijer/">Erik Meijer</a> used to be known as the &quot;banana man&quot; because of his early research on the subject; he also co-authored <a href="http://academic.research.microsoft.com/Paper/296068.aspx">the seminal paper with theoretical (categorical) foundations on the subject</a>. Incidentally, the paper used the notation of so-called &quot;banana brackets&quot; (instead of using the plain string &quot;foldr&quot;), which sort of explains why we sometimes say bananas. There is no shortage of crazy paper titles on the subject, by the way: &quot;Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire,&quot; &quot;<a href="http://research.microsoft.com/en-us/um/people/emeijer/Papers/Bananas.pdf">Bananas in Space</a>: ...,&quot; &quot;<a href="http://homepages.cwi.nl/~ralf/wgp00/">Dealing with large bananas</a>,&quot; &quot;<a href="http://www.seas.upenn.edu/~sweirich/papers/itabox/MS-CIS-03-26.pdf">Boxes go bananas</a>: ...,&quot; &quot;<a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;_udi=B6V1G-3VTK49S-W&amp;_user=10&amp;_coverDate=11%2F30%2F1996&amp;_rdoc=1&amp;_fmt=high&amp;_orig=search&amp;_origin=search&amp;_sort=d&amp;_docanchor=&amp;view=c&amp;_acct=C000050221&amp;_version=1&amp;_urlVersion=0&amp;_userid=10&amp;md5=d380f8c829a0576bfebf1c5a1d354d68&amp;searchtype=a">See more through lenses than bananas</a>,&quot; etc.</p><p>More to the point, <strong><em><a href="http://en.wikibooks.org/wiki/Haskell/List_processing#foldr">foldr</a></em></strong>&nbsp;is the Swiss Army Knife in functional programming. Monoidal reductions of lists or mapping over lists and many other list-processing idioms can be modeled with the regular recursion operator <em>foldr</em>. Even a beginning lecture on functional programming would have to discuss foldr. Not discussing foldr in a Haskell course, however, is like not discussing <em>for loops </em>in a C# course. Indeed, the lectures on <a href="http://channel9.msdn.com/Shows/Going&#43;Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1">Graham Hutton's introductory Haskell course</a> covered the basics of foldr very well. However, a lot more interesting stuff concerning folds or, say, bananas becomes apparent when one becomes fluent in functional programming. For instance, foldr and friends suddenly make sense for container types other than the concrete list type. Foldr and friends even generalize to arbitrary algebraic datatypes in different ways. The combination of folds and monoids also helps us understand key aspects of parallel data processing. These are the more advanced banana subjects that are covered by Ralf Lämmel's lecture this time. He has also contributed a stack of bananas papers over the years, and he draws from that interest.</p><p><strong>Learn more:<br><a href="http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/decks/bananas.pdf"><br>Going Bananas lecture slide&nbsp;deck</a></strong>&nbsp;<br><strong><a href="http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/code/bananas/">Download source code for this lecture</a><br><a href="http://professor-fish.blogspot.com/2010/12/underappreciated-banana-and-its-buddy.html">Ralf's blog</a><br><br>For the exercises/riddles in the slide deck:<br><br></strong><em>Slide number (complexity):</em></p><p>12 (medium)<br>18 (medium)<br>21 (medium)<br>23 (easy)<br>24 (hard)<br>31 (hard)<br>34 (easy)</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/ralf-laemmel/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f497db42509940108e609e700144dba2">]]></description>
      <comments>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Going-Bananas</comments>
      <itunes:summary> Dr. Ralf L&#228;mmel returns&amp;nbsp;for an&amp;nbsp;exploration of&amp;nbsp;folds, aka bananas. This is lecture 5 in his C9 Lecture series&amp;nbsp; covering advanced&amp;nbsp;functional programming topics.&amp;nbsp;Welcome back, Ralf! We&#39;re so happy to have you here! Why bananas, Ralf? Banana is functional programming slang for &amp;quot;fold&amp;quot;—an application of the catamorphic recursion scheme most widely known in the higher-order list processing tradition of&amp;nbsp;Bird-Meertens Formalism and the Squiggol community. Erik Meijer used to be known as the &amp;quot;banana man&amp;quot; because of his early research on the subject; he also co-authored the seminal paper with theoretical (categorical) foundations on the subject. Incidentally, the paper used the notation of so-called &amp;quot;banana brackets&amp;quot; (instead of using the plain string &amp;quot;foldr&amp;quot;), which sort of explains why we sometimes say bananas. There is no shortage of crazy paper titles on the subject, by the way: &amp;quot;Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire,&amp;quot; &amp;quot;Bananas in Space: ...,&amp;quot; &amp;quot;Dealing with large bananas,&amp;quot; &amp;quot;Boxes go bananas: ...,&amp;quot; &amp;quot;See more through lenses than bananas,&amp;quot; etc. More to the point, foldr&amp;nbsp;is the Swiss Army Knife in functional programming. Monoidal reductions of lists or mapping over lists and many other list-processing idioms can be modeled with the regular recursion operator foldr. Even a beginning lecture on functional programming would have to discuss foldr. Not discussing foldr in a Haskell course, however, is like not discussing for loops in a C# course. Indeed, the lectures on Graham Hutton&#39;s introductory Haskell course covered the basics of foldr very well. However, a lot more interesting stuff concerning folds or, say, bananas becomes apparent when one becomes fluent in functional programming. For instance, foldr and friends suddenly make sense for container types other than the concrete list type. Foldr and friends even gene</itunes:summary>
      <itunes:duration>4113</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Going-Bananas</link>
      <pubDate>Thu, 20 Jan 2011 19:53:14 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Going-Bananas</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_2MB_ch9.wmv" expression="full" duration="4113" fileSize="248666673" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_ch9.mp3" expression="full" duration="4113" fileSize="32907311" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_ch9.wma" expression="full" duration="4113" fileSize="33274279" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_ch9.wmv" expression="full" duration="4113" fileSize="226750112" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_high_ch9.mp4" expression="full" duration="4113" fileSize="1138421625" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_low_ch9.mp4" expression="full" duration="4113" fileSize="149429239" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_Zune_ch9.wmv" expression="full" duration="4113" fileSize="153454166" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/DBA2/F497DB42-5099-4010-8E60-9E700144DBA2/C9LecturesRalfLaemmelGoingBananas_ch9.wmv" length="226750112" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>6</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Going-Bananas/RSS</wfw:commentRss>
      <category>Advanced</category>
      <category>C9 Lectures</category>
      <category>Functional Programming</category>
      <category>Haskell</category>
      <category>Monad</category>
      <category>Monads</category>
      <category>Programming Languages</category>
      <category>Ralf Laemmel</category>
    </item>
  <item>
      <title>C9 Lectures: Dr. Ralf L&#228;mmel - The Quick Essence of Functional Programming</title>
      <description><![CDATA[ <p>We had to cover monads eventually, and there are many great monad tutorials out there (see, for example, here:<a href="http://www.haskell.org/haskellwiki/Tutorials#Using_monads"> http://www.haskell.org/haskellwiki/Tutorials#Using_monads</a>). In fact, there are web resources concerned solely with organizing the many monad tutorials available in the wild, and developing new monad tutorials seems to be a popular sport in the Haskell community.</p><p>Today, Ralf Lämmel's lecture goes back to the roots, essentially revisiting Wadler's &quot;The essence of functional programming&quot;—the 1992 paper that discovered monads and popularized their use in functional programming. Ralf Lämmel's lecture and accompanying code distribution show Wadler's seminal insight: those original scenarios and observations still make sense today. Indeed, Simon Marlow (a Haskell/GHC high priest&nbsp;@ MSR Cambridge) recently noted: &quot;it's still the best monad tutorial&quot; (see<a href="http://twitter.com/simonmar/status/21397398061"> http://twitter.com/simonmar/status/21397398061</a>).</p><p>Focusing on a few generically useful monads, Dr. Lämmel explains how the work within the interpretation domain. While the lecture also takes a look at the contemporary Haskell library for monads and monad transformers, there are obviously many monads and associated domains that cannot be covered this time. If you want to learn more about monads, then continue with state threads, IO, parsing, and concurrency (STM).<br><br></p><p>Slide deck:</p><p><a href="http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/decks/monads.pdf">http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/decks/monads.pdf</a></p><p>Exercises/riddles:</p><p>Slide #4 (easy), #6 (modest), #13 (modest), #40 (hard)</p><p>Code distribution:</p><p><a href="http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/code/monads/">http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/code/monads/</a></p><p>&nbsp;Blog post:</p><p><a href="http://professor-fish.blogspot.com/2010/09/essence-of-essence-of-functional.html">http://professor-fish.blogspot.com/2010/09/essence-of-essence-of-functional.html</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/ralf-laemmel/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0aa4103b49704affbddb9df400a5c263">]]></description>
      <comments>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-AFP-The-Quick-Essence-of-Functional-Programming</comments>
      <itunes:summary> We had to cover monads eventually, and there are many great monad tutorials out there (see, for example, here: http://www.haskell.org/haskellwiki/Tutorials#Using_monads). In fact, there are web resources concerned solely with organizing the many monad tutorials available in the wild, and developing new monad tutorials seems to be a popular sport in the Haskell community. Today, Ralf L&#228;mmel&#39;s lecture goes back to the roots, essentially revisiting Wadler&#39;s &amp;quot;The essence of functional programming&amp;quot;—the 1992 paper that discovered monads and popularized their use in functional programming. Ralf L&#228;mmel&#39;s lecture and accompanying code distribution show Wadler&#39;s seminal insight: those original scenarios and observations still make sense today. Indeed, Simon Marlow (a Haskell/GHC high priest&amp;nbsp;@ MSR Cambridge) recently noted: &amp;quot;it&#39;s still the best monad tutorial&amp;quot; (see http://twitter.com/simonmar/status/21397398061). Focusing on a few generically useful monads, Dr. L&#228;mmel explains how the work within the interpretation domain. While the lecture also takes a look at the contemporary Haskell library for monads and monad transformers, there are obviously many monads and associated domains that cannot be covered this time. If you want to learn more about monads, then continue with state threads, IO, parsing, and concurrency (STM). Slide deck: http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/decks/monads.pdf Exercises/riddles: Slide #4 (easy), #6 (modest), #13 (modest), #40 (hard) Code distribution: http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/code/monads/ &amp;nbsp;Blog post: http://professor-fish.blogspot.com/2010/09/essence-of-essence-of-functional.html </itunes:summary>
      <itunes:duration>3288</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-AFP-The-Quick-Essence-of-Functional-Programming</link>
      <pubDate>Wed, 22 Sep 2010 15:58:37 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-AFP-The-Quick-Essence-of-Functional-Programming</guid>
      <media:thumbnail url="http://rev9.blob.core.windows.net/thumbnail/1b2a3d2a-490d-4aa2-bfd0-676e2207fa28.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://rev9.blob.core.windows.net/thumbnail/81a30877-1bc3-4e19-91e1-d2898c380eb7.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4391/574391/C9LecturesLaemmelAFPMonads_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4391/574391/C9LecturesLaemmelAFPMonads_2MB_ch9.wmv" expression="full" duration="3288" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4391/574391/C9LecturesLaemmelAFPMonads_ch9.mp3" expression="full" duration="3288" fileSize="1" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4391/574391/C9LecturesLaemmelAFPMonads_ch9.mp4" expression="full" duration="3288" fileSize="1" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4391/574391/C9LecturesLaemmelAFPMonads_ch9.wma" expression="full" duration="3288" fileSize="1" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4391/574391/C9LecturesLaemmelAFPMonads_ch9.wmv" expression="full" duration="3288" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/4391/574391/C9LecturesLaemmelAFPMonads_ch9.wmv" length="0" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>17</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-AFP-The-Quick-Essence-of-Functional-Programming/RSS</wfw:commentRss>
      <category>C9 Lectures</category>
      <category>Functional Programming</category>
      <category>Haskell</category>
      <category>Monad</category>
      <category>Monads</category>
      <category>Programming</category>
      <category>Ralf Laemmel</category>
    </item>
  <item>
      <title>C9 Lectures: Dr. Ralf L&#228;mmel - Advanced Functional Programming - Evolution of an Interpreter</title>
      <description><![CDATA[
<p>In&nbsp;part&nbsp;3 of the Advanced Functional Programming lecture series, Dr. Lämmel focuses on the domain of language interpretation as a&nbsp;method of understanding some important functional programming techniques. As a side effect, some basics of programming language
 theory are also informally presented.</p>
<p>More specifically, this lecture develops an interpreter for a simple functional programming language that contains Booleans, natural numbers, lambdas, and recursive lets. The interpreter is actually developed in a stepwise manner, which is why the lecture
 is called &quot;Evolution of an Interpreter.&quot;<br /><br />In each step, another construct is added and the impact of the extension onto the interpreter is analyzed. In this manner, several interesting programming techniques are exercised. For instance, the Maybe type constructor is pervasively used for dealing with
 partiality, and Haskell's fixed point combinator is used to model the semantics (i.e., interpretation) of recursive bindings.
<br /><br />This lecture also prepares us&nbsp;for some more advanced subjects. For instance, the next lecture in this series will cover the intriguing subject of monads while using interpretation as the application scenario. Soon, generalized folds (<a href="http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=3638E59968F7B2462EA33C607DF7B685?doi=10.1.1.41.125&amp;rep=rep1&amp;type=pdf" target="_blank">or
 bananas, according to Erik Meijer</a>) will also be discussed (the folds will traverse abstract syntax trees as opposed to lists).<br /><br />Enjoy. Learn. <br /><br />Thanks to Ralf for providing another <em>excellent</em> lecture!<br /><br />Earlier lectures <a shape="rect" href="http://channel9.msdn.com/tags/ralf-laemmel" shape="rect" target="_blank">
<strong>here</strong></a>.</p>
<p>Slides: <a shape="rect" href="https://developers.svn.sourceforge.net/svnroot/developers/repository/ralfs-channel9-lectures/decks/interpretation.pdf" shape="rect">
https://developers.svn.sourceforge.net/svnroot/developers/repository/ralfs-channel9-lectures/decks/interpretation.pdf</a></p>
<br />Related Blog Post and Code:<br /><p><a shape="rect" href="http://professor-fish.blogspot.com/2010/08/bunch-of-interpreters-using-cpp-and.html" shape="rect">http://professor-fish.blogspot.com/2010/08/bunch-of-interpreters-using-cpp-and.html</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/ralf-laemmel/RSS&WT.dl=0&WT.entryid=Entry:RSSView:29e1c19cdf1d439d81d99de90185cbf3">]]></description>
      <comments>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Evolution-of-an-Interpreter</comments>
      <itunes:summary>
In&amp;nbsp;part&amp;nbsp;3 of the Advanced Functional Programming lecture series, Dr. L&#228;mmel focuses on the domain of language interpretation as a&amp;nbsp;method of understanding some important functional programming techniques. As a side effect, some basics of programming language
 theory are also informally presented. 
More specifically, this lecture develops an interpreter for a simple functional programming language that contains Booleans, natural numbers, lambdas, and recursive lets. The interpreter is actually developed in a stepwise manner, which is why the lecture
 is called &amp;quot;Evolution of an Interpreter.&amp;quot;In each step, another construct is added and the impact of the extension onto the interpreter is analyzed. In this manner, several interesting programming techniques are exercised. For instance, the Maybe type constructor is pervasively used for dealing with
 partiality, and Haskell&#39;s fixed point combinator is used to model the semantics (i.e., interpretation) of recursive bindings.
This lecture also prepares us&amp;nbsp;for some more advanced subjects. For instance, the next lecture in this series will cover the intriguing subject of monads while using interpretation as the application scenario. Soon, generalized folds (or
 bananas, according to Erik Meijer) will also be discussed (the folds will traverse abstract syntax trees as opposed to lists).Enjoy. Learn. Thanks to Ralf for providing another excellent lecture!Earlier lectures 
here. 
Slides: 
https://developers.svn.sourceforge.net/svnroot/developers/repository/ralfs-channel9-lectures/decks/interpretation.pdf 
Related Blog Post and Code:http://professor-fish.blogspot.com/2010/08/bunch-of-interpreters-using-cpp-and.html 
</itunes:summary>
      <itunes:duration>3158</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Evolution-of-an-Interpreter</link>
      <pubDate>Tue, 31 Aug 2010 20:01:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Evolution-of-an-Interpreter</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/704f6f38-68e2-46b2-9d63-13449d789d0a.jpg" height="0" width="0"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/512/8d7b2a06-efc9-4657-a60e-e43dad409234.jpg" height="0" width="0"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/569400_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/569400_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/ce3454ec-c437-4c3d-96a6-43957c2154dc.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9400/569400/C9LecturesRalfLaemmelAFPInterpretation_2MB_ch9.wmv" expression="full" duration="3158" fileSize="346614705" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9400/569400/C9LecturesRalfLaemmelAFPInterpretation_ch9.mp3" expression="full" duration="3158" fileSize="25266689" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9400/569400/C9LecturesRalfLaemmelAFPInterpretation_ch9.mp4" expression="full" duration="3158" fileSize="610863588" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9400/569400/C9LecturesRalfLaemmelAFPInterpretation_ch9.wma" expression="full" duration="3158" fileSize="25553997" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9400/569400/C9LecturesRalfLaemmelAFPInterpretation_ch9.wmv" expression="full" duration="3158" fileSize="408360379" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9400/569400/C9LecturesRalfLaemmelAFPInterpretation_Zune_ch9.wmv" expression="full" duration="3158" fileSize="373720434" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9400/569400/C9LecturesRalfLaemmelAFPInterpretation_ch9.wmv" length="408360379" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>18</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Evolution-of-an-Interpreter/RSS</wfw:commentRss>
      <category>C9 Lectures</category>
      <category>Computer Science</category>
      <category>Functional Programming</category>
      <category>Haskell</category>
      <category>Programming Languages</category>
      <category>Ralf Laemmel</category>
    </item>
  <item>
      <title>C9 Lectures: Dr. Ralf L&#228;mmel - Advanced Functional Programming - Type Classes</title>
      <description><![CDATA[Welcome to another series of&nbsp;<a shape="rect" href="http://channel9.msdn.com/tags/C9&#43;Lectures" target="_blank" shape="rect">C9 Lectures</a> covering
<a shape="rect" href="http://channel9.msdn.com/tags/functional&#43;programming" target="_blank" shape="rect">
functional programming</a>. For this series,&nbsp;<a shape="rect" href="http://www.uni-koblenz.de/~laemmel/Site/Bio.html" target="_blank" shape="rect">Dr. Ralf Lämmel</a> has generously taken the time to produce videos for Channel 9 from his office at the University
 of Koblenz-Landau (Germany), where he is a professor of computer science. The idea here is to take the next step from Erik Meijer's fantastic introductory series on functional programming. Accordingly, Ralf's series will dive into more advanced areas of functional
 programming, again focusing on the Haskell language (the functional concepts discussed here, however, span beyond any one functional language).<br /><br />In this second lecture in the series, Ralf digs into <strong>Type Classes</strong>, which are type system constructs that were originally introduced to provide a form of ad hoc polymorphism (i.e., an advanced form of overloading). Type classes amount to an
 intriguing element of the Haskell language, which is, for example, evident in their ability to solve the Expression Problem (make sure you watch Ralf's first lecture on this subject). Furthermore, type classes directly relate to the interface notion of mainstream
 OO programming, adding important expressiveness to C#/Java-like interfaces.<br /><br /><p>Type classes also take functional or declarative programming to a whole new level—one may define relations and functions pointwisely on types. That is, in the same way a regular function pattern matches on value structure, a type-level function sort of matches
 on type-definitional structure. This is quite a mouthful, I know.<br /><br />There are various extensibility scenarios in the neighborhood of the Expression Problem that are interesting to consider from a design perspective, including several also addressable with type classes, and others that aren't. Look for the riddles (there are
 indeed several riddles in this lecture); many of them call for a discussion, rather than a straight solution. But beware—some of them are really difficult.<br /><br />Thank you, Ralf, for another <em>great</em> lecture! <br /><br /><a shape="rect" href="http://developers.svn.sourceforge.net/viewvc/developers/repository/ralfs-channel9-lectures/decks/typeclasses.pdf" target="_blank" shape="rect"><strong>Get the slides for this lecture</strong></a>.<br /><br />Enjoy! Learn!<br /><br />See <a shape="rect" href="http://channel9.msdn.com/shows/Going&#43;Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem/" target="_blank" shape="rect">
Lecture 1 - The Expression Problem<br /></a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/ralf-laemmel/RSS&WT.dl=0&WT.entryid=Entry:RSSView:2da25dde666e4246b8f49de90185d257">]]></description>
      <comments>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes</comments>
      <itunes:summary>Welcome to another series of&amp;nbsp;C9 Lectures covering

functional programming. For this series,&amp;nbsp;Dr. Ralf L&#228;mmel has generously taken the time to produce videos for Channel 9 from his office at the University
 of Koblenz-Landau (Germany), where he is a professor of computer science. The idea here is to take the next step from Erik Meijer&#39;s fantastic introductory series on functional programming. Accordingly, Ralf&#39;s series will dive into more advanced areas of functional
 programming, again focusing on the Haskell language (the functional concepts discussed here, however, span beyond any one functional language).In this second lecture in the series, Ralf digs into Type Classes, which are type system constructs that were originally introduced to provide a form of ad hoc polymorphism (i.e., an advanced form of overloading). Type classes amount to an
 intriguing element of the Haskell language, which is, for example, evident in their ability to solve the Expression Problem (make sure you watch Ralf&#39;s first lecture on this subject). Furthermore, type classes directly relate to the interface notion of mainstream
 OO programming, adding important expressiveness to C#/Java-like interfaces.Type classes also take functional or declarative programming to a whole new level—one may define relations and functions pointwisely on types. That is, in the same way a regular function pattern matches on value structure, a type-level function sort of matches
 on type-definitional structure. This is quite a mouthful, I know.There are various extensibility scenarios in the neighborhood of the Expression Problem that are interesting to consider from a design perspective, including several also addressable with type classes, and others that aren&#39;t. Look for the riddles (there are
 indeed several riddles in this lecture); many of them call for a discussion, rather than a straight solution. But beware—some of them are really difficult.Thank you, Ralf, for another great lecture! Ge</itunes:summary>
      <itunes:duration>2936</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes</link>
      <pubDate>Tue, 17 Aug 2010 19:41:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/567020_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/567020_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_2MB_ch9.wmv" expression="full" duration="2936" fileSize="722713933" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_ch9.mp3" expression="full" duration="2936" fileSize="23495999" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_ch9.mp4" expression="full" duration="2936" fileSize="603615597" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_ch9.wma" expression="full" duration="2936" fileSize="23760609" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_ch9.wmv" expression="full" duration="2936" fileSize="484007047" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_Zune_ch9.wmv" expression="full" duration="2936" fileSize="355447102" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7020/567020/C9LecturesRalfLaemmelAFPTypeClasses_ch9.wmv" length="484007047" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>15</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes/RSS</wfw:commentRss>
      <category>C9 Lectures</category>
      <category>Computer Science</category>
      <category>Functional Programming</category>
      <category>Programming Languages</category>
      <category>Ralf Laemmel</category>
    </item>
  <item>
      <title>C9 Lectures: Dr. Ralf L&#228;mmel - Advanced Functional Programming - The Expression Problem</title>
      <description><![CDATA[<em>&quot;The Expression Problem is a new name for an old problem. The goal is to define a datatype by cases, where one can add new cases to the datatype and new functions over the datatype, without recompiling existing code, and while retaining static type
 safety (e.g., no casts).&quot;</em> - Philip Wadler<br /><br />Welcome to another series of&nbsp;<a shape="rect" href="http://channel9.msdn.com/tags/C9&#43;Lectures" target="_blank" shape="rect">C9 Lectures</a> covering
<a shape="rect" href="http://channel9.msdn.com/tags/functional&#43;programming" target="_blank" shape="rect">
functional programming</a>. For this series,&nbsp;<a shape="rect" href="http://www.uni-koblenz.de/~laemmel/Site/Bio.html" target="_blank" shape="rect">Dr. Ralf Lämmel</a> has generously taken the time to produce videos for Channel 9 from his office at the University
 of Koblenz-Landau (Germany), where he is a professor of computer science. The idea here is to take the next step from Erik Meijer's fantastic introductory series on functional programming. Accordingly, Ralf's series will dive into more advanced areas of functional
 programming, again focusing on the Haskell language (the functional concepts here span beyond any one functional language, however).<br /><br />To begin, Dr.&nbsp;Lämmel teaches us about the <a shape="rect" href="http://en.wikipedia.org/wiki/Expression_Problem" target="_blank" shape="rect">
Expression Problem</a>. Now put on your thinking&nbsp;caps, make yourself comfortable, and enjoy this installment of functional programming lectures on Channel 9. Huge thanks to Dr. Lämmel, both for doing this series for Channel 9 and for filming and producing it
 all&nbsp;by himself! Finally, thanks to&nbsp;<a shape="rect" href="http://channel9.msdn.com/tags/erik&#43;meijer" target="_blank" shape="rect">Erik Meijer</a> for suggesting this series and putting me in touch with Ralf.<br /><br />See Dr. Lämmel's blog post about the new lecture series here:&nbsp;<a shape="rect" href="http://professor-fish.blogspot.com/2010/08/lecture-series-on-advanced-functional.html" shape="rect">http://professor-fish.blogspot.com/2010/08/lecture-series-on-advanced-functional.html</a>
<br /><br />[Homework assignment is on slide 26 - <a shape="rect" href="http://vegkfg.bay.livefilestore.com/y1ps28dTqLK4LH8IGQUise4kqgbiEBS9XJW3oXcg2nvxgIhS3wy05TmdLg6WdRH3KmR76vzOwhhiYi0wHl5YZ78RDCFKe_E8bUX/RalfLaemmelLectures.pdf?download&amp;psid=2" target="_blank" shape="rect">
<strong>Get the slides</strong></a>]  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/ralf-laemmel/RSS&WT.dl=0&WT.entryid=Entry:RSSView:2031e11381514612afa29de90185df59">]]></description>
      <comments>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem</comments>
      <itunes:summary>&amp;quot;The Expression Problem is a new name for an old problem. The goal is to define a datatype by cases, where one can add new cases to the datatype and new functions over the datatype, without recompiling existing code, and while retaining static type
 safety (e.g., no casts).&amp;quot; - Philip WadlerWelcome to another series of&amp;nbsp;C9 Lectures covering

functional programming. For this series,&amp;nbsp;Dr. Ralf L&#228;mmel has generously taken the time to produce videos for Channel 9 from his office at the University
 of Koblenz-Landau (Germany), where he is a professor of computer science. The idea here is to take the next step from Erik Meijer&#39;s fantastic introductory series on functional programming. Accordingly, Ralf&#39;s series will dive into more advanced areas of functional
 programming, again focusing on the Haskell language (the functional concepts here span beyond any one functional language, however).To begin, Dr.&amp;nbsp;L&#228;mmel teaches us about the 
Expression Problem. Now put on your thinking&amp;nbsp;caps, make yourself comfortable, and enjoy this installment of functional programming lectures on Channel 9. Huge thanks to Dr. L&#228;mmel, both for doing this series for Channel 9 and for filming and producing it
 all&amp;nbsp;by himself! Finally, thanks to&amp;nbsp;Erik Meijer for suggesting this series and putting me in touch with Ralf.See Dr. L&#228;mmel&#39;s blog post about the new lecture series here:&amp;nbsp;http://professor-fish.blogspot.com/2010/08/lecture-series-on-advanced-functional.html
[Homework assignment is on slide 26 - 
Get the slides] </itunes:summary>
      <itunes:duration>2871</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem</link>
      <pubDate>Tue, 10 Aug 2010 18:22:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/563672_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/563672_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_2MB_ch9.wmv" expression="full" duration="2871" fileSize="277031039" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_ch9.mp3" expression="full" duration="2871" fileSize="22976908" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_ch9.mp4" expression="full" duration="2871" fileSize="401981301" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_ch9.wma" expression="full" duration="2871" fileSize="23237913" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_ch9.wmv" expression="full" duration="2871" fileSize="230086658" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_Zune_ch9.wmv" expression="full" duration="2871" fileSize="164326718" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/3672/563672/C9LecturesRalfLaemmelExpressionProblem_ch9.wmv" length="230086658" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>12</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem/RSS</wfw:commentRss>
      <category>C9 Lectures</category>
      <category>Functional Programming</category>
      <category>Haskell</category>
      <category>Programming Languages</category>
      <category>Ralf Laemmel</category>
    </item>    
</channel>
</rss>