<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Contents: Chronological Listing Of Exercises</title>
	<atom:link href="http://programmingpraxis.com/2010/07/02/contents-chronological-listing-of-exercises/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmingpraxis.com/2010/07/02/contents-chronological-listing-of-exercises/</link>
	<description>A collection of etudes, updated weekly, for the education and enjoyment of the savvy programmer</description>
	<lastBuildDate>Sat, 11 Feb 2012 09:48:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Remco Niemeijer</title>
		<link>http://programmingpraxis.com/2010/07/02/contents-chronological-listing-of-exercises/#comment-1377</link>
		<dc:creator><![CDATA[Remco Niemeijer]]></dc:creator>
		<pubDate>Fri, 02 Jul 2010 13:45:11 +0000</pubDate>
		<guid isPermaLink="false">http://programmingpraxis.com/?p=2519#comment-1377</guid>
		<description><![CDATA[My Haskell solution (see http://bonsaicode.wordpress.com/2010/07/02/programming-praxis-chronological-listing-of-exercises/ for a version with comments):

[sourcecode lang=&quot;css&quot;]
import Data.List
import Data.List.Split
import Text.Printf
import Text.Regex.Posix

toMonth :: Int -&gt; String
toMonth m = chunk 3 &quot;JanFebMarAprMayJunJulAugSepOctNovDec&quot; !! (m - 1)

item :: [[String]] -&gt; String
item xs = printf
    &quot;&lt;tr&gt;&lt;td&gt;%s&lt;/td&gt;&lt;td&gt;%02s %s %s&lt;/td&gt;&lt;td&gt;%s: %s&lt;/td&gt;\
    \&lt;td&gt;%s%s&lt;a href=\&quot;http://programmingpraxis.codepad.org/%s\&quot;&gt;\
    \codepad&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&quot;
    (g &quot;number&quot;) (g &quot;pubday&quot;) (toMonth . read $ g &quot;pubmon&quot;) (g &quot;pubyear&quot;)
    (link &quot;&quot; (g &quot;title&quot;)) (g &quot;blurb&quot;) (link &quot;&quot; &quot;exercise&quot;)
    (link (&quot;/&quot; ++ g &quot;soln&quot;) &quot;solution&quot;) (g &quot;codepad&quot;)
    where g x = maybe &quot;&quot; last $ find ((== x) . head) xs
          link :: String -&gt; String -&gt; String
          link = printf &quot;&lt;a href=\&quot;/%s/%02s/%02s/%s%s/\&quot;&gt;%s&lt;/a&gt;&quot;
                 (g &quot;pubyear&quot;) (g &quot;pubmon&quot;) (g &quot;pubday&quot;) (g &quot;file&quot;)

items :: String -&gt; [String]
items = map (item . map (splitOn &quot;\t&quot;) . lines) .
        filter (=~ &quot;^number\t[1-9][0-9]*$&quot;) . splitOn &quot;\n\n&quot;

listing :: ([String] -&gt; [String]) -&gt; String -&gt; String
listing f xs = &quot;&lt;table cellpadding=\&quot;10\&quot;&gt;&quot; ++ 
               concat (f $ items xs) ++ &quot;&lt;/table&gt;&quot;

main :: IO ()
main = do x &lt;- readFile &quot;praxis.info&quot;
          putStrLn $ listing id x
          putStrLn $ listing reverse x
[/sourcecode]]]></description>
		<content:encoded><![CDATA[<p>My Haskell solution (see <a href="http://bonsaicode.wordpress.com/2010/07/02/programming-praxis-chronological-listing-of-exercises/" rel="nofollow">http://bonsaicode.wordpress.com/2010/07/02/programming-praxis-chronological-listing-of-exercises/</a> for a version with comments):</p>
<pre class="brush: css;">
import Data.List
import Data.List.Split
import Text.Printf
import Text.Regex.Posix

toMonth :: Int -&gt; String
toMonth m = chunk 3 &quot;JanFebMarAprMayJunJulAugSepOctNovDec&quot; !! (m - 1)

item :: [[String]] -&gt; String
item xs = printf
    &quot;&lt;tr&gt;&lt;td&gt;%s&lt;/td&gt;&lt;td&gt;%02s %s %s&lt;/td&gt;&lt;td&gt;%s: %s&lt;/td&gt;\
    \&lt;td&gt;%s%s&lt;a href=\&quot;http://programmingpraxis.codepad.org/%s\&quot;&gt;\
    \codepad&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&quot;
    (g &quot;number&quot;) (g &quot;pubday&quot;) (toMonth . read $ g &quot;pubmon&quot;) (g &quot;pubyear&quot;)
    (link &quot;&quot; (g &quot;title&quot;)) (g &quot;blurb&quot;) (link &quot;&quot; &quot;exercise&quot;)
    (link (&quot;/&quot; ++ g &quot;soln&quot;) &quot;solution&quot;) (g &quot;codepad&quot;)
    where g x = maybe &quot;&quot; last $ find ((== x) . head) xs
          link :: String -&gt; String -&gt; String
          link = printf &quot;&lt;a href=\&quot;/%s/%02s/%02s/%s%s/\&quot;&gt;%s&lt;/a&gt;&quot;
                 (g &quot;pubyear&quot;) (g &quot;pubmon&quot;) (g &quot;pubday&quot;) (g &quot;file&quot;)

items :: String -&gt; [String]
items = map (item . map (splitOn &quot;\t&quot;) . lines) .
        filter (=~ &quot;^number\t[1-9][0-9]*$&quot;) . splitOn &quot;\n\n&quot;

listing :: ([String] -&gt; [String]) -&gt; String -&gt; String
listing f xs = &quot;&lt;table cellpadding=\&quot;10\&quot;&gt;&quot; ++
               concat (f $ items xs) ++ &quot;&lt;/table&gt;&quot;

main :: IO ()
main = do x &lt;- readFile &quot;praxis.info&quot;
          putStrLn $ listing id x
          putStrLn $ listing reverse x
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: Programming Praxis &#8211; Chronological Listing Of Exercises &#171; Bonsai Code</title>
		<link>http://programmingpraxis.com/2010/07/02/contents-chronological-listing-of-exercises/#comment-1376</link>
		<dc:creator><![CDATA[Programming Praxis &#8211; Chronological Listing Of Exercises &#171; Bonsai Code]]></dc:creator>
		<pubDate>Fri, 02 Jul 2010 13:44:41 +0000</pubDate>
		<guid isPermaLink="false">http://programmingpraxis.com/?p=2519#comment-1376</guid>
		<description><![CDATA[[...] Praxis &#8211; Chronological Listing Of&#160;Exercises By Remco Niemeijer  In today&#8217;s Programming Praxis exercise our goal is to replicate a script Phil wrote to generate chronological [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Praxis &#8211; Chronological Listing Of&nbsp;Exercises By Remco Niemeijer  In today&#8217;s Programming Praxis exercise our goal is to replicate a script Phil wrote to generate chronological [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

