<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>Comments for page &quot;Intergalactic Telefunctors and Quantum Entanglement&quot;</title>
		<link>http://syntax.wikidot.com/blog:9/comments/show</link>
		<description></description>
				<copyright></copyright>
		<lastBuildDate>Wed, 19 Jun 2013 09:30:49 +0000</lastBuildDate>
		
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-401215</guid>
				<title>Re:</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-401215</link>
				<description></description>
				<pubDate>Mon, 02 Mar 2009 06:18:59 +0000</pubDate>
				<wikidot:authorName>Fritz</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Well, I wouldn't want to try to speak for augustss, but I don't see anything specifically imperative about his put/get example: I, at least, interpreted him to mean something that could be axiomatized algebraically, including including something along the lines of "a = get(put(a))" Well, writing it down I see that perhaps what you're getting at has to do with the lack of a key, although you didn't use quite the same type of operations he (augustss) indicated.</p> <p>Regarding selecting things from a set, I understand what you're getting at … but if I know something in advance I suspect might be in a set, I can certainly see if it's in there, and if it is, I can then form the new set, as a predicate, which returns false for the thing in question and defers to the original predicate on everything else. This is only possible if I know what to look for in advance, but in a typed context it might be possible in principle (if not efficient) to enumerate the possibilities.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-387066</guid>
				<title>and again</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-387066</link>
				<description></description>
				<pubDate>Tue, 17 Feb 2009 00:46:57 +0000</pubDate>
				<wikidot:authorName>sclv</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I posted this in reply to the other post, but again, here is one formalization of the notion of a container, and if you don't like it, you need to confront it rather than dismiss it.<br /> <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.285">http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.285</a></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-387006</guid>
				<title>Re:</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-387006</link>
				<description></description>
				<pubDate>Mon, 16 Feb 2009 23:36:41 +0000</pubDate>
				<wikidot:authorName>gar</wikidot:authorName>				<wikidot:authorUserId>21583</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>If that works for you, I would not argue against it. But I would object if you were to instruct newcomers by saying "this is what it really is". What you've described are not set operations, they're more like imperative operations on a set-like data structure. There's really only one operation involved in "containers", and that is membership. It's not even an operation, it's a predicate. You cannot "add" or "stick" a new element into a set; you can only form the union of two sets. Nor can you remove an element of a set; you can only ask if the element is a member of the set. "put C A" really means: form the set {C} and then take the union of {C} and A; "get c A" doesn't really mean much of anything; I suspect you mean something more like "member? c A". Sets are unordered; there is absolutely no way to <em>select</em> a specific element of a set; the best you can do is ask of that element is in the set or not.</p> <p>Whether or not Maybe is a usefully thought of as a container really depends on who is doing the thinking. For many people that's fine and dandy, no problem. For others, not. Either way, technically, it is not a container. The predication "a isMemberOf (Maybe a)" is false, period.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-386705</guid>
				<title>Re: Mind the types</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-386705</link>
				<description></description>
				<pubDate>Mon, 16 Feb 2009 18:45:49 +0000</pubDate>
				<wikidot:authorName>Derek Elkins</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Thanks, but I was not asking for you to define it. My request still stands for Gregg.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-386447</guid>
				<title>Re: Mind the types</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-386447</link>
				<description></description>
				<pubDate>Mon, 16 Feb 2009 13:43:13 +0000</pubDate>
				<wikidot:authorName>Damien Guichard</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>A (covariant) functor is some morphism <em>map</em> with type (α→β) → (ϕ(α)→ϕ(β)) that obeys these two laws:</p> <ol> <li>map idα = idϕ</li> <li>map g ◦ map f = map (g ◦ f)</li> </ol> <p>(initially, it really helps if you think that a functor lifts an item function to the container level)</p> <p>For example the (,) bifunctor takes two identity morphisms idα and idβ and it gives you (fst,snd) as the identity for pairs.</p> <p>The classical way would be to say (a,b) is some constructor invocation that returns a new object that accepts two destructors fst and snd.</p> <p>The difference is the former ressembles a specification while the latter ressembles an implementation.<br /> If you are a functional programmer chasing abstraction, then you are encouraged to go the categorical way. Also, lazyness implies that potentially any data is actually a function, that greatly favors the categorical point of view.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-386046</guid>
				<title>Re: Mind the types</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-386046</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 23:00:03 +0000</pubDate>
				<wikidot:authorName>Derek Elkins</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Define functor (as in the categorical concept) formally.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-386023</guid>
				<title>Re:</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-386023</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 22:34:16 +0000</pubDate>
				<wikidot:authorName>augustss</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>So to me a container, C, is something that (very informally) has these operations</p> <div class="code"> <pre> <code>put :: A -&gt; C get :: C -&gt; A</code> </pre></div> <br /> You can stick something into the container, and then you can get it out. Depending on the container it might be able to hold more than one item, etc.<br /> So that means that 'Maybe Int' is a container for Int. The Maybe type constructor is strictly speaking not a container, since it's not even kind correct to say so. But it's convenient to talk about Maybe as a container anyway, since there's no real risk of confusion.
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-385862</guid>
				<title>Re: Mind the types</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-385862</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 18:48:30 +0000</pubDate>
				<wikidot:authorName>gar</wikidot:authorName>				<wikidot:authorUserId>21583</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I agree about alien scary words. I'm not sure I would use the intergalactic telefunctor as an explanatory device, although once you grok functors it's kind of amusing.</p> <p>I'm also realizing, the more I get into it, just how conditioned my thinking was by set theory. I had learned Z pretty well, so I was thinking about everything in terms of straightforward ZF denotations. I'm beginning to think the learner should be warned at the beginning that notions of set theory will have to be not so much unlearned as relearned from a CT perspective.</p> <p>Thanks,</p> <p>gregg</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-385848</guid>
				<title>Re:</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-385848</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 18:34:31 +0000</pubDate>
				<wikidot:authorName>gar</wikidot:authorName>				<wikidot:authorUserId>21583</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I'm not sure what you're looking for; at any rate I don't have anything fancy in mind, just anything that contains. A set being the canonical example. Does that answer your question?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-385825</guid>
				<title>Mind the types</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-385825</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 17:51:54 +0000</pubDate>
				<wikidot:authorName>Damien Guichard</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>What i tell to beginners is "observe the types", "mind the types", "type is behavior", "the arrow is right associative", "the application is left-associative".</p> <p>The more they are confortable with types, functionnal types, product types &amp; sum types, the less the urge to perpetuate the object intuition.</p> <p>We want them to abandon the objet-oriented thinking, but in my opinion it's not so much desirable to resort to alien scary words to exorcize the object conditioning.<br /> Typically <em>arrow</em> and <em>application</em> should be powerful enough to instil the mind change.</p> <p>Then let it mature long enough and some will eventually demand more.</p> <p>- damien</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-385824</guid>
				<title>(no title)</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-385824</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 17:51:48 +0000</pubDate>
				<wikidot:authorName>augustss</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>And, btw, this gave me no insight to what you think a container is.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-385822</guid>
				<title>(no title)</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-385822</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 17:49:55 +0000</pubDate>
				<wikidot:authorName>augustss</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I don't think category theory is the key to understanding Haskell. A little bit of domain theory helps though.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://syntax.wikidot.com/blog:9/comments/show#post-385783</guid>
				<title>Postscript</title>
				<link>http://syntax.wikidot.com/blog:9/comments/show#post-385783</link>
				<description></description>
				<pubDate>Sun, 15 Feb 2009 16:37:33 +0000</pubDate>
				<wikidot:authorName>gar</wikidot:authorName>				<wikidot:authorUserId>21583</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Just realized that "quantum" is an excellent replacement for "value". So e.g. '3' denotes not a number but a quantum that we happen to name '3', or, the value of '3' is that quantum.</p> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>