<?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: Algebraic + abstract = true! (at least in the key of F#)</title>
	<atom:link href="http://blog.davber.com/2007/12/10/algebraic-abstract-true-at-least-in-the-key-of-f/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.davber.com/2007/12/10/algebraic-abstract-true-at-least-in-the-key-of-f/</link>
	<description>Functional functional programming - Haskell, Ruby, Erlang, Scala...</description>
	<lastBuildDate>Mon, 04 Jan 2010 21:38:57 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: davber</title>
		<link>http://blog.davber.com/2007/12/10/algebraic-abstract-true-at-least-in-the-key-of-f/comment-page-1/#comment-287</link>
		<dc:creator>davber</dc:creator>
		<pubDate>Tue, 11 Dec 2007 01:14:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.davber.com/2007/12/10/algebraic-abstract-true-at-least-in-the-key-of-f/#comment-287</guid>
		<description>Inversion...

This is the key to have syntactically - via patterns - decomposable types: to have a homomorphism from the states to the pattern-matching categories, often represented by a (nested or not) structure of constructors. In the &quot;n+k&quot; case it is actually an isomorphism, so no special instructions as to how to get the state from the matching case is necessary. And, in the algebraic type case, the isomorphism even reduces to identity... In the GENERAL case, it is not that easy, and one needs both an inverse from syntactical pattern to a REPRESENTATIVE of states AND further logic, using a guard or similar, to get to the exact state. I.e., one defines an inverse that embeds the patterns into the set of possible states, which then gets to the proper case, after which one needs a &quot;pre-processing&quot; to get to the actual state. I should think about this some day :-)</description>
		<content:encoded><![CDATA[<p>Inversion&#8230;</p>
<p>This is the key to have syntactically &#8211; via patterns &#8211; decomposable types: to have a homomorphism from the states to the pattern-matching categories, often represented by a (nested or not) structure of constructors. In the &#8220;n+k&#8221; case it is actually an isomorphism, so no special instructions as to how to get the state from the matching case is necessary. And, in the algebraic type case, the isomorphism even reduces to identity&#8230; In the GENERAL case, it is not that easy, and one needs both an inverse from syntactical pattern to a REPRESENTATIVE of states AND further logic, using a guard or similar, to get to the exact state. I.e., one defines an inverse that embeds the patterns into the set of possible states, which then gets to the proper case, after which one needs a &#8220;pre-processing&#8221; to get to the actual state. I should think about this some day <img src='http://blog.davber.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: davber</title>
		<link>http://blog.davber.com/2007/12/10/algebraic-abstract-true-at-least-in-the-key-of-f/comment-page-1/#comment-276</link>
		<dc:creator>davber</dc:creator>
		<pubDate>Mon, 10 Dec 2007 20:24:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.davber.com/2007/12/10/algebraic-abstract-true-at-least-in-the-key-of-f/#comment-276</guid>
		<description>Well, for the alert reader, we have had a quite common &quot;active pattern&quot; before, in the form of the &quot;n+k&quot; pattern, where the inverse operation is performed on-demand - i.e., subtraction - to get the &quot;k&quot; part. One language that does implement that pattern is Haskell.</description>
		<content:encoded><![CDATA[<p>Well, for the alert reader, we have had a quite common &#8220;active pattern&#8221; before, in the form of the &#8220;n+k&#8221; pattern, where the inverse operation is performed on-demand &#8211; i.e., subtraction &#8211; to get the &#8220;k&#8221; part. One language that does implement that pattern is Haskell.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
