<br><br><div class="gmail_quote">On Sat, Jan 17, 2009 at 7:33 AM, Lennart Augustsson <span dir="ltr">&lt;<a href="mailto:lennart@augustsson.net">lennart@augustsson.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Thinking that Functor allows you to apply a function to all elements<br>
in a collection is a good intuitive understanding. &nbsp;But fmap also<br>
allows applying a function on &quot;elements&quot; of things that can&#39;t really<br>
be called collections, e.g., the continuation monad.</blockquote><div><br></div><div>I hadn&#39;t even thought about fmap for continuations... interesting!&nbsp;</div><div><br></div><div>It falls out of the logic though doesn&#39;t it? &nbsp;</div>
<div><br></div><div>I&#39;m not one to throw all the cool mathematical and logical thinking out for &quot;simpler terms&quot; or not covering the full usefulness of certain abstractions.</div><div><br></div><div>I know Haskell allows for lazy evaluation (as an implementation of non-strictness) but Haskell programmers are NOT allowed to be lazy :-)</div>
<div><br></div><div>Try learning the terms that are there... and ask for help if you need help... most of us are pretty helpful! &nbsp;</div><div><br></div><div>Improving documentation can pretty much *always* be done on any project, and it looks like that&#39;s coming out of this long thread that won&#39;t die, so kudos to the ones being the gadflies in this instance. &nbsp;It really looked at first like a long troll, but I think something very useful is going to come out of this!</div>
<div><br></div><div>Dave</div><div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
<font color="#888888"><br>
 &nbsp;-- Lennart<br>
</font><div><div></div><div class="Wj3C7c"><br>
On Sat, Jan 17, 2009 at 11:17 AM, Andrew Coppin<br>
&lt;<a href="mailto:andrewcoppin@btinternet.com">andrewcoppin@btinternet.com</a>&gt; wrote:<br>
&gt; Cory Knapp wrote:<br>
&gt;&gt;<br>
&gt;&gt; Actually, that was part of my point: When I mention Haskell to people, and<br>
&gt;&gt; when I start describing it, they&#39;re generally frightened enough by the focus<br>
&gt;&gt; on pure code and lazy evaluation-- add to this the inherently abstract<br>
&gt;&gt; nature, and we can name typeclasses &quot;cuddlyKitten&quot;, and the language is<br>
&gt;&gt; still going to scare J. R. Programmer. By &quot;inherently mathematical nature&quot;,<br>
&gt;&gt; I didn&#39;t mean names like &quot;monoid&quot; and &quot;functor&quot;, I meant *concepts* like<br>
&gt;&gt; monoid and functor. Not that either of them are actually terribly difficult;<br>
&gt;&gt; the problem is that they are terribly abstract. That draws a lot of people<br>
&gt;&gt; (especially mathematicians), but most people who aren&#39; drawn by that are<br>
&gt;&gt; hugely put off-- whatever the name is. So, I guess my point is that the name<br>
&gt;&gt; is irrelevant: the language is going to intimidate a lot of people who are<br>
&gt;&gt; intimidated by the vocabulary.<br>
&gt;<br>
&gt; Oh, I don&#39;t know. I have no idea what the mathematical definition of<br>
&gt; &quot;functor&quot; is, but as far as I can tell, the Haskell typeclass merely allows<br>
&gt; you to apply a function simultaneously to all elements of a collection.<br>
&gt; That&#39;s pretty concrete - and trivial. If it weren&#39;t for the seemingly<br>
&gt; cryptic name, nobody would think twice about it. (Not sure exactly what<br>
&gt; you&#39;d call it though...)<br>
&gt;<br>
&gt; A monoid is a rather more vague concept. (And I&#39;m still not really sure why<br>
&gt; it&#39;s useful on its own. Maybe I just haven&#39;t had need of it yet?)<br>
&gt;<br>
&gt; I think, as somebody suggested about &quot;monad&quot;, the name does tend to inspire<br>
&gt; a feeling of &quot;hey, this must be really complicated&quot; so that even after<br>
&gt; you&#39;ve understood it, you end up wondering whether there&#39;s still something<br>
&gt; more to it than that.<br>
&gt;<br>
&gt; But yes, some people are definitely put off by the whole &quot;abstraction of<br>
&gt; abstractions of abstraction&quot; thing. I think we probably just need some more<br>
&gt; concrete examples to weight it down and make it seem like something<br>
&gt; applicable to the real world.<br>
&gt;<br>
&gt; (Thus far, I have convinced exactly *one* person to start learning Haskell.<br>
&gt; This person being something of a maths nerd, their main complaint was not<br>
&gt; about naming or abstraction, but about the &quot;implicitness&quot; of the language,<br>
&gt; and the extreme difficulty of visually parsing it. Perhaps not surprising<br>
&gt; comming from a professional C++ programmer...)<br>
&gt;<br>
&gt;&gt; At the same time, I think everyone is arguing *for* better documentation.<br>
&gt;&gt; And you&#39;re probably right: better documentation will bring the abstract<br>
&gt;&gt; nonsense down to earth somewhat.<br>
&gt;<br>
&gt; Amen!<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>