<?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: What&#8217;s in a text API?</title>
	<atom:link href="http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/</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: Sean</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-240201</link>
		<dc:creator>Sean</dc:creator>
		<pubDate>Mon, 20 Jul 2009 12:18:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-240201</guid>
		<description>I&#039;ve gotten the impression that &lt;a href=&quot;http://hackage.haskell.org/package/xformat&quot; rel=&quot;nofollow&quot;&gt;xformat&lt;/a&gt; is unsuitable for i18n from multiple people now. I am very interested in improving it. As &lt;a href=&quot;http://splonderzoek.blogspot.com/2009/06/rfc-extensible-typed-scanf-and-printf.html&quot; rel=&quot;nofollow&quot;&gt;I wrote&lt;/a&gt;, this is really to get something out there for comments, not as a final implementation. How can it be improved? Or, if you prefer, how can we do type-safe, extensible i18n formatting in Haskell?

Please contact me if you&#039;d like to start a conversation about this. (I prefer email, but anything&#039;s fine.)</description>
		<content:encoded><![CDATA[<p>I&#8217;ve gotten the impression that <a href="http://hackage.haskell.org/package/xformat" rel="nofollow">xformat</a> is unsuitable for i18n from multiple people now. I am very interested in improving it. As <a href="http://splonderzoek.blogspot.com/2009/06/rfc-extensible-typed-scanf-and-printf.html" rel="nofollow">I wrote</a>, this is really to get something out there for comments, not as a final implementation. How can it be improved? Or, if you prefer, how can we do type-safe, extensible i18n formatting in Haskell?</p>
<p>Please contact me if you&#8217;d like to start a conversation about this. (I prefer email, but anything&#8217;s fine.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christopher Lewis</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-237531</link>
		<dc:creator>Christopher Lewis</dc:creator>
		<pubDate>Thu, 02 Jul 2009 02:22:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-237531</guid>
		<description>I share your frustrations regarding lots of little libraries and how this impacts a developer&#039;s ability to quickly locate and use the functionality they need. I have frequently experienced this frustration when using other community library management platforms similar to Hackage. When it comes to Haskell, however, I suffer from some tension on this subject.

One of the beauties of a strongly-typed functional language like Haskell are the possibilities it offers a developer to structure and combine different APIs. So, to a certain extent, I view the proliferation of little, &lt;i&gt;interoperable&lt;/i&gt; libraries on Hackage as one of the unique advantages of Haskell.

Is it possible that there&#039;s a more desirable middle ground between lots of little packages and few or fewer larger packages? For example, do we need more structure in the current set of Hierarchical packages, allowing for the creation of what, for lack of a better term, I will call &quot;super&quot; packages that &quot;collect&quot; logically related functionality from many smaller packages? (Just to be clear, I&#039;m not suggesting any form of extension to Haskell as a language, but additional organization layered over the packages offered on Hackage.)</description>
		<content:encoded><![CDATA[<p>I share your frustrations regarding lots of little libraries and how this impacts a developer&#8217;s ability to quickly locate and use the functionality they need. I have frequently experienced this frustration when using other community library management platforms similar to Hackage. When it comes to Haskell, however, I suffer from some tension on this subject.</p>
<p>One of the beauties of a strongly-typed functional language like Haskell are the possibilities it offers a developer to structure and combine different APIs. So, to a certain extent, I view the proliferation of little, <i>interoperable</i> libraries on Hackage as one of the unique advantages of Haskell.</p>
<p>Is it possible that there&#8217;s a more desirable middle ground between lots of little packages and few or fewer larger packages? For example, do we need more structure in the current set of Hierarchical packages, allowing for the creation of what, for lack of a better term, I will call &#8220;super&#8221; packages that &#8220;collect&#8221; logically related functionality from many smaller packages? (Just to be clear, I&#8217;m not suggesting any form of extension to Haskell as a language, but additional organization layered over the packages offered on Hackage.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bryan O'Sullivan</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-237326</link>
		<dc:creator>Bryan O'Sullivan</dc:creator>
		<pubDate>Tue, 30 Jun 2009 16:30:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-237326</guid>
		<description>I love posting stuff before bed! Lots to respond to.

Magnus, I wish there was a nice operator for the Monoid class&#039;s mappend function. That would nicely solve the append notation problem for a huge family of types. For now, there&#039;s nothing appealing :-(

Eelco, I did see SeÃ¡n&#039;s posting about typed formatting, and while it&#039;s cute, it has the severe problem of being unsuitable for i18n.

Nicolas, thanks for reminding me of Data.List.Split. It&#039;s a richer API than I think is necessary (it edges into Parsec territory), but a slimmed down version would be good to use as a basis.

Justin, the existing Data.Text API provides toUpper and friends over text, which behave correctly according to Unicode case folding rules.

As for finding a way to get the extended API ported to strings and bytestrings, I don&#039;t have a dog in that fight. I don&#039;t think that either String or ByteString is an appropriate type to use for text manipulation, so I&#039;m not going to make any efforts there.</description>
		<content:encoded><![CDATA[<p>I love posting stuff before bed! Lots to respond to.</p>
<p>Magnus, I wish there was a nice operator for the Monoid class&#8217;s mappend function. That would nicely solve the append notation problem for a huge family of types. For now, there&#8217;s nothing appealing <img src='http://www.serpentine.com/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Eelco, I did see SeÃ¡n&#8217;s posting about typed formatting, and while it&#8217;s cute, it has the severe problem of being unsuitable for i18n.</p>
<p>Nicolas, thanks for reminding me of Data.List.Split. It&#8217;s a richer API than I think is necessary (it edges into Parsec territory), but a slimmed down version would be good to use as a basis.</p>
<p>Justin, the existing Data.Text API provides toUpper and friends over text, which behave correctly according to Unicode case folding rules.</p>
<p>As for finding a way to get the extended API ported to strings and bytestrings, I don&#8217;t have a dog in that fight. I don&#8217;t think that either String or ByteString is an appropriate type to use for text manipulation, so I&#8217;m not going to make any efforts there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Justin Bailey</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-237322</link>
		<dc:creator>Justin Bailey</dc:creator>
		<pubDate>Tue, 30 Jun 2009 15:51:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-237322</guid>
		<description>I would love to see string oriented operations like toUpper, toLower, and trim. isInfixOf and intercalate are examples of *worst* *function* *name* *ever*!

I&#039;m excited to see what you come up with, but will it be easy to use over multiple list-like representations? E.g. strings, bytestring, and text?</description>
		<content:encoded><![CDATA[<p>I would love to see string oriented operations like toUpper, toLower, and trim. isInfixOf and intercalate are examples of *worst* *function* *name* *ever*!</p>
<p>I&#8217;m excited to see what you come up with, but will it be easy to use over multiple list-like representations? E.g. strings, bytestring, and text?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nicolas Pouillard</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-237310</link>
		<dc:creator>Nicolas Pouillard</dc:creator>
		<pubDate>Tue, 30 Jun 2009 14:43:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-237310</guid>
		<description>About splitting, switching to Text -&gt; Text -&gt; [Text] won&#039;t suffice. Having a look to Data.List.Split may be a good idea. Moreover splitting on a regexp is very common in string processing.</description>
		<content:encoded><![CDATA[<p>About splitting, switching to Text -&gt; Text -&gt; [Text] won&#8217;t suffice. Having a look to Data.List.Split may be a good idea. Moreover splitting on a regexp is very common in string processing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eelco</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-237285</link>
		<dc:creator>Eelco</dc:creator>
		<pubDate>Tue, 30 Jun 2009 10:06:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-237285</guid>
		<description>Very nice summary! I&#039;m looking forward to your work. Have you seen http://splonderzoek.blogspot.com/2009/06/rfc-extensible-typed-scanf-and-printf.html BTW? It&#039;s a recent attempt to create a better formatting (and parsing) library.</description>
		<content:encoded><![CDATA[<p>Very nice summary! I&#8217;m looking forward to your work. Have you seen <a href="http://splonderzoek.blogspot.com/2009/06/rfc-extensible-typed-scanf-and-printf.html" rel="nofollow">http://splonderzoek.blogspot.com/2009/06/rfc-extensible-typed-scanf-and-printf.html</a> BTW? It&#8217;s a recent attempt to create a better formatting (and parsing) library.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Magnus</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-237262</link>
		<dc:creator>Magnus</dc:creator>
		<pubDate>Tue, 30 Jun 2009 08:01:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-237262</guid>
		<description>Ah, yes, I should have mentioned that I use ++ on [Char].  It&#039;d be nice to have a similar operator in Text, append is long!</description>
		<content:encoded><![CDATA[<p>Ah, yes, I should have mentioned that I use ++ on [Char].  It&#8217;d be nice to have a similar operator in Text, append is long!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Magnus</title>
		<link>http://www.serpentine.com/blog/2009/06/30/python-and-haskell-text-apis-compare/comment-page-1/#comment-237256</link>
		<dc:creator>Magnus</dc:creator>
		<pubDate>Tue, 30 Jun 2009 07:58:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/?p=397#comment-237256</guid>
		<description>I often use ++ instead of append.</description>
		<content:encoded><![CDATA[<p>I often use ++ instead of append.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

