<?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: Go Interfaces</title>
	<atom:link href="http://www.airs.com/blog/archives/277/feed" rel="self" type="application/rss+xml" />
	<link>http://www.airs.com/blog/archives/277</link>
	<description>Ian Lance Taylor</description>
	<lastBuildDate>Sun, 07 Mar 2010 17:12:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: matches</title>
		<link>http://www.airs.com/blog/archives/277/comment-page-1#comment-18192</link>
		<dc:creator>matches</dc:creator>
		<pubDate>Tue, 08 Dec 2009 19:49:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.airs.com/blog/?p=277#comment-18192</guid>
		<description>Reading about Go reminded me of an effort led by Michael Franz to develop a programming language called Lagoona with &#039;message set types&#039;. I&#039;m not sure anyone actually delivered a working implementation.

http://www.ics.uci.edu/~franz/Site/pubs-pdf/C12.pdf</description>
		<content:encoded><![CDATA[<p>Reading about Go reminded me of an effort led by Michael Franz to develop a programming language called Lagoona with &#8216;message set types&#8217;. I&#8217;m not sure anyone actually delivered a working implementation.</p>
<p><a href="http://www.ics.uci.edu/~franz/Site/pubs-pdf/C12.pdf" rel="nofollow">http://www.ics.uci.edu/~franz/Site/pubs-pdf/C12.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Lance Taylor</title>
		<link>http://www.airs.com/blog/archives/277/comment-page-1#comment-18188</link>
		<dc:creator>Ian Lance Taylor</dc:creator>
		<pubDate>Sat, 28 Nov 2009 12:33:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.airs.com/blog/?p=277#comment-18188</guid>
		<description>Thanks for the comment.

I tend to think that Go is as similar to Haskell type classes as it is to C++ pure abstract virtual base classes, but you didn&#039;t take me to task for the latter.

Go doesn&#039;t use structural typing as I understand it.  Methods are associated with types by name, and structurally similar types do not have the same set of methods.

Yes, OCaml is another thing which Go is similar to but different from.</description>
		<content:encoded><![CDATA[<p>Thanks for the comment.</p>
<p>I tend to think that Go is as similar to Haskell type classes as it is to C++ pure abstract virtual base classes, but you didn&#8217;t take me to task for the latter.</p>
<p>Go doesn&#8217;t use structural typing as I understand it.  Methods are associated with types by name, and structurally similar types do not have the same set of methods.</p>
<p>Yes, OCaml is another thing which Go is similar to but different from.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: snkkid</title>
		<link>http://www.airs.com/blog/archives/277/comment-page-1#comment-18186</link>
		<dc:creator>snkkid</dc:creator>
		<pubDate>Sat, 28 Nov 2009 09:14:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.airs.com/blog/?p=277#comment-18186</guid>
		<description>&quot;pure abstract virtual base classes in C++; typeclasses in Haskell; duck typing in Python; etc.&quot;

I wish people would stop saying that are like type-classes, they have a vague superficial resemblance and you have to distort your view to see it. 

&quot;That said, I’m not aware of any other language which combines interface values, static type checking, dynamic runtime conversion, and no requirement for explicitly declaring that a type satisfies an interface.&quot;

You do realize OCaml has this in it&#039;s OO system and it has a name in type theory, Structural Typing (vs Nominal typing for interfaces like in C#/Java). The difference with Go interfaces and OCaml is OCaml&#039;s &quot;duck typing&quot; is all compile-time. Late binding/dynamic dispatch is available for methods marked as virtual but I digress.

Go&#039;s interface system is a lot more like OCaml&#039;s structural sub-typing than anything else and OCaml has had it for a long time furthermore they don&#039;t really have anything in common with type-classes, very superficial resemblance.</description>
		<content:encoded><![CDATA[<p>&#8220;pure abstract virtual base classes in C++; typeclasses in Haskell; duck typing in Python; etc.&#8221;</p>
<p>I wish people would stop saying that are like type-classes, they have a vague superficial resemblance and you have to distort your view to see it. </p>
<p>&#8220;That said, I’m not aware of any other language which combines interface values, static type checking, dynamic runtime conversion, and no requirement for explicitly declaring that a type satisfies an interface.&#8221;</p>
<p>You do realize OCaml has this in it&#8217;s OO system and it has a name in type theory, Structural Typing (vs Nominal typing for interfaces like in C#/Java). The difference with Go interfaces and OCaml is OCaml&#8217;s &#8220;duck typing&#8221; is all compile-time. Late binding/dynamic dispatch is available for methods marked as virtual but I digress.</p>
<p>Go&#8217;s interface system is a lot more like OCaml&#8217;s structural sub-typing than anything else and OCaml has had it for a long time furthermore they don&#8217;t really have anything in common with type-classes, very superficial resemblance.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
