<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" media="screen" href="/App_Themes/default/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:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Entries tagged with functional programming - Channel 9</title><atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/tags/functional+programming/rss/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Entries tagged with functional programming - Channel 9</title><link>http://channel9.msdn.com/tags/Functional+Programming/</link></image><description>functional programming</description><link>http://channel9.msdn.com/tags/Functional+Programming/</link><language>en-us</language><pubDate>Tue, 03 Nov 2009 22:59:52 GMT</pubDate><lastBuildDate>Tue, 03 Nov 2009 22:59:52 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3608.3122, Culture=neutral, PublicKeyToken=null)</generator><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 8 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_85_ch9.png" border="0" /&gt;We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
We will release a new chapter in this series every Thursday.&lt;br /&gt;
&lt;br /&gt;
In &lt;strong&gt;Chapter 8&lt;/strong&gt;, &lt;strong&gt;Functional Parsers&lt;/strong&gt;, it's all about parsing and parsers. A parser is a program that analyses a piece of text to determine its syntactic structure. In a functional language such as Haskell, parsers can naturally be viewed as functions.&lt;br /&gt;
&lt;br /&gt;
  type Parser = String -&amp;gt; Tree&lt;br /&gt;
&lt;br /&gt;
A parser is a function that takes a string and returns some form of tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/" target="_blank"&gt;&lt;b&gt;Chapter 2&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/" target="_blank"&gt;&lt;b&gt;Chapter 3&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 4&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 5&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-6-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 6&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-7-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 7&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src="http://channel9.msdn.com/504211/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-8-of-13/</comments><link>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-8-of-13/</link><pubDate>Thu, 19 Nov 2009 18:55:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_ch9.wmv</guid><evnet:views>36947</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/504211/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>In &lt;strong&gt;Chapter 8&lt;/strong&gt;, &lt;strong&gt;Functional Parsers&lt;/strong&gt;, it's all about parsing and parsers. A parser is a program that analyses a piece of text to determine its syntactic structure. In a functional language such as Haskell, parsers can naturally be viewed as functions. &lt;br /&gt;
&lt;br /&gt;
type Parser = String -&amp;gt; Tree&lt;br /&gt;
&lt;br /&gt;
A parser is a function that takes a string and returns some form of tree.</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_ch9.mp4" expression="full" duration="3287" fileSize="435268814" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_ch9.mp3" expression="full" duration="3287" fileSize="26301343" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_ch9.mp4" expression="full" duration="3287" fileSize="435268814" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_ch9.wma" expression="full" duration="3287" fileSize="26593375" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_ch9.wmv" expression="full" duration="3287" fileSize="570803545" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_2MB_ch9.wmv" expression="full" duration="3287" fileSize="1280192037" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_Zune_ch9.wmv" expression="full" duration="3287" fileSize="422371597" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_512_ch9.png" expression="full" duration="3287" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/1/1/2/4/0/5/C9LecturesMeijerC8.ism/Manifest" expression="full" duration="3287" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/1/1/2/4/0/5/C9LecturesMeijerC8_ch9.wmv" length="570803545" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>13</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-8-of-13/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/504211/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Haskell</category><category>Programming Languages</category></item><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 7 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_85_ch9.png" border="0" /&gt;&lt;p&gt;We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
We will release a new chapter in this series every Thursday.&lt;br /&gt;
&lt;br /&gt;
In &lt;strong&gt;Chapter 7&lt;/strong&gt;, Dr. Meijer teaches us about &lt;strong&gt;Higher-Order Functions&lt;/strong&gt;. A function is called higher-order if it takes a function as an argument and returns a function as a result:&lt;br /&gt;
&lt;br /&gt;
twice    :: (a -&amp;gt; a) -&amp;gt; a -&amp;gt; a&lt;br /&gt;
twice f x = f (f x)&lt;br /&gt;
&lt;br /&gt;
The function twice above is higher order because it takes a function (f x) as it first argument and returns a function (f(fx)) &lt;br /&gt;
&lt;br /&gt;
Dr. Meijer will elaborate on why higher-order functions are important and there are some really interesting side-effects of higher-order functions such as defining DSLs as collections of higher-order functions and using algebraic properties of higher-order functions to reason about programs. &lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/" target="_blank"&gt;&lt;b&gt;Chapter 2&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/" target="_blank"&gt;&lt;b&gt;Chapter 3&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 4&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 5&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-6-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 6&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Now, we do have a textbook and you should go buy it: The great &lt;a href="http://www.cs.nott.ac.uk/~gmh/" target="_blank"&gt;Graham Hutton's&lt;/a&gt; &lt;a href="http://www.cs.nott.ac.uk/~gmh/book.html" target="_blank"&gt;Programming in Haskell&lt;/a&gt;. We worked with the publisher, Cambridge University Press, to get all Niners a &lt;b&gt;20%&lt;/b&gt; discount on the book. Now, you don't need the book to learn a great deal from this lecture series since Graham's website has all the slides and samples from the book as well as answers to the exercises. That said, it's highly recommended reading and you should consider it. &lt;/p&gt;
&lt;p&gt;The promotion code is &lt;b&gt;09HASK&lt;/b&gt; and it is vaild on both the Hardback:&lt;/p&gt;
&lt;p&gt;9780521871723 and Paperback: 9780521692694. The catalog pages are:&lt;/p&gt;
&lt;p&gt;Hardback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723&lt;/a&gt; and the paperback is:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: This special offer is valid until &lt;b&gt;December 31, 2009&lt;/b&gt; &lt;/p&gt;&lt;img src="http://channel9.msdn.com/504209/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-7-of-13/</comments><link>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-7-of-13/</link><pubDate>Thu, 12 Nov 2009 16:42:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_ch9.wmv</guid><evnet:views>32421</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/504209/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>In &lt;strong&gt;Chapter 7&lt;/strong&gt;, Dr. Meijer teaches us about &lt;strong&gt;Higher-Order Functions&lt;/strong&gt;. A function is called higher-order if it takes a function as an argument and returns a function as a result:&lt;br /&gt;
&lt;br /&gt;
twice :: (a -&amp;gt; a) -&amp;gt; a -&amp;gt; a&lt;br /&gt;
twice f x = f (f x)&lt;br /&gt;
&lt;br /&gt;
The function twice above is higher order because it takes a function (f x) as it first argument and returns a function (f(fx)) &lt;br /&gt;
&lt;br /&gt;
Dr. Meijer will elaborate on why higher-order functions are important and there are some really interesting uses of higher-order functions: You can define DSLs as collections of higher-order functions and use the algebraic properties of higher-order functions to reason about programs.&lt;br /&gt;</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_ch9.mp4" expression="full" duration="2747" fileSize="298495904" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_ch9.mp3" expression="full" duration="2747" fileSize="21983825" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_ch9.mp4" expression="full" duration="2747" fileSize="298495904" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_ch9.wma" expression="full" duration="2747" fileSize="22228569" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_ch9.wmv" expression="full" duration="2747" fileSize="387323991" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_2MB_ch9.wmv" expression="full" duration="2747" fileSize="1069934805" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_Zune_ch9.wmv" expression="full" duration="2747" fileSize="313244043" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_512_ch9.png" expression="full" duration="2747" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7.ism/Manifest" expression="full" duration="2747" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9/0/2/4/0/5/C9LecturesMeijerFPC7_ch9.wmv" length="387323991" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>12</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-7-of-13/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/504209/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Haskell</category><category>Programming Languages</category></item><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 6 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_85_ch9.png" border="0" /&gt;We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
We will release a new chapter in this series every Thursday.&lt;br /&gt;
&lt;br /&gt;
In &lt;strong&gt;Chapter 6&lt;/strong&gt;, Dr. Meijer guides us through the world of &lt;strong&gt;recursive functions&lt;/strong&gt;. In Haskell, functions can be defined &lt;em&gt;in terms of themselves&lt;/em&gt;.  Such functions are called recursive.&lt;br /&gt;
For example: &lt;br /&gt;
&lt;br /&gt;
factorial 0 = 1&lt;br /&gt;
factorial (n+1) = (n+1) * factorial n&lt;br /&gt;
&lt;br /&gt;
factorial maps 0 to 1, and any other positive integer to the product of itself and the factorial of its predecessor.&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Some functions, such as factorial, are simpler to define in terms of other functions. As we shall see, however, many functions can naturally be defined in terms of themselves.&lt;/p&gt;
&lt;p&gt;Properties of functions defined using recursion can be proved using the simple but powerful mathematical technique of induction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/" target="_blank"&gt;&lt;b&gt;Chapter 2&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/" target="_blank"&gt;&lt;b&gt;Chapter 3&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 4&lt;br /&gt;
&lt;/strong&gt;&lt;/a&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 5&lt;br /&gt;
&lt;br /&gt;
&lt;/strong&gt;&lt;/a&gt;Now, we do have a textbook and you should go buy it: The great &lt;a href="http://www.cs.nott.ac.uk/~gmh/" target="_blank"&gt;Graham Hutton's&lt;/a&gt; &lt;a href="http://www.cs.nott.ac.uk/~gmh/book.html" target="_blank"&gt;Programming in Haskell&lt;/a&gt;. We worked with the publisher, Cambridge University Press, to get all Niners a &lt;b&gt;20%&lt;/b&gt; discount on the book. Now, you don't need the book to learn a great deal from this lecture series since Graham's website has all the slides and samples from the book as well as answers to the exercises. That said, it's highly recommended reading and you should consider it. &lt;/p&gt;
&lt;p&gt;The promotion code is &lt;b&gt;09HASK&lt;/b&gt; and it is vaild on both the Hardback:&lt;/p&gt;
&lt;p&gt;9780521871723 and Paperback: 9780521692694. The catalog pages are:&lt;/p&gt;
&lt;p&gt;Hardback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723&lt;/a&gt; and the paperback is:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: This special offer is valid until &lt;b&gt;December 31, 2009&lt;/b&gt; &lt;/p&gt;&lt;img src="http://channel9.msdn.com/499066/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-6-of-13/</comments><link>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-6-of-13/</link><pubDate>Thu, 05 Nov 2009 15:53:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_ch9.wmv</guid><evnet:views>32907</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/499066/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>In Chapter 6, Dr. Meijer guides us through the world of recursive functions. In Haskell, functions can be defined in terms of themselves.  Such functions are called recursive. &lt;br /&gt;
&lt;br /&gt;
For example: &lt;br /&gt;
&lt;br /&gt;
factorial 0 = 1&lt;br /&gt;
factorial (n+1) = (n+1) * factorial n &lt;br /&gt;
&lt;br /&gt;
factorial maps 0 to 1, and any other positive integer to the product of itself and the factorial of its predecessor. &lt;br /&gt;
&lt;br /&gt;
Some functions, such as factorial, are simpler to define in terms of other functions. As we shall see, however, many functions can naturally be defined in terms of themselves. Properties of functions defined using recursion can be proved using the simple but powerful mathematical technique of induction.</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_ch9.mp4" expression="full" duration="2613" fileSize="278662720" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_ch9.mp3" expression="full" duration="2613" fileSize="20908824" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_ch9.mp4" expression="full" duration="2613" fileSize="278662720" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_ch9.wma" expression="full" duration="2613" fileSize="21141115" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_ch9.wmv" expression="full" duration="2613" fileSize="382762109" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_2MB_ch9.wmv" expression="full" duration="2613" fileSize="1017554623" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_Zune_ch9.wmv" expression="full" duration="2613" fileSize="289351490" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_512_ch9.png" expression="full" duration="2613" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6.ism/Manifest" expression="full" duration="2613" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/6/0/9/9/4/C9LecturesErikMeijerFPC6_ch9.wmv" length="382762109" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>24</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-6-of-13/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/499066/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Haskell</category></item><item><title>E2E: Erik Meijer and Burton Smith - Concurrency, Parallelism and Programming</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_85_ch9.png" border="0" /&gt;The great &lt;a href="http://www.microsoft.com/presspass/exec/techfellow/Smith/default.mspx" target="_blank"&gt;Burton Smith&lt;/a&gt;, Microsoft Technical Fellow and an international leader in high-performance computer architecture and programming languages for parallel computing joins functional programming purist and language design guru Erik Meijer to discuss several major themes of parallel computing and distributed programming. As always, you will get a lesson in history, present trends and future possibilities. This is simply an awesome and deeply wonderful conversation. Burton is a treasure. &lt;br /&gt;
&lt;br /&gt;
Erik shows up for the conversation only after Burton begins to talk about a potential definition for functional programming. Right on queue, Erik arrives! &lt;br /&gt;
&lt;br /&gt;
Burton will be presenting his thinking on parallel and concurrent programming at &lt;a href="http://microsoftpdc.com" target="_blank"&gt;PDC09&lt;/a&gt;. He will also be a panelist on the &lt;a href="http://microsoftpdc.com/Sessions/FT52" target="_blank"&gt;Future of Programming panel&lt;/a&gt; (and Erik will be the panel moderator - you won't want to miss the panel if you are attending PDC!).&lt;img src="http://channel9.msdn.com/501495/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/E2E-Erik-Meijer-and-Burton-Smith-Concurrency-Parallelism-and-Programming/</comments><link>http://channel9.msdn.com/shows/Going+Deep/E2E-Erik-Meijer-and-Burton-Smith-Concurrency-Parallelism-and-Programming/</link><pubDate>Tue, 03 Nov 2009 16:19:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_ch9.wmv</guid><evnet:views>24954</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/501495/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>The great &lt;a href="http://www.microsoft.com/presspass/exec/techfellow/Smith/default.mspx" target="_blank"&gt;Burton Smith&lt;/a&gt;, Microsoft Technical Fellow and an international leader in high-performance computer architecture and programming languages for parallel computing joins functional programming purist and language design guru Erik Meijer to discuss several major themes of parallel computing and distributed programming. As always, you will get a lesson in history, present trends and future possibilities. This is simply an awesome and deeply wonderful conversation. Burton is a treasure. &lt;br /&gt;
&lt;br /&gt;
Erik shows up for the conversation only after Burton begins to talk about a potential definition for functional programming. Right on queue, Erik arrives! &lt;br /&gt;
&lt;br /&gt;</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_ch9.mp4" expression="full" duration="3854" fileSize="693585425" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_ch9.mp3" expression="full" duration="3854" fileSize="30835344" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_ch9.mp4" expression="full" duration="3854" fileSize="693585425" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_ch9.wma" expression="full" duration="3854" fileSize="31177479" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_ch9.wmv" expression="full" duration="3854" fileSize="832395483" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_2MB_ch9.wmv" expression="full" duration="3854" fileSize="1181412561" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_Zune_ch9.wmv" expression="full" duration="3854" fileSize="639564180" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_512_ch9.png" expression="full" duration="3854" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency.ism/Manifest" expression="full" duration="3854" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/5/9/4/1/0/5/E2EMeijerSmithConcurrency_ch9.wmv" length="832395483" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>17</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/E2E-Erik-Meijer-and-Burton-Smith-Concurrency-Parallelism-and-Programming/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/501495/Trackback.aspx</trackback:ping><category>Burton Smith</category><category>Computer Hardware</category><category>Concurrency</category><category>Erik Meijer</category><category>Expert to Expert</category><category>Functional Programming</category><category>Parallel Computing</category><category>PDC09</category></item><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 5 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_85_ch9.png" border="0" /&gt;&lt;p&gt;We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
We will release a new chapter in this series every Thursday.&lt;br /&gt;
&lt;br /&gt;
In &lt;strong&gt;Chapter 5&lt;/strong&gt;, Dr. Meijer introduces and digs into &lt;strong&gt;List Comprehensions&lt;/strong&gt;. In mathematics, comprehension notation is used to construct new sets from old sets. In Haskell, you can create new lists from old lists using a similar comprehension syntax:&lt;br /&gt;
&lt;br /&gt;
[x^2 | x &amp;lt;- [1..5]]&lt;br /&gt;
&lt;br /&gt;
The above notation represents the list [1,4,9,16,25] of all numbers x^2 such that x is an element of the list [1..5]. The &amp;lt;- [1..5] syntax is known as a &lt;strong&gt;generator&lt;/strong&gt; and list comprehensions can have mulitple generators that can have explicit dependencies on other generators. You will also learn about &lt;strong&gt;guards&lt;/strong&gt;, which restrict values created by earlier generators.&lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/" target="_blank"&gt;&lt;b&gt;Chapter 2&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/" target="_blank"&gt;&lt;b&gt;Chapter 3&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 4&lt;br /&gt;
&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Now, we do have a textbook and you should go buy it: The great &lt;a href="http://www.cs.nott.ac.uk/~gmh/" target="_blank"&gt;Graham Hutton's&lt;/a&gt; &lt;a href="http://www.cs.nott.ac.uk/~gmh/book.html" target="_blank"&gt;Programming in Haskell&lt;/a&gt;. We worked with the publisher, Cambridge University Press, to get all Niners a &lt;b&gt;20%&lt;/b&gt; discount on the book. Now, you don't need the book to learn a great deal from this lecture series since Graham's website has all the slides and samples from the book as well as answers to the exercises. That said, it's highly recommended reading and you should consider it. &lt;/p&gt;
&lt;p&gt;The promotion code is &lt;b&gt;09HASK&lt;/b&gt; and it is vaild on both the Hardback:&lt;/p&gt;
&lt;p&gt;9780521871723 and Paperback: 9780521692694. The catalog pages are:&lt;/p&gt;
&lt;p&gt;Hardback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723&lt;/a&gt; and the paperback is:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: This special offer is valid until &lt;b&gt;December 31, 2009&lt;/b&gt; &lt;/p&gt;&lt;img src="http://channel9.msdn.com/498918/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13/</comments><link>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13/</link><pubDate>Thu, 29 Oct 2009 17:31:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_ch9.wmv</guid><evnet:views>41553</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/498918/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>In &lt;strong&gt;Chapter 5&lt;/strong&gt;, Dr. Meijer introduces and digs into &lt;strong&gt;List Comprehensions&lt;/strong&gt;. In mathematics, comprehension notation is used to construct new sets from old sets. In Haskell, you can create new lists from old lists using a similar comprehension syntax:&lt;br /&gt;
&lt;br /&gt;
[x^2 | x &amp;lt;- [1..5]]&lt;br /&gt;
&lt;br /&gt;
The above notation represents the list [1,4,9,16,25] of all numbers x^2 such that x is an element of the list [1..5]. The &amp;lt;- [1..5] syntax is known as a &lt;strong&gt;generator&lt;/strong&gt; and list comprehensions can have mulitple generators that can have explicit dependencies on other generators. You will also learn about &lt;strong&gt;guards&lt;/strong&gt;, which restrict values created by earlier generators.</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_ch9.mp4" expression="full" duration="1916" fileSize="202842067" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_ch9.mp3" expression="full" duration="1916" fileSize="15334084" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_ch9.mp4" expression="full" duration="1916" fileSize="202842067" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_ch9.wma" expression="full" duration="1916" fileSize="15508615" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_ch9.wmv" expression="full" duration="1916" fileSize="285824351" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_2MB_ch9.wmv" expression="full" duration="1916" fileSize="746286796" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_Zune_ch9.wmv" expression="full" duration="1916" fileSize="210471181" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_512_ch9.png" expression="full" duration="1916" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5.ism/Manifest" expression="full" duration="1916" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/1/9/8/9/4/C9LecturesMeijerFPC5_ch9.wmv" length="285824351" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>26</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/498918/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Haskell</category><category>Programming Languages</category></item><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 4 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_85_ch9.png" border="0" /&gt;&lt;p&gt;We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
We will release a new chapter in this series every Thursday.&lt;br /&gt;
&lt;br /&gt;
In &lt;strong&gt;Chapter 4&lt;/strong&gt;, Dr. Meijer teaches us about the art and practice of &lt;strong&gt;defining functions&lt;/strong&gt;. Functions can be defined using conditional expressions and in Haskell conditional expressions must &lt;em&gt;always&lt;/em&gt; have an else clause. Functions can also be defined using guarded equations and pattern matching. You will learn about list patterns and integer patterns. Today is also the day that you will learn about &lt;strong&gt;lambda expressions and sections.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/" target="_blank"&gt;&lt;b&gt;Chapter 2&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 3&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Now, we do have a textbook and you should go buy it: The great &lt;a href="http://www.cs.nott.ac.uk/~gmh/" target="_blank"&gt;Graham Hutton's&lt;/a&gt; &lt;a href="http://www.cs.nott.ac.uk/~gmh/book.html" target="_blank"&gt;Programming in Haskell&lt;/a&gt;. We worked with the publisher, Cambridge University Press, to get all Niners a &lt;b&gt;20%&lt;/b&gt; discount on the book. Now, you don't need the book to learn a great deal from this lecture series since Graham's website has all the slides and samples from the book as well as answers to the exercises. That said, it's highly recommended reading and you should consider it. &lt;/p&gt;
&lt;p&gt;The promotion code is &lt;b&gt;09HASK&lt;/b&gt; and it is vaild on both the Hardback:&lt;/p&gt;
&lt;p&gt;9780521871723 and Paperback: 9780521692694. The catalog pages are:&lt;/p&gt;
&lt;p&gt;Hardback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723&lt;/a&gt; and the paperback is:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: This special offer is valid until &lt;b&gt;December 31, 2009&lt;/b&gt; &lt;/p&gt;&lt;img src="http://channel9.msdn.com/498917/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/</comments><link>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/</link><pubDate>Thu, 22 Oct 2009 18:34:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_ch9.wmv</guid><evnet:views>46088</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/498917/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>In &lt;strong&gt;Chapter 4&lt;/strong&gt;, Dr. Meijer teaches us about the art and practice of &lt;strong&gt;defining functions&lt;/strong&gt;. Functions can be defined using conditional expressions and in Haskell conditional expressions must &lt;em&gt;always&lt;/em&gt; have an else clause. Functions can also be defined using guarded equations and pattern matching. You will learn about list patterns and integer patterns. Today is also the day that you will learn about &lt;strong&gt;lambda expressions and sections.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/" target="_blank"&gt;&lt;b&gt;Chapter 2&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/" target="_blank"&gt;&lt;strong&gt;Chapter 3&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_ch9.mp4" expression="full" duration="3659" fileSize="473919571" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_ch9.mp3" expression="full" duration="3659" fileSize="29280546" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_ch9.mp4" expression="full" duration="3659" fileSize="473919571" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_ch9.wma" expression="full" duration="3659" fileSize="29603383" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_ch9.wmv" expression="full" duration="3659" fileSize="631512753" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_2MB_ch9.wmv" expression="full" duration="3659" fileSize="736545601" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_Zune_ch9.wmv" expression="full" duration="3659" fileSize="369155968" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_512_ch9.png" expression="full" duration="3659" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4.ism/Manifest" expression="full" duration="3659" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/1/9/8/9/4/C9LecturesMeijerFPC4_ch9.wmv" length="631512753" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>27</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/498917/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Programming Languages</category></item><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 3 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_85_ch9.png" border="0" /&gt;We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
We will release a new chapter in this series every Thursday.&lt;br /&gt;
&lt;br /&gt;
In Chapter 3, Dr. Meijer explores &lt;strong&gt;types and classes in Haskell&lt;/strong&gt;. A type is a collection of related values and in Haskell every well-formed expression has a type. Using type inference, these types are automatically calculated at run time. If expression e returns a type t, then e is of type t, e :: t. A function is a mapping of one type to another type and you will learn about new types of functions in this lecture, specifically curried functions: functions that return functions as a result (and functions are values, remember) and polymorphic functions (function with a type that contains one or more type variables).&lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;b&gt;Chapter 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/" target="_blank"&gt;&lt;strong&gt;Chapter 2&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Now, we do have a textbook and you should go buy it: The great &lt;a href="http://www.cs.nott.ac.uk/~gmh/" target="_blank"&gt;Graham Hutton's&lt;/a&gt; &lt;a href="http://www.cs.nott.ac.uk/~gmh/book.html" target="_blank"&gt;Programming in Haskell&lt;/a&gt;. We worked with the publisher, Cambridge University Press, to get all Niners a &lt;b&gt;20%&lt;/b&gt; discount on the book. Now, you don't need the book to learn a great deal from this lecture series since Graham's website has all the slides and samples from the book as well as answers to the exercises. That said, it's highly recommended reading and you should consider it.
&lt;p&gt;The promotion code is &lt;b&gt;09HASK&lt;/b&gt; and it is vaild on both the Hardback:&lt;/p&gt;
&lt;p&gt;9780521871723 and Paperback: 9780521692694. The catalog pages are:&lt;/p&gt;
&lt;p&gt;Hardback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723&lt;/a&gt; and the paperback is:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: This special offer is valid until &lt;b&gt;December 31, 2009&lt;/b&gt; &lt;/p&gt;&lt;img src="http://channel9.msdn.com/495716/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/</comments><link>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/</link><pubDate>Thu, 15 Oct 2009 15:46:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_ch9.wmv</guid><evnet:views>42800</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/495716/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
In Chapter 3, Dr. Meijer explores &lt;strong&gt;types and classes in Haskell&lt;/strong&gt;. A type is a collection of related values and in Haskell every well-formed expression has a type. Using type inference, these types are automatically calculated at run time. If expression e returns a type t, then e is of type t, e :: t. A function is a mapping of one type to another type and you will learn about new types of functions in this lecture, specifically curried functions: functions that return functions as a result (and functions are values, remember) and polymorphic functions (function with a type that contains one or more type variables).</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_ch9.mp4" expression="full" duration="2610" fileSize="226808433" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_ch9.mp3" expression="full" duration="2610" fileSize="20886465" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_ch9.mp4" expression="full" duration="2610" fileSize="226808433" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_ch9.wma" expression="full" duration="2610" fileSize="21120093" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_ch9.wmv" expression="full" duration="2610" fileSize="322202073" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_2MB_ch9.wmv" expression="full" duration="2610" fileSize="525368335" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_Zune_ch9.wmv" expression="full" duration="2610" fileSize="176714053" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_512_ch9.png" expression="full" duration="2610" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3.ism/Manifest" expression="full" duration="2610" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/6/1/7/5/9/4/C9LecturesMeijerFPC3_ch9.wmv" length="322202073" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>53</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/495716/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Haskell</category><category>Programming Languages</category></item><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 2 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_85_ch9.png" border="0" /&gt;We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
We will release a new chapter in this series every Thursday.&lt;br /&gt;
&lt;br /&gt;
In Chapter 2, Dr. Meijer introduces Haskell syntax and notation (via a Haskell implementation called Hugs, to be precise, which is based on Haskell 98) and we learn about the Haskell syntax that represents the fundamental construct of functional programming: functions. It's not like you're used to in mathematics like &lt;em&gt;f(x)&lt;/em&gt;. Instead, in Haskell, a function is denoted without parentheses: &lt;em&gt;f x&lt;/em&gt;. So, given the almost OCD requirement by Haskell language designers to eliminate &lt;em&gt;any&lt;/em&gt; unnecessary clutter in the language, parentheses are replaced by space. Also, in mathematics, you're accustomed to multiplication expressed either as xy or x y. In Haskell, since space denotes a function, multiplication is denoted with a *, like x*y...&lt;br /&gt;
&lt;br /&gt;
You should watch these in sequence (or skip around depending on your curent level of knowledge in this domain):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/" target="_blank"&gt;&lt;strong&gt;Chapter 1&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Now, we do have a textbook and you should go buy it: The great &lt;a href="http://www.cs.nott.ac.uk/~gmh/" target="_blank"&gt;Graham Hutton's&lt;/a&gt; &lt;a href="http://www.cs.nott.ac.uk/~gmh/book.html" target="_blank"&gt;Programming in Haskell&lt;/a&gt;. We worked with the publisher, Cambridge University Press, to get all Niners a &lt;b&gt;20%&lt;/b&gt; discount on the book. Now, you don't need the book to learn a great deal from this lecture series since Graham's website has all the slides and samples from the book as well as answers to the exercises. That said, it's highly recommended reading and you should consider it.
&lt;p&gt;The promotion code is &lt;b&gt;09HASK&lt;/b&gt; and it is vaild on both the Hardback:&lt;/p&gt;
&lt;p&gt;9780521871723 and Paperback: 9780521692694. The catalog pages are:&lt;/p&gt;
&lt;p&gt;Hardback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723&lt;/a&gt; and the paperback is:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: This special offer is valid until &lt;b&gt;December 31, 2009&lt;/b&gt; &lt;/p&gt;&lt;img src="http://channel9.msdn.com/494398/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/</link><pubDate>Thu, 08 Oct 2009 15:33:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_ch9.wmv</guid><evnet:views>54035</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/494398/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>We've kicked off &lt;a href="http://channel9.msdn.com/tags/C9+Lectures" target="_blank"&gt;C9 Lectures&lt;/a&gt; with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
In Chapter 2, Dr. Meijer introduces Haskell syntax and notation (via a Haskell implementation called Hugs, to be precise, which is based on Haskell 98) and we learn about the Haskell syntax that represents the fundamental construct of functional programming: functions. It's not like you're used to in mathematics like &lt;em&gt;f(x)&lt;/em&gt;. Instead, in Haskell, a function is denoted without parentheses: &lt;em&gt;f x&lt;/em&gt;. So, given the almost OCD requirement by Haskell language designers to eliminate &lt;em&gt;any&lt;/em&gt; unnecessary clutter in the language, parentheses are replaced by space. Also, in mathematics, you're accustomed to multiplication expressed either as xy or x y. In Haskell, since space denotes a function, multiplication is denoted with a *, like x*y...&lt;br /&gt;
&lt;br /&gt;</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_ch9.mp4" expression="full" duration="3061" fileSize="322302235" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_ch9.mp3" expression="full" duration="3061" fileSize="24489482" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_ch9.mp4" expression="full" duration="3061" fileSize="322302235" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_ch9.wma" expression="full" duration="3061" fileSize="24757937" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_ch9.wmv" expression="full" duration="3061" fileSize="443120373" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_2MB_ch9.wmv" expression="full" duration="3061" fileSize="616708939" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_Zune_ch9.wmv" expression="full" duration="3061" fileSize="248752353" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_512_ch9.png" expression="full" duration="3061" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2.ism/Manifest" expression="full" duration="3061" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/8/9/3/4/9/4/C9LecturesMeijerFPC2_ch9.wmv" length="443120373" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>59</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/494398/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Haskell</category></item><item><title>C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13</title><description>&lt;img src="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_85_ch9.png" border="0" /&gt;&lt;p&gt;Welcome to a new technical series on Channel 9 folded into a different kind of 9 format: &lt;i&gt;C9 Lectures. &lt;/i&gt;These are what you think they are, lectures. They are not conversational in nature (like most of what you're used to on 9), but rather these pieces are entirely focused on education, coming to you in the form of a series of high quality technical lectures (1 or more per topic) on a single topic.&lt;br /&gt;
&lt;br /&gt;
We kick off C9 Lectures with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders). &lt;br /&gt;
&lt;br /&gt;
Lecture Context:&lt;br /&gt;
&lt;br /&gt;
Over the past two years, you've learned a fair amount about the functional programming paradigm's foray into general purpose imperative progamming languages (LINQ, Lambda's, etc in C# and VB.NET). And, of course, the newest language to join the Visual Studio family of languages, F#, &lt;em&gt;is&lt;/em&gt; a functional language. You've heard us say how important functional language constructs are to the our current languages' capabilities to evolve in the right direction to meet the needs of the many-core future (the need for reliable and comprehensible concurrency, parallelism, etc) and,&lt;em&gt; most importantly&lt;/em&gt;, to help vault computer programming into an age of compositionality (remember our talks on 9 regarding composability and evolution of software engineering as an engineering discipline?). Well, we decided to take a step back and teach you the &lt;em&gt;fundamentals&lt;/em&gt; of functional programming at a level equivalent to any university. We even have a text book and professor who will expand our minds. &lt;br /&gt;
&lt;br /&gt;
Dr. Erik Meijer will teach us Functional Programming Fundamentals using Haskell as the language for understanding the basic functional principles (in fact, the specific language isn't all that important, but Haskell is a pure functional language so it is entirely appropriate for learning the essential ingredients of functional programming. It is also a relatively small language and should be easy for you to get up to speed with Haskell once you understand the Why, What and How that underlies all functional languages...).&lt;br /&gt;
&lt;br /&gt;
Now, we do have a textbook and you should go buy it: The great &lt;a href="http://www.cs.nott.ac.uk/~gmh/" target="_blank"&gt;Graham Hutton's&lt;/a&gt; &lt;a href="http://www.cs.nott.ac.uk/~gmh/book.html" target="_blank"&gt;Programming in Haskell&lt;/a&gt;. We worked with the publisher, Cambridge University Press, to get all Niners a &lt;strong&gt;20%&lt;/strong&gt; discount on the book. Now, you don't need the book to learn a great deal from this lecture series since Graham's website has all the slides and samples from the book as well as answers to the exercises. That said, it's highly recommended reading and you should consider it.&lt;/p&gt;
&lt;p&gt;The promotion code is &lt;strong&gt;09HASK&lt;/strong&gt; and it is vaild on both the Hardback and Paperback.&lt;/p&gt;
&lt;p&gt;Hardback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521871723&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Paperback:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694"&gt;http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521692694&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Note&lt;/strong&gt;: This special offer is valid until &lt;strong&gt;December 31, 2009&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In Chapter 1, Dr. Meijer takes us through the fundamental fundamentals of functional programming: The philosophy and history of functional programming. As you can imagine, these lectures will go deeper and deeper as the chapters progress, but you need to understand the philosophical and historical contexts. This will provide a nice layer of fresh conceptual soil in which to plant the seeds of understanding the technical details of functional programming, of functional reasoning.&lt;br /&gt;
&lt;br /&gt;
Welcome to C9 Lectures. Enjoy and learn, learn, learn.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;ALWAYS&lt;/strong&gt; ask questions right here. Erik will answer them. Remember, he is professor Erik Meijer in this context and professors answer the questions of their students. Thank you, Erik, for doing this!&lt;br /&gt;
&lt;br /&gt;
Welcome to C9 Lectures!&lt;/p&gt;&lt;img src="http://channel9.msdn.com/494397/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/</link><pubDate>Thu, 01 Oct 2009 15:50:00 GMT</pubDate><guid isPermaLink="false">http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_ch9.wmv</guid><evnet:views>79898</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/494397/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Welcome to a new technical series on Channel 9 folded into a different kind of 9 format: C9 Lectures. These are what you think they are, lectures. They are not conversational in nature (like most of what you're used to on 9), but rather these pieces are entirely focused on education, coming to you in the form of a series of high quality technical lectures (1 or more per topic) on a single topic.&lt;br /&gt;
&lt;br /&gt;
We kick off C9 Lectures with a journey into the world of Functional Programming with functional language purist and high priest of the lambda calculus, Dr. &lt;a href="http://research.microsoft.com/~emeijer/" target="_blank"&gt;Erik Meijer&lt;/a&gt; (you can thank Erik for many of the functional constructs that have shown up in languages like C# and VB.NET. When you use LINQ, thank Erik in addition to Anders).</evnet:previewtext><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_320_ch9.png" height="240" width="320" /><media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_85_ch9.png" height="64" width="85" /><media:group><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_ch9.mp4" expression="full" duration="1897" fileSize="230905860" type="video/mp4" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_ch9.mp3" expression="full" duration="1897" fileSize="15180681" type="audio/mp3" medium="audio" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_ch9.mp4" expression="full" duration="1897" fileSize="230905860" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_ch9.wma" expression="full" duration="1897" fileSize="15349403" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_ch9.wmv" expression="full" duration="1897" fileSize="316768137" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_2MB_ch9.wmv" expression="full" duration="1897" fileSize="381931312" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_Zune_ch9.wmv" expression="full" duration="1897" fileSize="176752065" type="video/x-ms-wmv" medium="video" /><media:content url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_512_ch9.png" expression="full" duration="1897" type="image/jpeg" medium="image" /><media:content url="http://ss.channel9.msdn.com/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1.ism/Manifest" expression="full" duration="1897" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://ecn.channel9.msdn.com/o9/ch9/7/9/3/4/9/4/C9LecturesMeijerFunctionalChapter1_ch9.wmv" length="316768137" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>86</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/494397/Trackback.aspx</trackback:ping><category>C9 Lectures</category><category>Erik Meijer</category><category>Functional Programming</category><category>Haskell</category><category>Programming Languages</category></item><item><title>Don Syme: F# and functional programming in . NET </title><description>&lt;img src="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_small_ch9.png" border="0" /&gt;Last week Don Syme joined me for an F# university tour here in Denmark. &lt;br /&gt;
The final stop on the tour was at Microsoft Development Center Copenhagen (mdcc.dk) for an open TechTalk on F# and functional programming on the .NET platform. &lt;br /&gt;
&lt;br /&gt;
To make this talk as broadly available as possible, we just decided to recorded it :) &lt;br /&gt;
&lt;br /&gt;
In the TechTalk Don touches on topics like asynchronous programming, graphics, why functional programming matters, just to mention a few topics … and everything explained with lots of samples and code!  &lt;br /&gt;
&lt;br /&gt;
Want to learn more about F#? &lt;br /&gt;
Visit Don’s blog here: &lt;a href="http://blogs.msdn.com/dsyme/"&gt;http://blogs.msdn.com/dsyme/&lt;/a&gt; &lt;br /&gt;
or the hubFS community site, &lt;a href="http://cs.hubfs.net"&gt;http://cs.hubfs.net&lt;/a&gt;  &lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;img src="http://channel9.msdn.com/462983/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/posts/martinesmann/Don-Syme-FSharp-and-functional-programming-in-NET/</comments><link>http://channel9.msdn.com/posts/martinesmann/Don-Syme-FSharp-and-functional-programming-in-NET/</link><pubDate>Tue, 31 Mar 2009 20:00:00 GMT</pubDate><guid isPermaLink="false">http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_ch9.wmv</guid><evnet:views>8476</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/462983/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Last week Don Syme joined me for an F# university tour here in Denmark. &lt;br /&gt;
The final stop on the tour was at Microsoft Development Center Copenhagen (mdcc.dk) for an open TechTalk on F# and functional programming on the .NET platform. &lt;br /&gt;
&lt;br /&gt;
To make this talk as broadly available as possible, we just decided to recorded it &lt;img src='/emoticons/C9/emotion-1.gif' alt='Smiley' /&gt; &lt;br /&gt;
&lt;br /&gt;
In the TechTalk Don touches on topics like asynchronous programming, graphics, why functional programming matters, just to mention a few topics … and everything explained with lots of samples and code!  &lt;br /&gt;
&lt;br /&gt;
Want to learn more about F#? &lt;br /&gt;</evnet:previewtext><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_large_ch9.png" height="240" width="320" /><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_small_ch9.png" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_ch9.mp4" expression="full" duration="4660" fileSize="177118400" type="video/mp4" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_ch9.mp3" expression="full" duration="4660" fileSize="660" type="audio/mp3" medium="audio" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_ch9.mp4" expression="full" duration="4660" fileSize="177118400" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_ch9.wma" expression="full" duration="4660" fileSize="75375349" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_ch9.wmv" expression="full" duration="4660" fileSize="204401403" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_2MB_ch9.wmv" expression="full" duration="4660" fileSize="995833402" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_Zune_ch9.wmv" expression="full" duration="4660" fileSize="213057383" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_2MB_ch9.wmv" expression="full" duration="4660" fileSize="995833402" type="video/x-ms-asf" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/3/8/9/2/6/4/DonSymeFSharpTechTalkMarch2009_ch9.wmv" length="204401403" type="video/x-ms-wmv" /><dc:creator>martinesmann</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://channel9.msdn.com/posts/martinesmann/Don-Syme-FSharp-and-functional-programming-in-NET/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/462983/Trackback.aspx</trackback:ping><category>Don Syme</category><category>F#</category><category>FSharp</category><category>Functional Programming</category><category>MDCC</category></item><item><title>Erik Meijer and Matthew Podwysocki - Perspectives on Functional Programming</title><description>&lt;img src="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_small_ch9.png" border="0" /&gt;&lt;a href="http://codebetter.com/blogs/matthew.podwysocki/default.aspx" target="_blank"&gt;Matthew Podwysocki&lt;/a&gt; is a senior consultant for Microsoft platform technologies in the D.C. area. He's been programming since he was a child and has a &lt;a href="http://codebetter.com/blogs/matthew.podwysocki/default.aspx" target="_blank"&gt;particular interest and passion for functional programming&lt;/a&gt;. &lt;a href="http://channel9.msdn.com/tags/functional+programming" target="_blank"&gt;Functional programming&lt;/a&gt; is all the rage these days. General purpose imperative languages (like C# and C++) are adding functional constructs to help improve software developer prodcutivity in an increasingly concurrent general purpose computing environment as notebooks and PCs with multiple processors are now the norm.&lt;br /&gt;
&lt;br /&gt;
Matthew was in Redmond a few weeks ago, so we thought it would be awesome to invite Matthew into the the lair of our resident functional programming extremist (though I must say that Erik is mellowing out with age), high priest of the lamda calculus, category theorist and Expert to Expert host, &lt;a href="http://research.microsoft.com/~emeijer" target="_blank"&gt;Erik Meijer&lt;/a&gt;. Now, it's a little scary to be asked into Erik's den of functional orthodoxy (aka Erik's office) and be put to the task of explaining functional principals in a way that is widely accessible to developers who have little or no experience with &lt;em&gt;thinking&lt;/em&gt; &lt;em&gt;functional&lt;/em&gt;, but Matthew was up for the task and spends most of the time at Erik's whiteboard explaining important functional programming concepts (Haskell and F# are the languages used in the examples, but the language isn't that important - the &lt;em&gt;concepts&lt;/em&gt; are), sharing some his very interesting history with us, waxing on future directions in programming, engaging us in a really interesting conversation. Great job, Matthew! &lt;br /&gt;
&lt;br /&gt;
Enjoy! &lt;br /&gt;
&lt;br /&gt;
Duration: 1:07:41&lt;img src="http://channel9.msdn.com/459551/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-and-Matthew-Podwysocki-Perspectives-on-Functional-Programming/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-and-Matthew-Podwysocki-Perspectives-on-Functional-Programming/</link><pubDate>Tue, 24 Mar 2009 15:50:00 GMT</pubDate><guid isPermaLink="false">http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_ch9.wmv</guid><evnet:views>46783</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/459551/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Matthew was in Redmond a few weeks ago, so we thought it would be awesome to invite Matthew into the the lair of our resident functional programming extremist (though I must say that Erik is mellowing out with age), high priest of the lamda calculus, category theorist and Expert to Expert host, Erik Meijer. Now, it's a little scary to be asked into Erik's den of functional orthodoxy (aka Erik's office) and be put to the task of explaining functional principals in a way that is widely accessible to developers who have little or no experience with thinking functional, but Matthew was up for the task and spends most of the time at Erik's whiteboard explaining important functional programming concepts (Haskell and F# are the languages used in the examples, but the language isn't that important - the &lt;em&gt;concepts&lt;/em&gt; are), sharing some his very interesting history with us, waxing on future directions in programming, engaging us in a really interesting conversation. Great job, Matthew! &lt;br /&gt;
Duration: 1:07:41</evnet:previewtext><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_large_ch9.png" height="240" width="320" /><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_small_ch9.png" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysocki.m4v" expression="full" duration="4061" fileSize="244048767" type="video/mp4" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysocki.mp3" expression="full" duration="4061" fileSize="81227265" type="audio/mp3" medium="audio" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysocki.mp4" expression="full" duration="4061" fileSize="694558680" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_ch9.wma" expression="full" duration="4061" fileSize="65696459" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_ch9.wmv" expression="full" duration="4061" fileSize="246109807" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_2MB_ch9.wmv" expression="full" duration="4061" fileSize="1271038311" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_Zune_ch9.wmv" expression="full" duration="4061" fileSize="321629787" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/1/5/5/9/5/4/E2EMatthewPodwysockiFP_ch9.wmv" length="246109807" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>22</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-and-Matthew-Podwysocki-Perspectives-on-Functional-Programming/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/459551/Trackback.aspx</trackback:ping><category>Erik Meijer</category><category>Expert to Expert</category><category>FSharp</category><category>Functional Programming</category><category>Haskell</category><category>Matthew Podwysocki</category><category>Programming</category><category>Programming Languages</category></item><item><title>Expert to Expert: Erik Meijer and Anders Hejlsberg - The Future of C#</title><description>&lt;img src="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_small_ch9.png" border="0" /&gt;It's always a pleasure to get a chance to sit down and geek out with Anders Hejlsberg. Anders is a Microsoft Technical Fellow (a Technical Fellow is the highest ranking technical position at Microsoft) and programming language design master. He's the creator of C# and one of the founders of .NET. Anders is an expert language design craftsman. C# is one of the most popular languages Microsoft has created and certainly the most widely used language by developers who target the .NET platform. &lt;br /&gt;
&lt;br /&gt;
Erik Meijer, Expert to Expert host, programming language designer and occasionally-radical category theoritician, has spent many years working with Anders and the C# team. As you may know, Erik has been a key contributor to the addition of functional constructs to C#. &lt;br /&gt;
&lt;br /&gt;
Here, Erik and Anders wax on topics ranging from the design of C# 4.0's dynamic keyword (what's the thinking behind the thinking) to the potential near and far future of the C# language (and general purpose imperative programming, generally). Anders also spends some time at the whiteboard explaining C# 4.0's support for covariance and contravariance. Of course, we &lt;em&gt;can't&lt;/em&gt; forget about concurrency and parallelism, so we don't.&lt;br /&gt;
&lt;br /&gt;
As you might expect, the conversation takes some interesting jaunts into various programming language design rabbit holes. For example, Anders discusses the notion of creating a new language to support new problem domains versus extending current languages to meet the needs of developers who need to express solutions to complex problems (so, how do you make a language like C# more dynamic in the sense that it can readily help developers solve problems that the language was not initially designed to solve?). We talk about the work being done on a service-oriented C# compiler (compiler as a service), C# as an ESDL container (or as an EDSL itself to be hosted in other environments...) and much more. This is a fantastic conversation with some of Microsoft's true visionaries. Enjoy.&lt;img src="http://channel9.msdn.com/458953/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Anders-Hejlsberg-The-Future-of-C/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Anders-Hejlsberg-The-Future-of-C/</link><pubDate>Tue, 03 Mar 2009 20:16:00 GMT</pubDate><guid isPermaLink="false">http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_ch9.wmv</guid><evnet:views>64156</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/458953/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Erik Meijer and Anders Hejlsberg wax on topics ranging from the design of C# 4.0's dynamic keyword (what's the thinking behind the thinking) to the potential near and far future of the C# language(and general purpose imperative programming, generally). Anders also spends some time at the whiteboard explaining C# 4.0's support for covariance and contravariance. As you might expect, the conversation takes some interesting jaunts into various programming language design rabbit holes. For example, Anders discusses the notion of creating a new language to support new problem domains versus extending current languages to meet the needs of developers who need to express solutions to complex problems (so, how do you make a language like C# more dynamic in the sense that it can readily help developers solve problems that the language was not initially designed to solve?). We talk about the work being done on a service-oriented C# compiler, C# as an ESDL container(or as an EDSL itself to be hosted in other environments...) and much more. This is a fantastic conversation with some of Microsoft's true visionaries. Enjoy.</evnet:previewtext><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_large_ch9.png" height="240" width="320" /><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_small_ch9.png" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsberg.m4v" expression="full" duration="4232" fileSize="254606969" type="video/mp4" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsberg.mp3" expression="full" duration="4232" fileSize="84653485" type="audio/mp3" medium="audio" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsberg.mp4" expression="full" duration="4232" fileSize="723988279" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_ch9.wma" expression="full" duration="4232" fileSize="68469151" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_ch9.wmv" expression="full" duration="4232" fileSize="256974833" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_2MB_ch9.wmv" expression="full" duration="4232" fileSize="1324783337" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_Zune_ch9.wmv" expression="full" duration="4232" fileSize="336014813" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/8/2/4/9/4/2/E2EAndersHejlsbergLanguageFutures_ch9.wmv" length="256974833" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>50</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Anders-Hejlsberg-The-Future-of-C/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/458953/Trackback.aspx</trackback:ping><category>Anders Hejlsberg</category><category>CLR</category><category>Concurrency</category><category>CSharp</category><category>CSharp 4.0</category><category>Erik Meijer</category><category>Expert to Expert</category><category>Functional Programming</category><category>Parallel Computing</category><category>Parallelism</category><category>Programming Languages</category></item><item><title>Brian Beckman: The Zen of Stateless State - The State Monad - Part 2</title><description>&lt;img src="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_small_ch9.jpg" border="0" /&gt;Concurrency is a problem that faces all developers as we move to the age of ManyCore processor architectures. Managing state is an important aspect of programming generally and for parallel programming especially. The great &lt;a href="http://channel9.msdn.com/tags/brian+beckman" target="_blank"&gt;Brian Beckman&lt;/a&gt; demonstrates three ways of labeling a binary tree with unique integer node numbers: (1) by hand, (2) non-monadically, but functionally, by threading an updating counter state variable through function arguments, and (3) monadically, by using a partially generalized state-monad implementation to handle the threading via composition. Of course during this lesson from one of the masters of mathematical programming, we wind through various conversational contexts, but always stay true to the default topic in a stateful monadic way (watch/listen to this piece to understand what this actually means :))&lt;br /&gt;
&lt;br /&gt;
This is another great conversation with astrophysicist and programming master Brian Beckman. Brian is one of the true human treasures of Microsoft. If you don't get mondas, this is a great primer. Even if you don't care about monadic data types, this is worth your time, especially if you write code for a living. This is part 2 of a 2 part series. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/" target="_blank"&gt;&lt;strong&gt;See part 1 here&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
Below, you will find several exercises for generalizing the constructions further. &lt;a href="http://mschnlnine.vo.llnwd.net/d1/ch9/StateMonad.zip" target="_blank"&gt;&lt;strong&gt;Here are the source files you need for playing with these algorithms in visual studio or your favorite Haskell environment&lt;/strong&gt;&lt;/a&gt;. Brian will monitor this thread so start your coding engines!!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Exercise 1&lt;/b&gt;: generalize over the type of the state, from int&lt;br /&gt;
to &amp;lt;S&amp;gt;, say, so that the SM type can handle any kind of&lt;br /&gt;
state object. Start with Scp&amp;lt;T&amp;gt; --&amp;gt; Scp&amp;lt;S, T&amp;gt;, from&lt;br /&gt;
"label-content pair" to "state-content pair".
&lt;p&gt;&lt;b&gt;Exercise 2&lt;/b&gt;: go from labeling a tree to doing a constrained&lt;br /&gt;
container computation, as in WPF. Give everything a&lt;br /&gt;
bounding box, and size subtrees to fit inside their&lt;br /&gt;
parents, recursively.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 3&lt;/b&gt;: promote @return and @bind into an abstract&lt;br /&gt;
class "M" and make "SM" a subclass of that.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 4 (HARD)&lt;/b&gt;: go from binary tree to n-ary tree.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 5&lt;/b&gt;: Abstract from n-ary tree to IEnumerable; do&lt;br /&gt;
everything in LINQ! (Hint: SelectMany).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 6&lt;/b&gt;: Go look up monadic parser combinators and&lt;br /&gt;
implement an elegant parser library on top of your new&lt;br /&gt;
state monad in LINQ.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 7&lt;/b&gt;: Verify the Monad laws, either abstractly&lt;br /&gt;
(pencil and paper), or mechnically, via a program, for the&lt;br /&gt;
state monad.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 8&lt;/b&gt;: Design an interface for the operators @return&lt;br /&gt;
and @bind and rewrite the state monad so that it implements&lt;br /&gt;
this interface. See if you can enforce the monad laws&lt;br /&gt;
(associativity of @bind, left identity of @return, right&lt;br /&gt;
identity of @return) in the interface implementation.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 9&lt;/b&gt;: Look up the List Monad and implement it so that it implements the same interface.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Exercise 10&lt;/b&gt;: deconstruct this entire example by using&lt;br /&gt;
destructive updates (assignment) in a discipline way that&lt;br /&gt;
treats the entire CLR and heap memory as an "ambient&lt;br /&gt;
monad." Identify the @return and @bind operators in this&lt;br /&gt;
monad, implement them explicitly both as virtual methods&lt;br /&gt;
and as interface methods.&lt;/p&gt;&lt;img src="http://channel9.msdn.com/444320/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Stateless-State-The-State-Monad-Part-2/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Stateless-State-The-State-Monad-Part-2/</link><pubDate>Thu, 20 Nov 2008 21:38:00 GMT</pubDate><guid isPermaLink="false">http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_ch9.wmv</guid><evnet:views>93784</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/444320/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Concurrency is a problem that faces all developers as we move to the age of ManyCore processor architectures. Managing state is an important aspect of programming generally and for parallel programming especially. The great Brian Beckman demonstrates three ways of labeling a binary tree with unique integer node numbers: (1) by hand, (2) non-monadically, but functionally, by threading an updating counter state variable through function arguments, and (3) monadically, by using a partially generalized state-monad implementation to handle the threading via composition. Of course during this lesson from one of the masters of mathematical programming, we wind through various conversational contexts, but always stay true to the default topic in a stateful monadic way (watch/listen to this piece to understand what this actually means &lt;img src='/emoticons/C9/emotion-1.gif' alt='Smiley' /&gt;)This is another great conversation with astrophysicist and programming master Brian Beckman. Brian is one of the true human treasures of Microsoft. If you don't get mondas, this is a great primer. Even if you don't care about monadic data types, this is worth your time, especially if you write code for a living. This is part 2 of a 2 part series.</evnet:previewtext><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_large_ch9.jpg" height="240" width="320" /><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_small_ch9.jpg" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_ch9.mp4" expression="full" duration="1483" fileSize="84221495" type="video/mp4" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_ch9.mp3" expression="full" duration="1483" fileSize="11869332" type="audio/mp3" medium="audio" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_ch9.mp4" expression="full" duration="1483" fileSize="84221495" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_ch9.wma" expression="full" duration="1483" fileSize="12006387" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_ch9.wmv" expression="full" duration="1483" fileSize="94246695" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_2MB_ch9.wmv" expression="full" duration="1483" fileSize="464390843" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_Zune_ch9.wmv" expression="full" duration="1483" fileSize="117646755" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart2_ch9.wmv" length="94246695" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Stateless-State-The-State-Monad-Part-2/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/444320/Trackback.aspx</trackback:ping><category>Brian Beckman</category><category>Concurrency</category><category>Functional Programming</category><category>Monads</category><category>Parallel Computing</category><category>Programming</category></item><item><title>Brian Beckman: The Zen of Stateless State - The State Monad - Part 1</title><description>&lt;img src="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_small_ch9.jpg" border="0" /&gt;Concurrency is a problem that faces all developers as we move to the age of ManyCore processor architectures. Managing state is an important aspect of programming generally and for parallel programming especially. The great &lt;a href="http://channel9.msdn.com/tags/brian+beckman" target="_blank"&gt;Brian Beckman&lt;/a&gt; demonstrates three ways of labeling a binary tree with unique integer node numbers: (1) by hand, (2) non-monadically, but functionally, by threading an updating counter state variable through function arguments, and (3) monadically, by using a partially generalized state-monad implementation to handle the threading via composition. Of course during this lesson from one of the masters of mathematical programming, we wind through various conversational contexts, but always stay true to the default topic in a stateful monadic way (watch/listen to this piece to understand what this actually means :))&lt;br /&gt;
&lt;br /&gt;
This is another great conversation with astrophysicist and programming master Brian Beckman. Brian is one of the true human treasures of Microsoft. If you don't get mondas, this is a great primer. Even if you don't care about monadic data types, this is worth your time, especially if you write code for a living. This is part 1 of a 2 part series.&lt;br /&gt;
 &lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Stateless-State-The-State-Monad-Part-2/" target="_blank"&gt;&lt;strong&gt;See Part 2 here&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Included with this interview is &lt;a href="http://mschnlnine.vo.llnwd.net/d1/ch9/StateMonad.zip"&gt;a .zip file containing all of the code and diagrams Brian shows us &lt;/a&gt;(including both Haskell and C#). To understand the State Monad program, it may be best to start with Main, seeing how the various facilities are used, then backtrack through the code learning first the non-monadic tree labeler, starting with the function Label, then finally the monadic tree labeler, starting with the function MLabel.  &lt;br /&gt;
&lt;br /&gt;
Below, you will find several exercises for generalizing the constructions further. Brian will monitor this thread so start your coding engines!!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 1&lt;/strong&gt;: generalize over the type of the state, from int$0 to &amp;lt;S&amp;gt;, say, so that the SM type can handle any kind of$0 state object. Start with Scp&amp;lt;T&amp;gt; --&amp;gt; Scp&amp;lt;S, T&amp;gt;, from "label-content pair" to "state-content pair".&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 2&lt;/strong&gt;: go from labeling a tree to doing a constrained$0 container computation, as in WPF. Give everything a$0 bounding box, and size subtrees to fit inside their$0 parents, recursively.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 3&lt;/strong&gt;: promote @return and @bind into an abstract$0 class "M" and make "SM" a subclass of that.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 4 (HARD)&lt;/strong&gt;: go from binary tree to n-ary tree.&lt;br /&gt;
&lt;br /&gt;
E&lt;strong&gt;xercise 5&lt;/strong&gt;: Abstract from n-ary tree to IEnumerable; do everything in LINQ! (Hint: SelectMany).&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 6&lt;/strong&gt;: Go look up monadic parser combinators and implement an elegant parser library on top of your new$0 state monad in LINQ.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 7&lt;/strong&gt;: Verify the Monad laws, either abstractly$0 (pencil and paper), or mechnically, via a program, for the state monad.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 8&lt;/strong&gt;: Design an interface for the operators @return and @bind and rewrite the state monad so that it implements this interface. See if you can enforce the monad laws (associativity of @bind, left identity of @return, right identity of @return) in the interface implementation.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 9&lt;/strong&gt;: Look up the List Monad and implement it so that it implements the same interface.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Exercise 10&lt;/strong&gt;: deconstruct this entire example by using destructive updates (assignment) in a discipline way that treats the entire CLR and heap memory as an "ambient monad." Identify the @return and @bind operators in this monad, implement them explicitly both as virtual methods and as interface methods.&lt;img src="http://channel9.msdn.com/443798/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/</link><pubDate>Thu, 20 Nov 2008 21:36:00 GMT</pubDate><guid isPermaLink="false">http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_ch9.wmv</guid><evnet:views>96298</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/443798/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>The great Brian Beckman demonstrates three ways of labeling a binary tree with unique integer node numbers: (1) by hand, (2) non-monadically, but functionally, by threading an updating counter state variable through function arguments, and (3) monadically, by using a partially generalized state-monad implementation to handle the threading via composition. Another great conversation with astrophysicist and programming master Brian Beckman. Brian is one of the true human treasures of Microsoft. If you don't get mondas, this is a great primer. Even if you don't care about monadic data types, this is worth your time, especially if you write code for a living.</evnet:previewtext><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_large_ch9.jpg" height="240" width="320" /><media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_small_ch9.jpg" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_ch9.mp4" expression="full" duration="2534" fileSize="143848224" type="video/mp4" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_ch9.mp3" expression="full" duration="2534" fileSize="20278462" type="audio/mp3" medium="audio" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_ch9.mp4" expression="full" duration="2534" fileSize="143848224" type="video/mp4" medium="video" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_ch9.wma" expression="full" duration="2534" fileSize="20504703" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_ch9.wmv" expression="full" duration="2534" fileSize="160874361" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_2MB_ch9.wmv" expression="full" duration="2534" fileSize="793373149" type="video/x-ms-wmv" medium="video" /><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_Zune_ch9.wmv" expression="full" duration="2534" fileSize="200917061" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPart1_ch9.wmv" length="160874361" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>47</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/443798/Trackback.aspx</trackback:ping><category>Brian Beckman</category><category>Concurrency</category><category>Functional Programming</category><category>Monads</category><category>Parallel Computing</category><category>Programming</category></item><item><title>Expert to Expert: Erik Meijer and Bertrand Meyer - Objects, Contracts, Concurrency, Sleeping Barbers</title><description>&lt;a href="http://en.wikipedia.org/wiki/Bertrand_Meyer"&gt;Bertrand Meyer&lt;/a&gt; is a programming language guru,&amp;nbsp;computer&amp;nbsp;scientist and arguably the uncle of object oriented programming :). Bertrand created the &lt;a href="http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29"&gt;Eiffel programming language&lt;/a&gt;. Eiffel is an object-oriented language that is based on a fixed set of powerful principles like Design by Contract and Command-Query Separation. It's a very powerful language that has impacted the evolution of the more popular general purpose OO languages such as Java and C#. &lt;BR&gt;&lt;BR&gt;With the arrival of multi-core and soon-to-arrive many-core chipsets concurrency and parallelism are top-of-mind for general purpose language designers these days. Bertrand has introduced the SCOOP model on top of Eiffel. SCOOP is a comprehensive effort to make concurrent and distributed programming simple and safe, taking advantages of Eiffel's object technology and Design by Contract.&lt;BR&gt;&lt;BR&gt;General purpose programming language designer and passionate functional programmig advocate &lt;a href="http://research.microsoft.com/~emeijer/"&gt;Erik Meijer&lt;/a&gt; leads the discussion in this addition of Expert to Expert. You all know &lt;a href="http://channel9.msdn.com/tags/erik+meijer&gt;Erik &lt;/a&gt;by now. He's one of our favorite technical celebrities. He and his small team of innovators continue to&amp;nbsp;build &lt;a href="http://labs.live.com/volta/"&gt;great tools&lt;/a&gt; for software developers.&lt;BR&gt;&lt;BR&gt;Very special guest star and famous mathematical logician&amp;nbsp;&lt;a href="http://www.cs.sfu.ca/research/groups/CL/people/gurevich_bio.htm"&gt;Yuri Gurevich&lt;/a&gt; joins us for the first half of the conversation (He happened to be in Bertrand's office when we arrived - very lucky for us indeed!&amp;nbsp;:)).&lt;BR&gt;&lt;BR&gt;This is a long conversation that I hope you eenjoy as much as I do. Find yourself some quality time to listen and learn from this chat amongst some the world's finest programming thinkers.&lt;BR&gt;&lt;BR&gt;Enjoy!&lt;BR&gt;&lt;BR&gt;&lt;a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2EMeijerMeyerGurevich_512kbs.wmv"&gt;Low res file here&lt;/a&gt;.&lt;img src="http://channel9.msdn.com/249684/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Bertrand-Meyer-Objects-Contracts-Concurrency-Sleeping-Barbers/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Bertrand-Meyer-Objects-Contracts-Concurrency-Sleeping-Barbers/</link><pubDate>Thu, 27 Mar 2008 18:32:29 GMT</pubDate><guid isPermaLink="false">http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2EErikMeijerBetrandMeyer.wmv</guid><evnet:views>25181</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/249684/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>&lt;a href="http://en.wikipedia.org/wiki/Bertrand_Meyer"&gt;Bertrand Meyer&lt;/a&gt; is a programming language guru,&amp;nbsp;computer&amp;nbsp;scientist and arguably the uncle of object oriented programming &lt;img src='/emoticons/C9/emotion-1.gif' alt='Smiley' /&gt;. Bertrand created the &lt;a href="http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29"&gt;Eiffel programming language&lt;/a&gt;. Eiffel is an object-oriented language that is based on a fixed set of powerful principles like Design by Contract and Command-Query Separation. It's a very powerful language that has impacted the evolution of the more popular general purpose OO languages such as Java and C#. &lt;BR&gt;&lt;BR&gt;</evnet:previewtext><media:thumbnail url="http://channel9.msdn.com/Link/5c1010f7-ca66-4cd9-969b-552f45e35d34/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/e0d42fe2-3d7a-4707-be24-ec7acbfe916c/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/5e5dc2cd-0c39-4074-98df-17caa2656a3d/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/edfb8c4a-5771-45f1-b928-e6ac6055416d/" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2EMeijerMeyerGurevich_ch9.mp3" expression="full" duration="4082" type="audio/mp3" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2EMeijerMeyerGurevich_ch9.wma" expression="full" duration="4082" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2EErikMeijerBetrandMeyer.wmv" expression="full" duration="4082" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/E2EErikMeijerBetrandMeyer.wmv" length="1" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>24</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Bertrand-Meyer-Objects-Contracts-Concurrency-Sleeping-Barbers/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/249684/Trackback.aspx</trackback:ping><category>Eiffel</category><category>Erik Meijer</category><category>Expert to Expert</category><category>Functional Programming</category><category>MS Research</category><category>Parallel Computing</category><category>Programming</category><category>Software Composability</category></item><item><title>Erik Meijer, Gilad Bracha, Mads Torgersen: Perspectives on Programming Language Design and Evolution</title><description>I attended &lt;a href="http://www.langnetsymposium.com/"&gt;Lang.NET 2008&lt;/a&gt; and, as expected, learned a great deal from some of the industry's finest language and compiler minds. One of the most interesting talks was &lt;a href="http://bracha.org/Site/Home.html"&gt;Gilad Bracha&lt;/a&gt;'s session on his new programming language, Newspeak. Newspeak is really compelling from a language design perspective because of its pluggable type system (everything in Newspeak is virtual). His talk was really deep and targeted at his fellow language designers, but it's all starting to make sense to me now (takes a while to sink into my thick skull).&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://research.microsoft.com/~emeijer/"&gt;Erik Meijer&lt;/a&gt;, our resident programming language guru and a deacon in the Church of the Lamda Calculus (:)), was of course in attendance and presented on the current state of &lt;a href="http://labs.live.com/volta/"&gt;Volta &lt;/a&gt;(an &lt;em&gt;excellent&lt;/em&gt; managed tier-splitting technology that you should definitely play with). &lt;br /&gt;
&lt;br /&gt;
Mads Torgersen, Danish computer scientist and member of the C# design team, was also in attendance. It's always fun to chat with Mads. He's got a very well balanced and insightful perspective on pragmatic programming language design. We're lucky to have him working with Anders et al on the evolution of C#.&lt;br /&gt;
&lt;br /&gt;
I thought it would be a great idea to get these three characters together in one place to talk about what they know best: programming languages. We have a great discussion on type systems, programming language history, DLR and language futures. &lt;br /&gt;
&lt;br /&gt;
If you are into programming language design, then this is for you. There is no white boarding, but the conversation is deep given the topics covered... It's also a really fun interview with exceptional personalities. We laugh a lot, which is always a good thing. So, step outside of the box, settle into a comfy chair (this is a long one - unedited as usual) and get some new perspectives on programming language design and evolution from some of the top minds in the industry.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/LangNetMeijerBrachaTorgersen_512Kbs.wmv"&gt;Lo-Res version for the bandwidth challanged&lt;/a&gt;.&lt;img src="http://channel9.msdn.com/249604/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Gilad-Bracha-Mads-Torgersen-Perspectives-on-Programming-Language-Design-and-Evolution/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Gilad-Bracha-Mads-Torgersen-Perspectives-on-Programming-Language-Design-and-Evolution/</link><pubDate>Tue, 05 Feb 2008 19:52:00 GMT</pubDate><guid isPermaLink="false">http://mschnlnine.vo.llnwd.net/d1/ch9/0/LangNetGiladErikMads.wmv</guid><evnet:views>22943</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/249604/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I attended &lt;a href="http://www.langnetsymposium.com/"&gt;Lang.NET 2008&lt;/a&gt; and, as expected, learned a great deal from some of the industry's finest language and compiler minds. One of the most interesting talks was &lt;a href="http://bracha.org/Site/Home.html"&gt;Gilad Bracha&lt;/a&gt;'s session on his new programming language, Newspeak. Newspeak is really compelling from a language design perspective because of its pluggable type system (everything in Newspeak is virtual). His talk was really deep and targeted at his fellow language designers, but it's all starting to make sense to me now (takes a while to sink into my thick skull).&lt;br /&gt;
&lt;br /&gt;</evnet:previewtext><media:thumbnail url="http://channel9.msdn.com/Link/0d7e9e2d-55c4-49a0-9fd2-5975e3ceacfe/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/74b0afd8-eb3d-4159-b3b8-9394a474b04e/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/bab56c30-4f0d-494c-bb07-3d7feac27f23/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/a481c028-4824-49d6-af8a-e25ca6013553/" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/LangNetMeijerBrachaTorgersenNew_ch9.mp3" expression="full" duration="3142" fileSize="25141289" type="audio/mp3" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/LangNetMeijerBrachaTorgersenNew_ch9.wma" expression="full" duration="3142" fileSize="25421903" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/LangNetGiladErikMads.wmv" expression="full" duration="3142" fileSize="983600797" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/LangNetGiladErikMads.wmv" length="983600797" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>40</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Gilad-Bracha-Mads-Torgersen-Perspectives-on-Programming-Language-Design-and-Evolution/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/249604/Trackback.aspx</trackback:ping><category>Compilers</category><category>Computing</category><category>Erik Meijer</category><category>Functional Programming</category><category>Gilad Bracha</category><category>LangNET 2008</category><category>Programming</category><category>Software Composability</category></item><item><title>Erik Meijer: Functional Programming</title><description>I caught up with the venerable Erik Meijer recently to discuss functional programming languages, academic versus real-world application of functional programming languages (there are very good reasons why people don't program Windows applications in, say, Haskell...) and, well, Erik. Why does Erik work here? What's his history?&amp;nbsp;&lt;BR&gt;&lt;BR&gt;Of course, as an academic type (he also ships software so he's not &lt;EM&gt;purely&lt;/EM&gt; academic...), Erik is a big fan of strict functional or pure functional, as it were. &lt;BR&gt;&lt;BR&gt;This is a deep interview and Erik spends most of the time on the whiteboard. &lt;BR&gt;&lt;BR&gt;Enjoy. There's lots to learn in this one...&lt;BR&gt;&lt;BR&gt;For those who are bandwidth challenged, &lt;a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MeijerFunctional_512kbs.wmv"&gt;here's&amp;nbsp;a low res version for download&lt;/a&gt;.&lt;img src="http://channel9.msdn.com/249593/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Functional-Programming/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Functional-Programming/</link><pubDate>Fri, 18 Jan 2008 19:13:04 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Functional-Programming/</guid><evnet:views>44651</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/249593/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>I caught up with the venerable Erik Meijer recently to discuss functional programming languages, academic versus real-world application of functional programming languages (there are very good reasons why people don't program Windows applications in, say, Haskell...) and, well, Erik. Why does Erik work here? What's his history?&amp;nbsp;&lt;BR&gt;&lt;BR&gt;Of course, as an academic type (he also ships software so he's not &lt;EM&gt;purely&lt;/EM&gt; academic...), Erik is a big fan of strict functional or pure functional, as it were. &lt;BR&gt;&lt;BR&gt;This is a deep interview and Erik spends most of the time on the whiteboard. &lt;BR&gt;&lt;BR&gt;</evnet:previewtext><media:thumbnail url="http://channel9.msdn.com/Link/8318fa88-85e1-49a9-9ac8-8f4e29b53f16/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/04d05c2b-9e86-4321-9acb-4e134d144dd4/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/7d82c774-24c6-40f3-8281-76b4f0eb5ae7/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/2893a517-4c91-4f11-8984-a6d8eeff48d8/" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ErikMeijerPureFunctional_ch9.mp3" expression="full" duration="4077" type="audio/mp3" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ErikMeijerPureFunctional_ch9.wma" expression="full" duration="4077" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MeijerFunctional.wmv" expression="full" duration="4077" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MeijerFunctional.wmv" length="1" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>68</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-Functional-Programming/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/249593/Trackback.aspx</trackback:ping><category>Erik Meijer</category><category>Functional Programming</category><category>Programming</category></item><item><title>Brian Beckman: Don't fear the Monad</title><description>Functional programming is increasing in popularity these days given the inherent problems with shared mutable state that is rife in the imperative world. As we march on to a world of multi and many-core chipsets, software engineering must evolve to better equip software engineers with the tools to exploit the vast power of multiple core processors as it won't come for free as it did in the recent past which was predictably based on Moore's law.&lt;br /&gt;
&lt;br /&gt;
Of course, learning new ways to think about programming semantics and code patterns are not always straight forward. For example, most imperative programmers (which include most of us who build software for a living...) are somewhat perplexed by the notion of functions as first class data structures that can be combined to create powerful and composable systems. Languages like Haskell are pure functional languages and require programmers to think in a different way, often in a precise mathematical fashion where composing and chaining functions is "the Way". &lt;br /&gt;
&lt;br /&gt;
Dr. &lt;a href="http://channel9.msdn.com/tags/Brian+Beckmanshape="&gt;Brian Beckman&lt;/a&gt;, a Channel 9 celebrity, astrophysicist and senior software engineer thought it would be a very good idea to address the complexity of &lt;a href="http://en.wikipedia.org/wiki/Monads_in_functional_programming"&gt;monads&lt;/a&gt; in an easy to understand way: a technical conversation at the whiteboard with yours truly for Channel 9. &lt;br /&gt;
&lt;br /&gt;
This video interview is the result of Brian's idea that he can in fact remove the fear of monads from anybody who pays attention to his explanation. Of course, you can't just cover monads in a vacuum (category theory is not really addressed here) so the context is &lt;em&gt;functional programming&lt;/em&gt; (Brian covers functions and composable functional structures (function chains) and of course monoids and then monads).&lt;br /&gt;
&lt;br /&gt;
Tune in. There's a lot to learn here and only Brian can make monads easy to understand for the rest of us!&lt;br /&gt;
&lt;br /&gt;
Happy Thanksgiving to all the US Niners out there.&lt;br /&gt;
&lt;br /&gt;
Enjoy.&lt;img src="http://channel9.msdn.com/249560/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/</comments><link>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/</link><pubDate>Thu, 22 Nov 2007 18:28:00 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/</guid><evnet:views>53791</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/249560/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Functional programming is increasing in popularity these days given the inherent problems with shared mutable state that is rife in the imperative world. As we march on to a world of multi and many-core chipsets, software engineering must evolve to better equip software engineers with the tools to exploit the vast power of multiple core processors as it won't come for free as it did in the recent past which was predictably based on Moore's law.Of course, learning new ways to think about programming semantics and code patterns are not always straight forward. For example, most imperative…</evnet:previewtext><media:thumbnail url="http://channel9.msdn.com/Link/6dcfbd46-1e71-4490-b4c2-7e73fc35e02b/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/974f44aa-8a8b-481d-9d16-cb438d3b603f/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/1e2668cf-a66a-410f-8d70-6c51bba5093b/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/3f15b5b3-38fd-46a2-acdc-2f109ad72d05/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/54c44fe1-e452-4c3d-91cf-3561068d93fe/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/81f91bc5-c998-4b83-a52f-85256ddaac16/" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/Beckman_OnMonoids_NoFear_ch9.mp3" expression="full" duration="4029" fileSize="32239908" type="audio/mp3" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/Beckman_OnMonoids_NoFear_ch9.wma" expression="full" duration="4029" fileSize="32598459" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/Beckman_On_Monads.wmv" expression="full" duration="4029" fileSize="1261286119" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/Beckman_On_Monads.wmv" length="1261286119" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>54</slash:comments><wfw:commentRss>http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-Dont-fear-the-Monads/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/249560/Trackback.aspx</trackback:ping><category>Brian Beckman</category><category>Functional Programming</category><category>Monads</category><category>MS Personalities</category><category>Programming</category><category>Software Composability</category></item><item><title>JAOO 2007: Joe Armstrong - On Erlang, OO, Concurrency, Shared State and the Future, Part 2</title><description>&lt;p&gt;Often, after the camera is turned off, the conversation continues and, on occasion is truly interesting. Of course, as you could image, Joe, Erik and I continued to chat about concurrent programming, functional languages, the future of hardware-software interaction, etc, when I turned the camera off after &lt;a href="http://channel9.msdn.com/showpost.aspx?postid=351659&gt;part 1&lt;/a&gt; of this interview with the creator of Erlang, Joe Armstrong.&lt;br /&gt;
&lt;br /&gt;
Rather than let the conversation evaporate into the ether of time and space, I decided to turn the camera back on and record a second part. I am sure glad I did! &lt;br /&gt;
&lt;br /&gt;
This time around, Erik Meijer sits down in the other hot seat and we embark on a fascinating conversation about the future of programming in an increasingly, from a modern hardware + software perspective, concurrent world.&lt;br /&gt;
&lt;br /&gt;
Joe is outspoken on the topic of objects and mutable shared state, as you know from part 1 of this interview (and if you understand Erlang, obviously). He's also got some really interesting ideas on programmable hardware...&lt;br /&gt;
&lt;br /&gt;
In this interview, you will also learn what got the great Erik Meijer interested in programming and languages. It's a really interesting story.&lt;br /&gt;
&lt;br /&gt;
Tune in. This is another compelling conversation with some of the industry's most innovative thinkers. Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://armstrongonsoftware.blogspot.com/"&gt;&lt;span&gt;Joe Armstrong&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; is the principle inventor of the Erlang programming Language and coined the term "Concurrency Oriented Programming". He has worked for Ericsson where he developed Erlang and was chief architect of the Erlang/OTP system.&lt;/p&gt;
&lt;p&gt;In 1998 he left Ericsson to form Bluetail, a company which developed all its products in Erlang. In 2003 he obtain his PhD from the Royal Institute of Technology, Stockholm. The title of his thesis was "Making reliable distributed systems in the presence of software errors." Today he works for Ericsson.&lt;/p&gt;
&lt;p&gt;He is author of the book &lt;a href="http://www.pragmaticprogrammer.com/titles/jaerlang/"&gt;&lt;span&gt;Software for a concurrent world&lt;/span&gt;&lt;/a&gt;: (Pragmatic Bookshelf - July 15, 2007). He is married with 2 children, 2 cats and 4 motorcycles and would very much like to sell his Royal Enfield Bullet and replace it with a Norton Commando.&lt;/p&gt;&lt;img src="http://channel9.msdn.com/249537/WebViewBug.aspx?EVT=0" height="1" width="1" alt="" /&gt;</description><comments>http://channel9.msdn.com/posts/Charles/JAOO-2007-Joe-Armstrong-On-Erlang-OO-Concurrency-Shared-State-and-the-Future-Part-2/</comments><link>http://channel9.msdn.com/posts/Charles/JAOO-2007-Joe-Armstrong-On-Erlang-OO-Concurrency-Shared-State-and-the-Future-Part-2/</link><pubDate>Tue, 30 Oct 2007 19:59:00 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/JAOO-2007-Joe-Armstrong-On-Erlang-OO-Concurrency-Shared-State-and-the-Future-Part-2/</guid><evnet:views>13138</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/249537/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Often, after the camera is turned off, the conversation continues and, on occasion is truly interesting. Of course, as you could image, Joe, Erik and I continued to chat about concurrent programming, functional languages, the future of hardware-software interaction, etc, when I turned the camera off after &lt;a href="/showpost.aspx?postid=351659"&gt;part 1&lt;/a&gt; of this interview with the creator of Erlang, Joe Armstrong.&lt;br /&gt;
&lt;br /&gt;
Rather than let the conversation evaporate into the ether of time and space, I decided to turn the camera back on and record a second part. I am sure glad I did! &lt;br /&gt;
&lt;br /&gt;</evnet:previewtext><media:thumbnail url="http://channel9.msdn.com/Link/6a21e839-94cf-4d3d-b0a9-d05e50f79cc7/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/4212fe86-62ce-4a7c-8711-90b52c620970/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/9427b282-cfb7-4a35-b59a-9819c7701255/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/619e5138-0a69-47a5-bca0-e7b965c21aa7/" height="240" width="320" /><media:thumbnail url="http://channel9.msdn.com/Link/b8c09eb4-eb2f-4e13-9ac9-daa0b8b0d538/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/08a860a9-4a4b-496e-b246-c5997f4b63fc/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/21984df4-bad9-4e8f-83ac-caaeaa350a19/" height="64" width="85" /><media:thumbnail url="http://channel9.msdn.com/Link/fdbf0762-8a78-4b45-ad7b-385c8ecfd6d1/" height="64" width="85" /><media:group><media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/JAOO2007_JoeArmstrong_Meijer_ch9.mp3" expression="full" duration="2077" fileSize="16619520" type="audio/mp3" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/JAOO2007_JoeArmstrong_Meijer_ch9.wma" expression="full" duration="2077" fileSize="16809435" type="audio/x-ms-wma" medium="audio" /><media:content isDefault="true" url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/JAOO2007_JoeArmstrong_ErikMeijer.wmv" expression="full" duration="2077" fileSize="650250407" type="video/x-ms-wmv" medium="video" /></media:group><enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/JAOO2007_JoeArmstrong_ErikMeijer.wmv" length="650250407" type="video/x-ms-wmv" /><dc:creator>Charles</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://channel9.msdn.com/posts/Charles/JAOO-2007-Joe-Armstrong-On-Erlang-OO-Concurrency-Shared-State-and-the-Future-Part-2/RSS/</wfw:commentRss><trackback:ping>http://channel9.msdn.com/249537/Trackback.aspx</trackback:ping><category>Erik Meijer</category><category>Erlang</category><category>Functional Programming</category><category>Hardware</category><category>JAOO2007</category><category>Joe Armstrong</category><category>Programming</category></item></channel></rss>