<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Discussions by Thorium</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/Thorium/Discussions/RSS"></atom:link>
	<image>
		<url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
		<title>Channel 9 - Discussions by Thorium</title>
		<link>http://channel9.msdn.com/Niners/Thorium/Discussions</link>
	</image>
	<description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
	<link>http://channel9.msdn.com/Niners/Thorium/Discussions</link>
	<language>en</language>
	<pubDate>Tue, 21 May 2013 10:56:46 GMT</pubDate>
	<lastBuildDate>Tue, 21 May 2013 10:56:46 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<c9:totalResults>0</c9:totalResults>
	<c9:pageCount>0</c9:pageCount>
	<c9:pageSize>0</c9:pageSize>
	<item>
		<title>Site Feedback - What Channel9 videos I have watched?</title>
		<description><![CDATA[<p></p><blockquote><div class="quoteText"><p></p><p>So what I'm basically saying is that if you want help, it's usually better to start with &quot;please&quot;, rather than threatening legal action.</p><p></p></div></blockquote><p></p><p>&nbsp;</p><p>That is true. It wasn't a threatening...&nbsp;And this is a great site. But I made the same request, back in 2010, and I was adviced to make a Microsoft Connect issue. I did, and didn't get response. Now if I try to go to the Connect-page with that Id I see that it is removed or something: <span id="FriendlyErrorMessage">The system has encountered an unexpected error.</span></p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/What-Channel9-videos-I-have-watched/baaca61a15314ede9739a15a00d9a106#baaca61a15314ede9739a15a00d9a106</link>
		<pubDate>Sun, 03 Feb 2013 13:12:21 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/What-Channel9-videos-I-have-watched/baaca61a15314ede9739a15a00d9a106#baaca61a15314ede9739a15a00d9a106</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Site Feedback - What Channel9 videos I have watched?</title>
		<description><![CDATA[<p>First of all, thanks for the site, the videos, and the queue!</p><p>But... a year ago I watched a few great videos. I don't know which was them, and videos are not easy to search. I would like to see them again and recommend to a friend. I gave them 5 star rating. So I would like to have &quot;my rated videos&quot; in profile (or a&nbsp;second queue).</p><p>I think this is a fair request:</p><p>1) You must have info about them because I can't vote many times&nbsp;the same video</p><p>2) By&nbsp;EU law, I have the right to get the&nbsp;information you store about me.&nbsp;</p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/What-Channel9-videos-I-have-watched/7686d1d1debf4d188435a15200b31458#7686d1d1debf4d188435a15200b31458</link>
		<pubDate>Sat, 26 Jan 2013 10:52:00 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/What-Channel9-videos-I-have-watched/7686d1d1debf4d188435a15200b31458#7686d1d1debf4d188435a15200b31458</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>7</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - LINQ Where; fold vs bind...</title>
		<description><![CDATA[<p>While Bind (SelectMany) and Fold (Aggregate) are pretty similar, there is a slightly different point of view...</p><p>Matthew's Concat uses recursive aggregate and function as accumulator value.</p><ul><li>To replace Bind we need many aggregates... (or do we, maybe not?) </li><li>By default, Aggregate/fold will exit the monad (so we &quot;reify&quot; (=execute), get the side effects and break the continuation) </li><li>By using func here, we can remain the continuation. </li><li>But still we kind of exit and enter the monad many times, which could affect the performance. </li></ul><p>Bind is not totally &quot;pure&quot; as outer function will produce set of results but the outer function doesn't actually know (by type syntax) how to combine different results produced by the inner function. So it has to know something about these results that the function syntax won't tell us.</p><p>In theory Bind could match without running through items. Then it would be different. See <a title="TEDEd: How Big Is Infinity? " href="http://youtu.be/UPA3bwVVzGI" target="_blank">this</a> short video.&nbsp;Maybe do the concatenation without creating a new instance... (or with immutable data structures this means&nbsp;just using the pointer to old when creating a &quot;new&quot; one). This way we could get e.g. effective parallel execution. I think the current implementations, when they flatten,&nbsp;can reuse items but not the inner collections (/monads).</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/7944db1e63194ddbb21aa0ac00e1cf60#7944db1e63194ddbb21aa0ac00e1cf60</link>
		<pubDate>Mon, 13 Aug 2012 13:42:09 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/7944db1e63194ddbb21aa0ac00e1cf60#7944db1e63194ddbb21aa0ac00e1cf60</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>12</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - LINQ Where; fold vs bind...</title>
		<description><![CDATA[<p>The source to try as LINQPad program (sorry for one-liner):</p><p></p><pre class="brush: csharp">void Main(){   var l = new[]{new []{1,2,3},new []{4,5,6}};   var res1 = l.SelectMany(s =&gt; s.Select(i =&gt; i&#43;1));   res1.Dump();      var res2 = l.MySelectMany(s =&gt; s.Select(i =&gt; i&#43;1));   res2.Dump();}public static class myExtensions{   public static IEnumerable&lt;TResult&gt; MySelectMany&lt;TSource, TResult&gt;(this IEnumerable&lt;TSource&gt; source, Func&lt;TSource, IEnumerable&lt;TResult&gt;&gt; selector){      return source.Aggregate(Enumerable.Empty&lt;TResult&gt;(), (a, s) =&gt; a.Concat(selector(s)));   }}</pre><p></p><p>&nbsp;</p><p>&nbsp;</p><p></p><blockquote><div class="quoteText"><p></p><p><a class="permalink" title="Post Permalink" href="/Forums/TechOff/LINQ-Where-Could-return-be-bind/66a3d079c7074ebfb24ba0a100d6c944">3 hours&nbsp;ago</a>, <a href="/Niners/JohnAskew">JohnAskew</a> wrote</p><p>This article is by Bart De Smet and is worth a look: <a href="http://dotnet.dzone.com/news/linq-folding-left-right-and-th">http://dotnet.dzone.com/news/linq-folding-left-right-and-th</a></p><p>Here's another nice article about folds in LINQ: <a href="http://weblogs.asp.net/podwysocki/archive/2009/02/26/functional-c-fun-with-folds.aspx">http://weblogs.asp.net/podwysocki/archive/2009/02/26/functional-c-fun-with-folds.aspx</a></p><p></p></div></blockquote><p></p><p>Thanks for the links... Matthew there wrote how to make .Concat() with .Aggregate(), so that is ok to use I guess...</p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/99dd625d3d9c4633b506a0a10110a1a3#99dd625d3d9c4633b506a0a10110a1a3</link>
		<pubDate>Thu, 02 Aug 2012 16:32:37 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/99dd625d3d9c4633b506a0a10110a1a3#99dd625d3d9c4633b506a0a10110a1a3</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>12</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - LINQ Where; fold vs bind...</title>
		<description><![CDATA[<p>wkempf, right, that was a typo. But as JohnAskew stated out, the initial value can be left away. Thanks for both, I fixed this to the orginal message.</p><p>Videos like <a title="What is a database, really?" href="http://channel9.msdn.com/Series/Beckman-Meijer-Overdrive/Brian-Beckman-and-Erik-Meijer-What-is-a-database-really" target="_blank">this</a> state that &quot;Bind is the mother of all operators&quot;. But is that true, if you can do bind with Aggregate (=fold)?</p><p>I'm not looking to make a specific task, I just want to make this clear to me.</p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/ba5c58fea0ca489ba197a0a100850e62#ba5c58fea0ca489ba197a0a100850e62</link>
		<pubDate>Thu, 02 Aug 2012 08:04:26 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/ba5c58fea0ca489ba197a0a100850e62#ba5c58fea0ca489ba197a0a100850e62</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>12</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - LINQ Where; fold vs bind...</title>
		<description><![CDATA[<p>Maybe I wasn't clear...</p><p>The &quot;predicate(s)&quot; is just anything that holds the definition of the Where predicate:</p><p>&nbsp;Func&lt;TSource, bool&gt; predicate</p><p>The &quot;selector(s)&quot; is just anything that holds the definition of the SelectMany selector:</p><p>Func&lt;TSource, IEnumerable&lt;TResult&gt;&gt; selector</p><p>The concrete implementation doesn't matter.</p><p>---</p><p>Fold / Aggregate is a kind of visitor pattern to visit every item of the container (monad).</p><p>---</p><p>The SelectMany (monadic bind) syntax is something like this:</p><p><code class="text plain">M&lt;A&gt; -&gt; (A -&gt; M&lt;B&gt;) -&gt; M&lt;B&gt;</code></p><p>LINQ deals with immutable collections. So&nbsp;M&lt;A&gt; is not&nbsp;altered/transformed. Instead someone will know how to create a new M&lt;B&gt;. And applying this (A-&gt;M&lt;B&gt;) will&nbsp;mean that&nbsp;there must be a way to&nbsp;get A from M&lt;A&gt;. That&nbsp;will need some kind of visitor pattern.&nbsp;</p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/4dd83b8623be481ca985a0a0010dbafe#4dd83b8623be481ca985a0a0010dbafe</link>
		<pubDate>Wed, 01 Aug 2012 16:22:03 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/4dd83b8623be481ca985a0a0010dbafe#4dd83b8623be481ca985a0a0010dbafe</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>12</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - LINQ Where; fold vs bind...</title>
		<description><![CDATA[<p>Hello!</p><p>This post refers to some Going Deep videos...</p><p>Greg told in his <a title="C9 Lectures: Greg Meredith - Monadic Design Patterns for the Web - Introduction to Monads" href="http://channel9.msdn.com/Shows/Going&#43;Deep/C9-Lectures-Greg-Meredith-Monadic-Design-Patterns-for-the-Web-Introduction-to-Monads" target="_blank">video</a> about shape, wrap and roll.</p><p>LINQ Select many is &quot;wrap&quot;&nbsp;and Aggregate is &quot;roll&quot;, right?</p><p>LINQ Where have this kind of signature:</p><p><pre class="brush: csharp">public static IEnumerable&lt;TSource&gt; Where&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; source, Func&lt;TSource, bool&gt; predicate) 
</pre></p><p>So... As Bart said in his <a title="Bart De Smet: MinLINQ - The Essence of LINQ" href="http://channel9.msdn.com/Shows/Going&#43;Deep/Bart-De-Smet-MinLINQ-The-Essence-of-LINQ">video</a>, &quot;where&quot; could be done with SelectMany.</p><ul><li>public static IEnumerable&lt;TResult&gt; SelectMany&lt;TSource, TResult&gt;(this IEnumerable&lt;TSource&gt; source, Func&lt;TSource, IEnumerable&lt;TResult&gt;&gt; selector); </li></ul><p>I'll try...It will be something like this:</p><p><pre class="brush: csharp">return source.SelectMany(s =&gt; Enumerable.Repeat(s, predicate(s) ? 1 : 0));</pre></p><p>But.... as Ralf said in his <a title="C9 Lectures: Dr. Ralf Lämmel - Going Bananas" href="http://channel9.msdn.com/Shows/Going&#43;Deep/C9-Lectures-Dr-Ralf-Lmmel-Going-Bananas">video</a>, &quot;where&quot; could be done with Aggregate.</p><ul><li>public static TAccumulate Aggregate&lt;TSource, TAccumulate&gt;(this IEnumerable&lt;TSource&gt; source, TAccumulate seed, Func&lt;TAccumulate, TSource, TAccumulate&gt; func); </li></ul><p>I'll try...It will be something like this:</p><p><pre class="brush: csharp">return source.Aggregate((a, s) =&gt; predicate(s) ? a.Concat(Enumerable.Repeat(s, 1)):a);</pre></p><p>Now... Can we do Aggregate with&nbsp;SelectMany?</p><p>No? Can you prove it?</p><p>It shouldn't be possible,&nbsp;as monads are about shap, wrap (=bind, here: SelectMany) and roll (here: Aggregate)?</p><p>SelectMany seems to be easy to do with Aggregate:</p><p><pre class="brush: csharp">return source.Aggregate((a, s) =&gt; a.Concat(selector(s)));</pre></p><p>Am I cheating here by using Concat? That will aggregate again&nbsp;inside the same container(monad).&nbsp;Will it use SelectMany inside?</p><p>I could do SelectMany with Aggregate by exiting the monad and go back again (so I will cause the side effect to exit the monad and break the continuation), right? So:</p><p><pre class="brush: text">
// SelectMany:
M&lt;A&gt; -&gt; (A -&gt; M&lt;B&gt;) -&gt; M&lt;B&gt;

// Aggregate:
M&lt;A&gt; -&gt; B -&gt; (B -&gt; A -&gt; B) -&gt; B
// Aggregate (if accumulator would be type of M&lt;B&gt;):
M&lt;A&gt; -&gt; M&lt;B&gt; -&gt; (M&lt;B&gt; -&gt; A -&gt; M&lt;B&gt;) -&gt; M&lt;B&gt;
// this Aggregate without initial value:
M&lt;A&gt; -&gt; (M&lt;B&gt; -&gt; A -&gt; M&lt;B&gt;) -&gt; M&lt;B&gt;
// This is very near to select many, you can handle the extra parameter in the inner func as you like...
</pre></p><p>So I can use IEnumerable&lt;T&gt; as accumulator (or could even a Func&lt;...&gt;). On the other hand, LINQ-methods are not pure... e.g. SelectMany is not pure monadic bind: it has some overloads.</p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/c694782c51f14de894cea09f011f1d82#c694782c51f14de894cea09f011f1d82</link>
		<pubDate>Tue, 31 Jul 2012 17:25:21 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/LINQ-Where-Could-return-be-bind/c694782c51f14de894cea09f011f1d82#c694782c51f14de894cea09f011f1d82</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>12</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Site Feedback - I would like to see the list of ratings I have given!</title>
		<description><![CDATA[<p>Thanks. </p><p>Here they are:</p><p><a href="https://connect.microsoft.com/site1133/feedback/details/607324/i-would-like-to-see-the-list-of-ratings-i-have-given">https&#58;&#47;&#47;connect.microsoft.com&#47;site1133&#47;feedback&#47;details&#47;607324&#47;i-would-like-to-see-the-list-of-ratings-i-have-given</a></p><p><a href="https://connect.microsoft.com/site1133/feedback/details/607330/want-to-see-it-button">https&#58;&#47;&#47;connect.microsoft.com&#47;site1133&#47;feedback&#47;details&#47;607330&#47;want-to-see-it-button</a></p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/I-would-like-to-see-the-list-of-ratings-I-have-given/749b42090d8a4d40aa5a9e010111599e#749b42090d8a4d40aa5a9e010111599e</link>
		<pubDate>Thu, 30 Sep 2010 16:35:14 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/I-would-like-to-see-the-list-of-ratings-I-have-given/749b42090d8a4d40aa5a9e010111599e#749b42090d8a4d40aa5a9e010111599e</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Site Feedback - I would like to see the list of ratings I have given!</title>
		<description><![CDATA[<p>...and also some kind of favourites, &quot;I will watch these - queue&quot;. <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/I-would-like-to-see-the-list-of-ratings-I-have-given/133b7d0be205411f96059dfd013c3248#133b7d0be205411f96059dfd013c3248</link>
		<pubDate>Sun, 26 Sep 2010 19:11:14 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/I-would-like-to-see-the-list-of-ratings-I-have-given/133b7d0be205411f96059dfd013c3248#133b7d0be205411f96059dfd013c3248</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Site Feedback - I would like to see the list of ratings I have given!</title>
		<description><![CDATA[<p>&nbsp;</p><p>Hi!</p><p>I remember watching and rating a video. I would like to recommend it to a friend. But I don't remember what video it was...</p><p>I would like to see the list of ratings I have given.</p><p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/I-would-like-to-see-the-list-of-ratings-I-have-given/6d512d8dcf02404293969dfb009c1abb#6d512d8dcf02404293969dfb009c1abb</link>
		<pubDate>Fri, 24 Sep 2010 09:28:21 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/I-would-like-to-see-the-list-of-ratings-I-have-given/6d512d8dcf02404293969dfb009c1abb#6d512d8dcf02404293969dfb009c1abb</guid>
		<dc:creator>Tuomas Hietanen</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/Thorium/Discussions/RSS</wfw:commentRss>
	</item>
</channel>
</rss>