<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: First steps with Haskell text API improvement</title>
	<atom:link href="http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/</link>
	<description>Bryan O&#039;Sullivan&#039;s blog</description>
	<lastBuildDate>Wed, 08 Feb 2012 06:41:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Andrew</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-247014</link>
		<dc:creator>Andrew</dc:creator>
		<pubDate>Sun, 04 Oct 2009 20:50:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-247014</guid>
		<description>Good stuff.

chunksOf :: Int -&gt; [a] -&gt; [[a]]
please.</description>
		<content:encoded><![CDATA[<p>Good stuff.</p>
<p>chunksOf :: Int -&gt; [a] -&gt; [[a]]<br />
please.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johan Tibell</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-239988</link>
		<dc:creator>Johan Tibell</dc:creator>
		<pubDate>Tue, 14 Jul 2009 08:43:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-239988</guid>
		<description>I agree with Duncan that a Compat module is unnecessary. The number of modules listed at http://hackage.haskell.org/package/text is already rather intimidating. I also wouldn&#039;t bother with splitChar unless it has serious performance benefits.

I also prefer join to intercalate but I guess that boat already sailed. I don&#039;t remember what the original argument was but if intercalate was chosen over join because of name clashes with monads I think that&#039;s a poor reason since we have namespaces.

A parting comment: Beware of the potential combinatorial explosion that comes from creating a helper function for every common case rather than relying on composition. Haskell&#039;s lack of keyword arguments makes libraries prone to export lots of fooByBar functions for lots of different &quot;Bars&quot;. If lots of possible &quot;configuration&quot; parameters are absolutely needed for a function consider passing them in a record instead of creating separate functions.</description>
		<content:encoded><![CDATA[<p>I agree with Duncan that a Compat module is unnecessary. The number of modules listed at <a href="http://hackage.haskell.org/package/text" rel="nofollow">http://hackage.haskell.org/package/text</a> is already rather intimidating. I also wouldn&#8217;t bother with splitChar unless it has serious performance benefits.</p>
<p>I also prefer join to intercalate but I guess that boat already sailed. I don&#8217;t remember what the original argument was but if intercalate was chosen over join because of name clashes with monads I think that&#8217;s a poor reason since we have namespaces.</p>
<p>A parting comment: Beware of the potential combinatorial explosion that comes from creating a helper function for every common case rather than relying on composition. Haskell&#8217;s lack of keyword arguments makes libraries prone to export lots of fooByBar functions for lots of different &#8220;Bars&#8221;. If lots of possible &#8220;configuration&#8221; parameters are absolutely needed for a function consider passing them in a record instead of creating separate functions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Blackheath</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-239767</link>
		<dc:creator>Stephen Blackheath</dc:creator>
		<pubDate>Mon, 13 Jul 2009 00:48:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-239767</guid>
		<description>I second Arthur van Leeuwen&#039;s &quot;dropWhileEnd&quot; suggestion</description>
		<content:encoded><![CDATA[<p>I second Arthur van Leeuwen&#8217;s &#8220;dropWhileEnd&#8221; suggestion</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Keith</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-238741</link>
		<dc:creator>Keith</dc:creator>
		<pubDate>Thu, 09 Jul 2009 00:15:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-238741</guid>
		<description>I think chunksOf is generally useful enough to be in Data.List. Is is possible (Haskell&#039; ?) to add functions like this that turn out to be general enough</description>
		<content:encoded><![CDATA[<p>I think chunksOf is generally useful enough to be in Data.List. Is is possible (Haskell&#8217; ?) to add functions like this that turn out to be general enough</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nbloomf</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-238420</link>
		<dc:creator>nbloomf</dc:creator>
		<pubDate>Tue, 07 Jul 2009 05:24:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-238420</guid>
		<description>IIRC the chunksOf function was implemented as groupBy in &quot;On Lisp&quot;.</description>
		<content:encoded><![CDATA[<p>IIRC the chunksOf function was implemented as groupBy in &#8220;On Lisp&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-238419</link>
		<dc:creator>Greg</dc:creator>
		<pubDate>Tue, 07 Jul 2009 05:13:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-238419</guid>
		<description>chunksOf

in Ruby this is Enumerable#each_slice.

# Ruby
(1..10).each_slice(3) {&#124;a&#124; p a} # [1,2,3] ...

-- Haksell
eachSlice 4 &quot;haskell.org&quot; == [&quot;hask&quot;,&quot;ell.&quot;,&quot;org&quot;]

I like chunksOf or groupsOf and slicesOf</description>
		<content:encoded><![CDATA[<p>chunksOf</p>
<p>in Ruby this is Enumerable#each_slice.</p>
<p># Ruby<br />
(1..10).each_slice(3) {|a| p a} # [1,2,3] &#8230;</p>
<p>&#8211; Haksell<br />
eachSlice 4 &#8220;haskell.org&#8221; == ["hask","ell.","org"]</p>
<p>I like chunksOf or groupsOf and slicesOf</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: solrize</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-238391</link>
		<dc:creator>solrize</dc:creator>
		<pubDate>Tue, 07 Jul 2009 01:30:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-238391</guid>
		<description>strip/stripLeft/stripRight are in the spirit of the Python names for those functions, which in turn probably has more in common with Haskell than Perl or Java do.  So I&#039;d stay with them.</description>
		<content:encoded><![CDATA[<p>strip/stripLeft/stripRight are in the spirit of the Python names for those functions, which in turn probably has more in common with Haskell than Perl or Java do.  So I&#8217;d stay with them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Simon Michael</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-238367</link>
		<dc:creator>Simon Michael</dc:creator>
		<pubDate>Mon, 06 Jul 2009 22:35:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-238367</guid>
		<description>I would like to see strip* included. I write these helpers in every haskell project (as strip, lstrip, rstrip).

You didn&#039;t mention the split library on hackage.. did you see it, any more good ideas to be harvested from there ?

Great stuff.</description>
		<content:encoded><![CDATA[<p>I would like to see strip* included. I write these helpers in every haskell project (as strip, lstrip, rstrip).</p>
<p>You didn&#8217;t mention the split library on hackage.. did you see it, any more good ideas to be harvested from there ?</p>
<p>Great stuff.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Taylor</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-238319</link>
		<dc:creator>Ian Taylor</dc:creator>
		<pubDate>Mon, 06 Jul 2009 16:42:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-238319</guid>
		<description>&#039;trimLeft&#039;, &#039;trimRight&#039;, &#039;trim&#039; sound good to me.

I always liked the sound of &#039;join&#039; when dealing with text rather than &#039;intercalate&#039;. It goes well with split.</description>
		<content:encoded><![CDATA[<p>&#8216;trimLeft&#8217;, &#8216;trimRight&#8217;, &#8216;trim&#8217; sound good to me.</p>
<p>I always liked the sound of &#8216;join&#8217; when dealing with text rather than &#8216;intercalate&#8217;. It goes well with split.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: brian</title>
		<link>http://www.serpentine.com/blog/2009/07/06/first-steps-with-haskell-text-api-improvement/comment-page-1/#comment-238315</link>
		<dc:creator>brian</dc:creator>
		<pubDate>Mon, 06 Jul 2009 16:14:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=408#comment-238315</guid>
		<description>stripLeft and stripRight seem fine to me. If they were named stripStart and stripEnd, I&#039;d agree that they were badly named because of the language issue.</description>
		<content:encoded><![CDATA[<p>stripLeft and stripRight seem fine to me. If they were named stripStart and stripEnd, I&#8217;d agree that they were badly named because of the language issue.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

