<?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: Elegant memoization with functional memo tries</title>
	<atom:link href="http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries/feed" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries</link>
	<description>Inspirations &#38; experiments, mainly about denotative/functional programming in Haskell</description>
	<lastBuildDate>Sat, 26 Sep 2020 21:06:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.17</generator>
	<item>
		<title>By: Audun</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-181</link>
		<dc:creator><![CDATA[Audun]]></dc:creator>
		<pubDate>Tue, 29 May 2012 11:12:47 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-181</guid>
		<description><![CDATA[&lt;p&gt;Thank you for adding the instance, and for the attribution :)&lt;/p&gt;

&lt;p&gt;If you make another release, you can add my full name: Audun Skaugen (no hurry, though).&lt;/p&gt;

&lt;p&gt;Oh, and sorry for the code formatting in the previous comment; that&#039;s what you get for not previewing.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Thank you for adding the instance, and for the attribution <img src="http://conal.net/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>

<p>If you make another release, you can add my full name: Audun Skaugen (no hurry, though).</p>

<p>Oh, and sorry for the code formatting in the previous comment; that&#8217;s what you get for not previewing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-180</link>
		<dc:creator><![CDATA[conal]]></dc:creator>
		<pubDate>Sun, 06 May 2012 23:12:04 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-180</guid>
		<description><![CDATA[&lt;p&gt;Hi Audun. I like your idea of a &lt;code&gt;HasTrie Void&lt;/code&gt; instance. Omitting it was an oversight. I just added your instance and released &lt;a href=&quot;http://hackage.haskell.org/package/MemoTrie-0.4.12&quot; rel=&quot;nofollow&quot;&gt;version 0.4.12&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I think you meant &quot;there is one function &lt;code&gt;Void -&gt; a&lt;/code&gt;&quot; (rather than none), ignoring bottoms, namely the empty function.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Hi Audun. I like your idea of a <code>HasTrie Void</code> instance. Omitting it was an oversight. I just added your instance and released <a href="http://hackage.haskell.org/package/MemoTrie-0.4.12" rel="nofollow">version 0.4.12</a>.</p>

<p>I think you meant &#8220;there is one function <code>Void -&gt; a</code>&#8221; (rather than none), ignoring bottoms, namely the empty function.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Audun</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-179</link>
		<dc:creator><![CDATA[Audun]]></dc:creator>
		<pubDate>Sat, 21 Apr 2012 19:26:45 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-179</guid>
		<description><![CDATA[&lt;p&gt;Hi,
I had use for a HasTrie instance for the Void type. I could think of two instances. The instance that would seem to follow from the isomorphisms is:&lt;/p&gt;

&lt;p&gt;instance HasTrie Void where
  data Void :-&gt;: a = VoidTrie
  trie _ = VoidTrie
  untrie VoidTrie = absurd
  enumerate VoidTrie = []&lt;/p&gt;

&lt;p&gt;That is, there are no functions Void -&gt; a, and a^Void is isomorphic to Unit. However, this instance makes constant functions strict, so that
memo (const a) undefined == undefined.
This can be alleviated with an instance closer to the Unit instance.&lt;/p&gt;

&lt;p&gt;Any thoughts? Would you be willing to add a Void instance to MemoTrie?&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Hi,
I had use for a HasTrie instance for the Void type. I could think of two instances. The instance that would seem to follow from the isomorphisms is:</p>

<p>instance HasTrie Void where
  data Void :-&gt;: a = VoidTrie
  trie _ = VoidTrie
  untrie VoidTrie = absurd
  enumerate VoidTrie = []</p>

<p>That is, there are no functions Void -&gt; a, and a^Void is isomorphic to Unit. However, this instance makes constant functions strict, so that
memo (const a) undefined == undefined.
This can be alleviated with an instance closer to the Unit instance.</p>

<p>Any thoughts? Would you be willing to add a Void instance to MemoTrie?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Memoizing polymorphic functions via unmemoization</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-178</link>
		<dc:creator><![CDATA[Conal Elliott &#187; Blog Archive &#187; Memoizing polymorphic functions via unmemoization]]></dc:creator>
		<pubDate>Sat, 02 Oct 2010 15:40:49 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-178</guid>
		<description><![CDATA[&lt;p&gt;[...] can work out an answer by appealing to the same laws of exponents used in memoization, but now applied in reverse (to create function types instead of eliminate [...]&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] can work out an answer by appealing to the same laws of exponents used in memoization, but now applied in reverse (to create function types instead of eliminate [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Memoizing higher-order functions</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-177</link>
		<dc:creator><![CDATA[Conal Elliott &#187; Blog Archive &#187; Memoizing higher-order functions]]></dc:creator>
		<pubDate>Wed, 21 Jul 2010 15:41:24 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-177</guid>
		<description><![CDATA[&lt;p&gt;[...] all at once from a denotational perspective, and incrementally from an operational perspective. See Elegant memoization with functional memo tries and Elegant memoization with higher-order [...]&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] all at once from a denotational perspective, and incrementally from an operational perspective. See Elegant memoization with functional memo tries and Elegant memoization with higher-order [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Elegant memoization with higher-order types</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-176</link>
		<dc:creator><![CDATA[Conal Elliott &#187; Blog Archive &#187; Elegant memoization with higher-order types]]></dc:creator>
		<pubDate>Wed, 21 Jul 2010 04:48:29 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-176</guid>
		<description><![CDATA[&lt;p&gt;[...] using the essential idea of Ralf Hinze&#8217;s paper Generalizing Generalized Tries. The blog post Elegant memoization with functional memo tries describes a library, MemoTrie, based on both of these sources, and using associated data types. I [...]&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] using the essential idea of Ralf Hinze&#8217;s paper Generalizing Generalized Tries. The blog post Elegant memoization with functional memo tries describes a library, MemoTrie, based on both of these sources, and using associated data types. I [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Nonstrict memoization</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-175</link>
		<dc:creator><![CDATA[Conal Elliott &#187; Blog Archive &#187; Nonstrict memoization]]></dc:creator>
		<pubDate>Wed, 14 Jul 2010 02:46:28 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-175</guid>
		<description><![CDATA[&lt;p&gt;[...] written a few posts about functional memoization. In one of them, Luke Palmer commented that the memoization methods are correct only for strict functions, which I [...]&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] written a few posts about functional memoization. In one of them, Luke Palmer commented that the memoization methods are correct only for strict functions, which I [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Memoizing polymorphic functions - part two</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-174</link>
		<dc:creator><![CDATA[Conal Elliott &#187; Blog Archive &#187; Memoizing polymorphic functions - part two]]></dc:creator>
		<pubDate>Fri, 20 Nov 2009 19:33:26 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-174</guid>
		<description><![CDATA[&lt;p&gt;[...] Comments conal on Elegant memoization with functional memo triesShawn Willden on Elegant memoization with functional memo triesDave Crossland on Seeking advice on [...]&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>[&#8230;] Comments conal on Elegant memoization with functional memo triesShawn Willden on Elegant memoization with functional memo triesDave Crossland on Seeking advice on [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-173</link>
		<dc:creator><![CDATA[conal]]></dc:creator>
		<pubDate>Sat, 14 Nov 2009 19:22:02 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-173</guid>
		<description><![CDATA[&lt;p&gt;@Shawn -- Fixed now.  Thanks for the note.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>@Shawn &#8212; Fixed now.  Thanks for the note.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shawn Willden</title>
		<link>http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries#comment-172</link>
		<dc:creator><![CDATA[Shawn Willden]]></dc:creator>
		<pubDate>Sat, 14 Nov 2009 07:13:13 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=54#comment-172</guid>
		<description><![CDATA[&lt;p&gt;Your source code links are broken.  Could you please fix them so I can understand what it is you&#039;re talking about?  Thanks.&lt;/p&gt;
]]></description>
		<content:encoded><![CDATA[<p>Your source code links are broken.  Could you please fix them so I can understand what it is you&#8217;re talking about?  Thanks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
