Ugh not this again. We are so serious about documentation that we
write it in such a way as to be machine-checked. This is how serious
we are -- we will even dismiss demands to degenerate our documentation.
Here is a perfect example of someone using this documentation to
provide an answer to a question:
http://groups.google.com/group/scalaz/msg/7f9e98a6dff3a4cf
There are plenty of usage examples:
https://github.com/scalaz/scalaz/tree/master/example/src/main/scala/scalaz/example
There are blog posts, videos, slides and papers. Shall I list them?
I'd just be preaching to the choir.
There are people offering to help you when you have queries and we
will use the documentation to *answer them in a robust way*. We want
the documentation to exist in such a way that you do not have to rely
on any individual or group of individuals -- we don't keep all the
side-effects in our head, which you would have to manually query, like
you might find on other projects -- this is directly against the goal.
Documentation needs to be independent of brains, it needs to be
trustworthy (*machine-checked*) and it needs to be very comprehensive
(see aforementioned link to thread for a great example of this).
Honestly, if this is not enough documentation for you, then the
problem may not be the "documentation" part in "documentation for you."
Yes, contributing examples would be great. I believe github has a
facility for submitting requests for inclusion.
- --
Tony Morris
http://tmorris.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk4U11IACgkQmnpgrYe6r627twCgggDnjm4JA18ZRDFa3Y7ONrTf
HT4An1Dj2JhkksSJx2p/Ug8EcCVk/piq
=lXXa
-----END PGP SIGNATURE-----
On Wed, Jul 6, 2011 at 11:44 PM, Tony Morris <tonym...@gmail.com> wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Ugh not this again. We are so serious about documentation that we
> write it in such a way as to be machine-checked. This is how serious
> we are -- we will even dismiss demands to degenerate our documentation.
>
> Here is a perfect example of someone using this documentation to
> provide an answer to a question:
> http://groups.google.com/group/scalaz/msg/7f9e98a6dff3a4cf
This example is funny :-)
From documentation I expect something that will bring additional
information to the main subject (the code in this case).
I'd not expect one of the Scalaz committers to show me that he knows
what that code does.
>
> There are plenty of usage examples:
> https://github.com/scalaz/scalaz/tree/master/example/src/main/scala/scalaz/example
>
> There are blog posts, videos, slides and papers. Shall I list them?
> I'd just be preaching to the choir.
>
> There are people offering to help you when you have queries and we
> will use the documentation to *answer them in a robust way*. We want
> the documentation to exist in such a way that you do not have to rely
> on any individual or group of individuals -- we don't keep all the
> side-effects in our head, which you would have to manually query, like
> you might find on other projects -- this is directly against the goal.
> Documentation needs to be independent of brains, it needs to be
> trustworthy (*machine-checked*) and it needs to be very comprehensive
> (see aforementioned link to thread for a great example of this).
>
> Honestly, if this is not enough documentation for you, then the
> problem may not be the "documentation" part in "documentation for you."
>
> Yes, contributing examples would be great. I believe github has a
> facility for submitting requests for inclusion.
>
>
Actually Scalaz is cool!
Recently I watched Jason Zaugg's video from last month and read Heiko's blog.
Now I think I understand some of the functionality. For the rest I'll
need to read some more theory.
As it happens, Runar probably did already know what that expression
does, but he didn't draw on any of that knowledge to convey the point.
Instead, he coached Chris on how to *prove* himself wrong about his own
assumptions *using the documentation*. When I use the word *prove* here,
I really mean proof, not *feel it in my bones* or *because one of the
project owners said so*. This is called documentation *of a robust kind*.
Chris wondered why:
val x = none[Int] traverse ((i: Int) => List(i + "F" + "G"))
x == List(None) // Chris expects Nil
Runar coached Chris by showing him that it is *not possible* for this to
occur by definition of Applicative and the traverse function. Chris then
agreed and said thanks. Chris can now be confident of this conclusion
independently of Runar.
I really don't understand why this is not obvious or at least a really
big hint. Is it marriage to side-effects and thus, expectation that
types do not convey as much meaning as they actually do otherwise? I
strongly suspect so, but I'm not sure.
> wrote:
>> I'd be a lot more interested in scalaz if they were serious
>> about documentation. I've looked at scalaz several times, and
>> each time came to the conclusion that if the implementors weren't
>> willing to document their APIs (which arguably need more
>> documentation than a standard API because they are so far from
>> what the average programmer has experienced) then I wasn't
>> willing to spend the time chasing down all the various
>> references, articles, etc. that might or might not explain one
>> element of scalaz.
>>
>> It's too bad, I suspect there's stuff in scalaz that could be
>> really useful. Perhaps at some time the authors will have the
>> core functionality complete, and be able to concentrate on
>> documentation.
>>
>> Ken
>>
Tony, I think you are missing the point on what people want when asking for "documentation".
I do understand what you are saying regarding the documentation around the code, that is why I preemptively assumed you didn't "want" people helping with documentation (because there is no need to).
What most people want, including me, is a Tutorial. We would really appreciate real life, contextualized examples of how to use Scalaz as a whole, not a summary of how atomic features work. That way we can develop an intuition of how and when to pull out some Scalaz's feature to solve a problem.
I'd prefer if they were linked to from the API docs. The link from the
main Scalaz are nice, particularly since it hyperlinks all the
operators, but it's just too much navigation, without even the
guarantee that there _will_ be an example.
--
Daniel C. Sobral
I travel to the future all the time.
Tony, I think you are missing the point on what people want when asking for "documentation".
I do understand what you are saying regarding the documentation around the code, that is why I preemptively assumed you didn't "want" people helping with documentation (because there is no need to).
What most people want, including me, is a Tutorial. We would really appreciate real life, contextualized examples of how to use Scalaz as a whole, not a summary of how atomic features work. That way we can develop an intuition of how and when to pull out some Scalaz's feature to solve a problem.
Oh good point. I forgot that I was born with that knowledge.
On 07/07/11 14:26, Naftoli Gugenheim wrote:
> Most of the document assumes knowledge of Haskell syntax.
>
>
> On Wed, Jul 6, 2011 at 11:58 PM, Tony Morris <tonym...@gmail.com>
> wrote:
>
>> ** I agree -- it's the concepts that require comprehension.
>> 2011/7/6 Tom�s L�zaro <tlaz...@gmail.com>
- --
Tony Morris
http://tmorris.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk4VPgAACgkQmnpgrYe6r61+mgCgrwJoJjPLyDICh6XKXF5mgmVc
EowAn3Zmd4qrh0vYubwZOl6uTqW4OItP
=Q0xo
-----END PGP SIGNATURE-----
>> 2011/7/6 Tomás Lázaro <tlaz...@gmail.com>
Nail on head.
On 07/07/11 17:45, Andreas Scheinert wrote:
> Maybe we should learn then how to learn concepts language
> agnostic.
- --
Tony Morris
http://tmorris.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk4VarYACgkQmnpgrYe6r63ZYgCguJuoruG6GGWBkGbOpCtokfDC
/nEAoLMECXpzN541iiAdGj5B1jGGwOPZ
=tRIG
-----END PGP SIGNATURE-----
Not everybody had the same "CS education". I had, among other things, three years of CS
education at a French university, back in the 80's. They never told anything about
functional programing, not even OOP! We were taught imperative programming, using
languages like assembly, Pascal, Fortran, Cobol (sic), perhaps a bit of C, some Prolog. No
Lisp or similar.
I did lot of imperative programming in my career, lot in the real-time realm, in assembly
language and C. I self-learned OOP with C++, with difficulty... I now code Java for a
living...
I believe I am a decent programmer but I fear I am not brilliant, and not really at ease
with abstractions, in the mathematical or the programming realms (although I love maths, I
am just not good at high level maths).
I have a decent understanding of classical data structures, like linked lists, hash maps
or similar, and use them daily, of course; but functors, monads, iteratees, catamorphism
or the like remain alien so far.
I have interest in FP, seeing it as a new tool in the box, and I am seduced by the
capability to process collections without explicit looping, so I am not adverse to
learning the concepts, but I am not interested in learning another language (Haskell for
example) to assimilate these concepts. Life is short, even more with a work and a family...
I just explained all this because I believe my case isn't special at all. Lot of people
come from good old OOP world, and find the FP world alien and a bit elitist, with its own
jargon (unavoidable, of course) and people willing to help but overestimating the brain
power of their audience... :-)
We can't reproach them not to spend their free time on teaching for free these concepts
adapted to our puny brains, of course, I just try to explain why the two worlds have
difficulties to communicate. ^_^'
--
Philippe Lhoste
-- (near) Paris -- France
-- http://Phi.Lho.free.fr
-- -- -- -- -- -- -- -- -- -- -- -- -- --
Learning computer science by the method of "tertiary institution" is
extremely inefficient and with poor outcome. I highly recommend the
"proactive" method. It works a treat!
- --
Tony Morris
http://tmorris.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk4Vc/QACgkQmnpgrYe6r636jACdEaRMNNxva/7FRl9Eit/tLuHM
mW8AmwVG0+y1zZV6JZ31FcPLHAVQFt11
=FJcO
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Chill dude, there was no unfriendliness! I'm constantly provoked about
how to learn this stuff. Simple really, harden up, sit down and learn
it. That's all I meant.
-- Francois ARMAND http://fanf42.blogspot.com http://www.normation.com

Otherwise 3 months later someone else will complain again about Scalaz
documentation (yes, this is not the first time) and Tony will waste
his time again explaining his point of view.
I don't mind even seeing something like "We don't like scaladoc/wiki
and we don't use them. Please refer to books, blogs, ..." in Scalaz
home page.
Let's move this discussion to scalaz maling list.
Just my 0.02 c
--
Gabriel Claramunt
Twitter: @gclaramunt
Blog: http://gabrielsw.blogspot.com
:)
I have to agree with almost everybody here. Scalaz authors shouldn't have to
spend time to write an introduction to OO or FP or endofunctors to have all
understand OO and FP and endofunctors and scalaz.
... while most would like something like that, a sort of a z version of
"Programming in scala" (which does talk a bit about OO and types) and would
hold one's hand while crossing the "->" .
Josh is right - opportunity knocks?
-----Original Message-----
From: scala...@googlegroups.com [mailto:scala...@googlegroups.com] On
Behalf Of Gabriel Claramunt
Sent: July-07-11 10:23 AM
To: scala...@googlegroups.com
Subject: Re: [scala-user] Re: tips about scalaz
This has been my conclusion about scalaz as well. At one point I decided that I should take a look at the library to see if it could be useful to me in my daily programming. I’m not against working a bit to understand new concepts, but it would be nice if the scalaz documentation met me half way. If I knew for sure that I wanted to use the library I’d work harder at learning it, but when I’m just trying to evaluate the library for potential use I find it hard to justify spending my limited time filling in all the gaps in the documentation.
This discussion sounds remarkably similar to comments I’ve read recently about the Scala library documentation. I wonder if that means anything.
Peter
A book on higher order programming using scalaz (or a single, coherent tutorial about that), is exactly what I’d enjoy as well.
Yes, I can read the blogs, etc. Yes I can read the scaladoc and try out small examples. With sufficient effort I could even integrate that knowledge into a useful whole. The problem is that I don’t have time to do that… at least not for purposes of just conducting an evaluation of the scalaz library. On the other hand a tutorial on higher order programming using scalaz, however, would be an interesting read for its own sake. Learning about the principles of such programming in a Scala context would be enjoyable bedtime reading. I realize resources are limited for everyone, but such a document, if it existed would no doubt greatly increase the number of scalaz users.
Peter
From: scala...@googlegroups.com [mailto:scala...@googlegroups.com] On Behalf Of Bryan
Sent: Wednesday, July 06, 2011 23:29
To: Brian Maso
Cc: Tomás Lázaro; tmo...@tmorris.net; scala...@googlegroups.com
Subject: Re: [scala-user] tips about scalaz
I think Brian hit the nail on the head. It's the concepts that make scalaz difficult for newcomers. Many want to learn about these FP concepts, but in a language they are most comfortable with (or excited about). And so they turn to scalaz. But scalaz is a library. What they (and perhaps I) want is a "book" on higher-order programming using scalaz as a way to introduce these concepts.
I fear I have to agree with you there... :-)
I forgot most of what I have learned at Uni (never coded in Fortran nor Cobol, except
perhaps at exams...), but I remember I corrected the teacher supposed to teach us Pascal
(was fresh knowledge for me at the time...). Obviously, he was a researcher with little
knowledge of the language he was supposed to teach us...
Today, Internet is a great tool to learn new things. And well, dead tree sources are
useful too... (but more expensive!)
Overall, it more a discussion on learning FP in general... Although at some point it
should have been forked to scala.debate...
A book on higher order programming using scalaz (or a single, coherent tutorial about that), is exactly what I’d enjoy as well.