<?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"
	>
<channel>
	<title>Comments on: Applicative Functors in Scala</title>
	<atom:link href="http://blog.tmorris.net/applicative-functors-in-scala/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tmorris.net/applicative-functors-in-scala/</link>
	<description>The weblog of Tony Morris</description>
	<pubDate>Tue, 06 Jan 2009 12:50:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Daniel Spiewak</title>
		<link>http://blog.tmorris.net/applicative-functors-in-scala/#comment-2344</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Sat, 21 Jun 2008 19:05:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/applicative-functors-in-scala/#comment-2344</guid>
		<description>Boy, you Haskell veterans...can't get you to do anything that isn't cryptic!  :-)

I'm not sure I understand why the fixity of the operator is an issue.  All of the operators in your example are infix; you're not using anything unary or anything like that.  If your operators were all right-associative, the resulting AST would be the same as it is now with left-associative operators and parentheses.  (wouldn't it?)</description>
		<content:encoded><![CDATA[<p>Boy, you Haskell veterans&#8230;can&#8217;t get you to do anything that isn&#8217;t cryptic!  <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
I&#8217;m not sure I understand why the fixity of the operator is an issue.  All of the operators in your example are infix; you&#8217;re not using anything unary or anything like that.  If your operators were all right-associative, the resulting AST would be the same as it is now with left-associative operators and parentheses.  (wouldn&#8217;t it?)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/applicative-functors-in-scala/#comment-2343</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Fri, 20 Jun 2008 02:46:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/applicative-functors-in-scala/#comment-2343</guid>
		<description>Hi Daniel,
I prefer the former definition for add. Actually, I prefer the less clumsy:

&lt;pre&gt;
val add = curried((_: Int) + (_: Int) + (_: Int))
&lt;/pre&gt;

However, I didn't want to take away from the example :)

Using a colon as a function name suffix only alters the associativity, not the fixity of the function &#38;mdash; parentheses would still be required (in fact, I have a function called &lt;code&gt;&#38;lt;*&#38;gt;:&lt;/code&gt; and I could show this if you like).

The type of &lt;code&gt;None&lt;/code&gt; is &lt;code&gt;Option[Nothing]&lt;/code&gt; and the type inferencer &lt;em&gt;requires&lt;/em&gt; a type &lt;code&gt;Option[Int]&lt;/code&gt; at that point because of the method used in inferencing (a forward inferencer). You're more than welcome to try it and see. The code at hand can be found at http://projects.workingmouse.com/public/scalaz/branches/3.0/

As a general rule, whenever you try to do anything powerful with Scala, you find the type inferencer starts to let you down quite quickly.</description>
		<content:encoded><![CDATA[<p>Hi Daniel,<br />
I prefer the former definition for add. Actually, I prefer the less clumsy:</p>
<pre>
val add = curried((_: Int) + (_: Int) + (_: Int))
</pre>
<p>However, I didn&#8217;t want to take away from the example <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Using a colon as a function name suffix only alters the associativity, not the fixity of the function &#38;mdash; parentheses would still be required (in fact, I have a function called <code>&#38;lt;*&#38;gt;:</code> and I could show this if you like).</p>
<p>The type of <code>None</code> is <code>Option[Nothing]</code> and the type inferencer <em>requires</em> a type <code>Option[Int]</code> at that point because of the method used in inferencing (a forward inferencer). You&#8217;re more than welcome to try it and see. The code at hand can be found at <a href="http://projects.workingmouse.com/public/scalaz/branches/3.0/" onclick="javascript:pageTracker._trackPageview('/outbound/comment/projects.workingmouse.com');" rel="nofollow">http://projects.workingmouse.com/public/scalaz/branches/3.0/</a></p>
<p>As a general rule, whenever you try to do anything powerful with Scala, you find the type inferencer starts to let you down quite quickly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://blog.tmorris.net/applicative-functors-in-scala/#comment-2342</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Fri, 20 Jun 2008 02:07:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/applicative-functors-in-scala/#comment-2342</guid>
		<description>Oh, if you use right-associative operators, I think you can get rid of your none: Option[Int] and just use None (since you no longer need to "dispatch" on its type).</description>
		<content:encoded><![CDATA[<p>Oh, if you use right-associative operators, I think you can get rid of your none: Option[Int] and just use None (since you no longer need to &#8220;dispatch&#8221; on its type).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://blog.tmorris.net/applicative-functors-in-scala/#comment-2341</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Fri, 20 Jun 2008 02:02:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/applicative-functors-in-scala/#comment-2341</guid>
		<description>BTW, you can make the definition of *add* a lot more concise with the semantically-equivalent:

def add(a: Int)(b: Int)(c: Int) = a + b + c

Fewer arrows, anyway.  Also, if you really need right-associativity, you can suffix your operators with a colon (:).  It's ugly, but it does the trick.</description>
		<content:encoded><![CDATA[<p>BTW, you can make the definition of *add* a lot more concise with the semantically-equivalent:</p>
<p>def add(a: Int)(b: Int)(c: Int) = a + b + c</p>
<p>Fewer arrows, anyway.  Also, if you really need right-associativity, you can suffix your operators with a colon (:).  It&#8217;s ugly, but it does the trick.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
