<?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: Simplifying semantics with type class morphisms</title>
	<atom:link href="http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/feed" rel="self" type="application/rss+xml" />
	<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms</link>
	<description>Inspirations &#38; experiments, mainly about denotative/functional programming in Haskell</description>
	<lastBuildDate>Thu, 02 May 2013 14:19:32 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: James Deikun</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-54592</link>
		<dc:creator>James Deikun</dc:creator>
		<pubDate>Fri, 20 Aug 2010 00:09:15 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-54592</guid>
		<description>&lt;p&gt;No; I&#039;m not talking about regular lists that happen to be ordered, but about values belonging to a type of list that can only be ordered, not disordered.  You can express ADTs that act like this in Haskell, but the natural and beautiful expression of the type requires dependent types, probably to a greater degree than Haskell can fake.&lt;/p&gt;

&lt;p&gt;Pseudocode:&lt;/p&gt;

&lt;pre&gt;
data (Ord a) =&gt; BoundedOrderedList a b :: * -&gt; a -&gt; * where
  BOCons hd w tl :: a -&gt; (hd &gt;= b) -&gt; BoundedOrderedList a hd -&gt; BoundedOrderedList a b
  BONil :: BoundedOrderedList a b

type (Ord a) =&gt; OrderedList a = exists b :: a. BoundedOrderedList a b
&lt;/pre&gt;

&lt;p&gt;OrderedList is a monoid with merge as mappend.  And (at least in its proof-irrelevant refinement form) it&#039;s obviously the type you actually want to be using to define the denotation of events.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>No; I&#8217;m not talking about regular lists that happen to be ordered, but about values belonging to a type of list that can only be ordered, not disordered.  You can express ADTs that act like this in Haskell, but the natural and beautiful expression of the type requires dependent types, probably to a greater degree than Haskell can fake.</p>

<p>Pseudocode:</p>

<pre>
data (Ord a) =&gt; BoundedOrderedList a b :: * -&gt; a -&gt; * where
  BOCons hd w tl :: a -&gt; (hd &gt;= b) -&gt; BoundedOrderedList a hd -&gt; BoundedOrderedList a b
  BONil :: BoundedOrderedList a b

type (Ord a) =&gt; OrderedList a = exists b :: a. BoundedOrderedList a b
</pre>

<p>OrderedList is a monoid with merge as mappend.  And (at least in its proof-irrelevant refinement form) it&#8217;s obviously the type you actually want to be using to define the denotation of events.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-54392</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Wed, 18 Aug 2010 05:13:38 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-54392</guid>
		<description>&lt;p&gt;James: only if all the occurrences in the first event precede all the occurrences in the second, right?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>James: only if all the occurrences in the first event precede all the occurrences in the second, right?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: James Deikun</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-54230</link>
		<dc:creator>James Deikun</dc:creator>
		<pubDate>Tue, 17 Aug 2010 03:07:43 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-54230</guid>
		<description>&lt;p&gt;This works better than you thought:&lt;/p&gt;

&lt;p&gt;merge isn&#039;t mappend on lists ... but it &lt;em&gt;is&lt;/em&gt; mappend on &lt;em&gt;ordered lists&lt;/em&gt;!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>This works better than you thought:</p>

<p>merge isn&#8217;t mappend on lists &#8230; but it <em>is</em> mappend on <em>ordered lists</em>!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Simpler, more efficient, functional linear maps</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-14587</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; Simpler, more efficient, functional linear maps</dc:creator>
		<pubDate>Sat, 24 Jan 2009 06:11:01 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-14587</guid>
		<description>&lt;p&gt;[...] other words, the meaning of a liftA2 is the liftA2 of the meanings, as discussed in Simplifying semantics with type class morphisms.    Tags: linear map, math, memoization, trie, type family  &#160;&#124;&#160;&#160;Comment (RSS) [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] other words, the meaning of a liftA2 is the liftA2 of the meanings, as discussed in Simplifying semantics with type class morphisms.    Tags: linear map, math, memoization, trie, type family  &nbsp;|&nbsp;&nbsp;Comment (RSS) [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: sclv</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-13800</link>
		<dc:creator>sclv</dc:creator>
		<pubDate>Tue, 06 Jan 2009 04:57:16 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-13800</guid>
		<description>&lt;p&gt;OK this is probably blindingly obvious but it just hit me that there&#039;s obviously some sort of deep connection between type class morphisms and free theorems -- whether this can tell us more about free theorems, or whether this means that we can use free theorems to derive type class morphisms, or whether this is just a trivial statement that they both involve reasoning with types isn&#039;t quite clear to me yet.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>OK this is probably blindingly obvious but it just hit me that there&#8217;s obviously some sort of deep connection between type class morphisms and free theorems &#8212; whether this can tell us more about free theorems, or whether this means that we can use free theorems to derive type class morphisms, or whether this is just a trivial statement that they both involve reasoning with types isn&#8217;t quite clear to me yet.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Sequences, segments, and signals</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-12362</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; Sequences, segments, and signals</dc:creator>
		<pubDate>Sat, 06 Dec 2008 16:27:17 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-12362</guid>
		<description>&lt;p&gt;[...] have to agree with the model&#8217;s instances. I&#8217;ve described this latter principle in Simplifying semantics with type class morphisms and some other [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] have to agree with the model&#8217;s instances. I&#8217;ve described this latter principle in Simplifying semantics with type class morphisms and some other [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Composing memo tries</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-12217</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; Composing memo tries</dc:creator>
		<pubDate>Tue, 02 Dec 2008 18:26:24 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-12217</guid>
		<description>&lt;p&gt;[...] The post Elegant memoization with functional memo tries showed a simple type of search tries and their use for functional memoization of functions. This post provides some composition tools for memo tries, whose definitions are inevitable, in that they are determined by the principle presented in Simplifying semantics with type class morphisms. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] The post Elegant memoization with functional memo tries showed a simple type of search tries and their use for functional memoization of functions. This post provides some composition tools for memo tries, whose definitions are inevitable, in that they are determined by the principle presented in Simplifying semantics with type class morphisms. [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Enhancing a Zip</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-11473</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; Enhancing a Zip</dc:creator>
		<pubDate>Sun, 16 Nov 2008 01:11:02 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-11473</guid>
		<description>&lt;p&gt;[...] Simplifying semantics with type class morphisms  [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] Simplifying semantics with type class morphisms  [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Proofs for left fold zipping</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-11460</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; Proofs for left fold zipping</dc:creator>
		<pubDate>Sat, 15 Nov 2008 21:30:36 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-11460</guid>
		<description>&lt;p&gt;[...] morphism? (See More beautiful fold zipping for definitions of these functions and classes, and see Simplifying semantics with type class morphisms for the notion of type class [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] morphism? (See More beautiful fold zipping for definitions of these functions and classes, and see Simplifying semantics with type class morphisms for the notion of type class [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; More beautiful fold zipping</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-11429</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; More beautiful fold zipping</dc:creator>
		<pubDate>Sat, 15 Nov 2008 07:24:27 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-11429</guid>
		<description>&lt;p&gt;[...] class morphisms, placed some standard structure around Max Rabkin&#8217;s Beautiful folding, using type class morphisms to confirm that the Functor and Applicative instances agreed with their inevitable [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] class morphisms, placed some standard structure around Max Rabkin&#8217;s Beautiful folding, using type class morphisms to confirm that the Functor and Applicative instances agreed with their inevitable [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Another lovely example of type class morphisms</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-11369</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; Another lovely example of type class morphisms</dc:creator>
		<pubDate>Fri, 14 Nov 2008 06:20:11 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-11369</guid>
		<description>&lt;p&gt;[...] Peeking out from behind Max&#8217;s definitions is a lovely pattern I&#8217;ve been noticing more and more over the last couple of years, namely type class morphisms. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] Peeking out from behind Max&#8217;s definitions is a lovely pattern I&#8217;ve been noticing more and more over the last couple of years, namely type class morphisms. [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Conal Elliott &#187; Blog Archive &#187; Elegant memoization with functional memo tries</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-10147</link>
		<dc:creator>Conal Elliott &#187; Blog Archive &#187; Elegant memoization with functional memo tries</dc:creator>
		<pubDate>Thu, 16 Oct 2008 02:17:50 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-10147</guid>
		<description>&lt;p&gt;[...] algebraic construction of memo tries, using type class morphisms, [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] algebraic construction of memo tries, using type class morphisms, [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Kefer</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-2282</link>
		<dc:creator>Kefer</dc:creator>
		<pubDate>Fri, 11 Apr 2008 04:03:19 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-2282</guid>
		<description>&lt;p&gt;@ Paul, Raoul:&lt;/p&gt;

&lt;p&gt;&quot;Meaning&quot; is what you want in your mind when working with this stuff, &quot;representation&quot; is the irrelevant nuts-and-bolts that get in the way.&lt;/p&gt;

&lt;p&gt;Instead of the meaning of the number &quot;3&quot;, you could get sidetracked for e.g. with the fontography of the symbol, its various representational history and evolution, etc.&lt;/p&gt;

&lt;p&gt;Conal is building a new set of tools (i.e. a library). Every code library is essentially an abstraction layer. How to go about reasoning with the tools, using them effectively, is what he&#039;s trying to get at with &quot;meaning&quot;, as opposed to the innards of the abstraction layer, the &quot;representation.&quot;&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>@ Paul, Raoul:</p>

<p>&#8220;Meaning&#8221; is what you want in your mind when working with this stuff, &#8220;representation&#8221; is the irrelevant nuts-and-bolts that get in the way.</p>

<p>Instead of the meaning of the number &#8220;3&#8243;, you could get sidetracked for e.g. with the fontography of the symbol, its various representational history and evolution, etc.</p>

<p>Conal is building a new set of tools (i.e. a library). Every code library is essentially an abstraction layer. How to go about reasoning with the tools, using them effectively, is what he&#8217;s trying to get at with &#8220;meaning&#8221;, as opposed to the innards of the abstraction layer, the &#8220;representation.&#8221;</p>]]></content:encoded>
	</item>
	<item>
		<title>By: conal</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-2279</link>
		<dc:creator>conal</dc:creator>
		<pubDate>Fri, 11 Apr 2008 01:09:01 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-2279</guid>
		<description>&lt;p&gt;Raoul: yes, that&#039;s &lt;em&gt;exactly&lt;/em&gt; what I mean.  Thanks.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Raoul: yes, that&#8217;s <em>exactly</em> what I mean.  Thanks.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Raoul Duke</title>
		<link>http://conal.net/blog/posts/simplifying-semantics-with-type-class-morphisms/comment-page-1#comment-2277</link>
		<dc:creator>Raoul Duke</dc:creator>
		<pubDate>Fri, 11 Apr 2008 01:03:42 +0000</pubDate>
		<guid isPermaLink="false">http://conal.net/blog/?p=23#comment-2277</guid>
		<description>&lt;p&gt;Re: Paul&#039;s question.&lt;/p&gt;

&lt;p&gt;(I&#039;m a &lt;em&gt;complete&lt;/em&gt; hick when it comes to most mathematics, let alone this stuff, so apologies if I&#039;m being really painfully clueless.)&lt;/p&gt;

&lt;p&gt;Conal, I interpret what you say at the start of your post to mean that Behaviour is used in an actual program e.g. Haskell code that can be compiled and run, whereas B is not about Haskell but about meaning/semantics/&#039;purely&#039; math, but you happen to use Haskell notation to talk about it.&lt;/p&gt;

&lt;p&gt;??&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Re: Paul&#8217;s question.</p>

<p>(I&#8217;m a <em>complete</em> hick when it comes to most mathematics, let alone this stuff, so apologies if I&#8217;m being really painfully clueless.)</p>

<p>Conal, I interpret what you say at the start of your post to mean that Behaviour is used in an actual program e.g. Haskell code that can be compiled and run, whereas B is not about Haskell but about meaning/semantics/&#8217;purely&#8217; math, but you happen to use Haskell notation to talk about it.</p>

<p>??</p>]]></content:encoded>
	</item>
</channel>
</rss>
