Talk:Haskell/Archive 2

From Wikibooks, the open-content textbooks collection

Jump to: navigation, search

Contents

[edit] Technical organization

[edit] Move to Haskell wiki?

I'd like to start discussion as to whether we should move to the Haskell wiki.

Pros:

  • Haskell syntax highlighting!
  • Closer to the hub of the Haskell community. Corollaries:
    • Easier for newbies to find us.
    • Easier for potential contributors to find us.
    • Easier to import content already on the Haskell wiki.
  • We could potentially change the code to the wiki or install new plugins etc if we wanted to. (Automate the 'next page', 'prev page' links? Etc.)

Cons:

  • The bother of letting everyone know we're moving
  • The bother of moving itself
    • I'm sure there's going to be some MediaWiki export/import tool somewhere, though.

DavidHouse 15:33, 6 January 2007 (UTC)

It would be tricky for sheer reason of licensing issues. For example, after bugging Hal all this time, I'm not sure I really want to bother him again to ask about the simple permissive license. We've received a lot of contributions from a lot of users and would have to get everyone aboard. For what it's worth, I personally agree to dual license my stuff under the simple permissive license. I do agree that the Haskell syntax highlighting would be nice to have, though, as would having this be a Haskell.org product. Then again, Wikibooks has a specific focus on creating textbooks, one single cohesive narrative. The Haskell wiki is perhaps not the most appropriate venue for that, culturally. Well... I guess that's a pretty weak argument on my part :-) -- Kowey 17:36, 6 January 2007 (UTC)
Could we have some arrangement whereby we have a subwiki of the Haskell wiki which is seperately licensed? Or maybe even a seperate wiki? I think the benefits of moving to haskell.org are worth it. DavidHouse 13:41, 8 January 2007 (UTC)
Hmm... I'm still quite hesitant about this. As an alternative, would it be possible to have a haskell.org address that automatically pops up here? The user types in http://haskell.org/wikibook and winds up getting served by wikibooks? What if we had Haskell markup? (Edit 18:13 - I meant what if we also had Haskell syntax highlighting on wikibooks?) I get the feeling that moving would entail a certain amount of pain and confusion (for example, what will happen if we delete our content here and post a 'so long, folks!' It seems the wikibooks people would just restore the content and we'd have two "competing" wikibooks, a bit like Spanish wikipedia and the other unofficial site from the early days. (That being said, if we did move, sooner would be better than later, and I personally would migrate to the haskell.org version). -- Kowey 15:05, 8 January 2007 (UTC)
Note, I've posted a message on the Wikibooks:Staff lounge asking for input from the wikibooks community at large. This might enrich the deliberations a bit, maybe get some useful insight into making these kinds of decisions. -- Kowey 18:12, 8 January 2007 (UTC)


[edit] Chapter organization & content

[edit] Title of this book

Aww, what's wrong with Functional Programming with Sexy Types? If it is inaccurate (for example, the sexy features are not really used in day-to-day Haskell), I would understand. But are there any other objections to the use of "Sexy"? -- Kowey 06:12, 23 October 2006 (UTC)

[edit] Wikibook intro

Hmm... i dunno, I'm not sure I like what I wrote... how could we improve this? For starters, can we get rid of my enjoy-the-ride cliché and find a nicer way to end this intro? -- Kowey 07:38, 31 August 2006 (UTC)

[edit] Table of Contents: the 3 tracks

The relative amounts of content between the two tracks is becoming ridiculous. I prepared a new contents page, thoughts? DavidHouse 15:33, 6 January 2007 (UTC)

I went ahead and changed this. Complain if you don't like it. DavidHouse 13:59, 8 January 2007 (UTC)
I think it's an improvement. It looks kinda clunky though (not to say the old one was any better). We could think about simplifying it a bit more, finding ways to make it sleeker, easier to navigate -- Kowey 15:00, 8 January 2007 (UTC)
It's fine. I think the "clunky" comes from the fact that some names span multiple lines. While this cannot be avoided, you can indent them or use * as separators. I changed things to use *, yell if that's no good.

[edit] "Beginner's track"

The ordering of lessons matters!

[edit] Pedagogical: Risks and Benefits

This paper, The Risks and Benefits of Teaching Purely Functional Programming in First Year might be especially interesting to us, of course, depending on what our goals are.

One of the things that this paper suggests, which I think we agree with, is that IO should be introduced earlier rather than later, though the monadic stuff should be avoided (at least in the beginning). We certainly don't want the reader to treat IO as magical, we just need to explain it differently. Another thing which resonated is that we need to be careful about higher order functions. That kind of stuff is hard to wrap your head around if you're a newbie. The paper says that students get map and filter rather easily, but fold is a whole other story. I can certainly relate to that. While higher order functions have always made "sense" to me, I recall that fold was very difficult for me to understand until I actually tried to build large programs. -- Kowey 12:58, 10 September 2006 (UTC)

[edit] Problems in the ordering of the lessons

If you go to "Elementary Haskell :: More on Functions" and click on "Next Page" at the bottom, you're taken to "Elementary Haskell :: Pattern Matching", but in the Table of Contents, the lesson "Elementary Haskell :: Higher-order functions and Currying" lies between these two. Also, the "Elementary Haskell :: Pattern Matching" lessons instructs you to "recall" the lesson on type declaration, but this lesson only appears much later on in "Intermediate Haskell :: Type Declarations". - Nebu Pookins 10:49, 6 October 2006 (GMT-5)

Thanks for your comments. I have attempted to fix things by reordering some stuff, namely:
  • Noted stuff above
  • Removed Haskell/A Miscellany of Types - I think this stuff is now better covered by Haskell/Type basics and maybe the standard library
  • Move control structures and pattern matching so that it is earlier - This stuff seems way easier than higher order functions and currying, and it's useful immediately, whereas the function stuff will need to sink in for a while before the reader really knows what to do with it -- Kowey 23:55, 6 October 2006 (UTC)

[edit] Proposal: Split the chapter "Variables and functions"

Hi,

I'm new here and I really like what you people are doing. I have a suggestion and I'm interested in knowing what people here think of it. My proposal is that the chapter called "Variables and functions" be split into two separate chapters.

The first of the chapters would be called something like "evaluating expressions" (which would work for those already programmers) or "using haskell as a calculator" (which would be more suited to those who aren't programmers already). In here readers would be guided through the process of using ghci to do simple arithmetic, string manipulations, boolean algebra and calling simple built-in functions. For some people who only want to use Haskell as a beefed-up calculator such a chapter would be ideal. At the end of the chapter we could deal with more complicated expressions - thereby laying down the motivation for the next chapter.

The next chapter "writing functions". I purposely omitted the word 'variable' because the word carries a lot of intellectual baggage from other programming languages that don't apply to Haskell which might set readers to the wrong track.

-- Newhoggy 12:50, 5 November 2006 (UTC)

It might be worth trying. I just recently noticed Haskell/Beginning which seems somewhat similar to the approach that you propose. It would also be worth seeing how Hal does it in Haskell/YAHT and figuring out if it does what we're looking for. Perhaps you should try and see. The worst that can happen is that we discuss and renegociate. If you're not willing to commit to an entire chapter overhaul, you could experiment by making subpages on your own user page... -- Kowey 08:14, 6 November 2006 (UTC)
Thanks Kowey. I've decide to work on another article instead User:Newhoggy/UTF8_for_Haskell -- Newhoggy 11:56, 7 November 2006 (UTC)

[edit] More rearranging

I've made the following three changes. I think it's worth discussing because this is the basic stuff, so it's important to get the pedagogical bits right:

  • Moved recursion and more about lists from Haskell Basics down to Elementary Haskell - recursion's a pretty deep concept, and the student can get away with not knowing about it for a while yet
  • Moved Haskell/Type declarations up to the end of Haskell Basics - if we're going to talk about types, we might as well give the student a way to work with them. Also, it makes it a bit easier to talk about IO below
  • Moved Haskell/Simple input and output out from Intermediate Haskell to Haskell Basics - IO should really come early on so that people who have programmed before don't think that doing a simple Hello World is hard stuff or that you need crazy monadic stuff. Moving it up early also means we can offer more hands off stuff, writing complete programs from the get-go. -- Kowey 02:04, 28 November 2006 (UTC)

[edit] "Advanced track"

[edit] Chapter organization

While names like "Wider Theory" or "Haskell Performance" do what they should, I think they're a bit dull. I'd really like to have shiny names, like "Fun with Types". Here are some proposals. The intended contents is also noted. Besides, every chapter could get an introductory section accessible via the TOC. The names of these subchapters can be picked to match the chapters intensions to allow for funnier chapter names. Apfelmus 12:39, 21 January 2007 (UTC)

"Advanced Haskell"
Currently a refuge for stuff that doesn't fit anywhere else. Possible independence movements:
* "The Awkward Squad" (Concurrency, IO, Exceptions, operational semantics)
"Wider theory"
= "Program correctness", "Formal program manipulation", "To denote or not to denote", "Meaning, the Meany", "Devoting to Denotation"
intro = "Why does my program work?", "What does my program do?", "Help, my program doesn't work!" (sneaky, because the chapter should not cover debugging)
Intended to contain methods to reason about program semantics/correctnes and their adherence to a specification. Also includes the systematic derivation of programs from their specification. In a wider sense, relations to logic and dependent types might go here, too. I'm not sure what to do with category theory, but it certainly is a framework for denotational semantics.
"Fun With Types"
= "Types: reloaded", "Types: extended"
intro =
Currently describes the manifold extensions to Haskell's type system. I'm not sure, but I think that in the long term, they need a (separate?) chapter showing how to put them to good use, i.e. "Program/Library design".
"Haskell Performance"
= "Haskell in Space and Time", "Space and Time", "Running Haskell", "Haskell on the Machine"
intro = "Help, my program is slow!"
Contains everything related to the actual execution of Haskell programs (execution times, how to decrease them, memory, evaluation order, ...)

[edit] "Haskell in Practice"

[edit] Aquiring new content

[edit] Practical Haskell

Hi.. I've been invited to integrate my work into this project and I am interested. I have to warn you all that I am new to wikibooks however...

Anyway, the way my thinking has been going is toward building a standard repertoire of programs which are used over and over again but shown with different user-interfaces for example or modified in different ways using library bindings (or perhaps adding hs-plugins or making interfacing to databases even)... In theory, I think such an approach will make it very easy for people to pick up a new binding if they've already been thru the tutorial for another one. Also it should allow for an easy separation of general haskell parts of the examples from those which are specific to the binding in question.

I already have a start of the tutorial along with a rough draft of the overall format here (Please scroll down until you reach the first link on the page)

Also, i have a version of bouncing ball implemented using openGL bindings that kpreid from #haskell on freenode casually offered.

Anyway, I think integrating that format into this wikibook could be a serious modification... so i want to reach out to see how others feel about that approach..

What i'm thinking is everything under "Tutorials" might get sort of swallowed and integrated into this over-arching format.

I made this a sub-section to try to keep it organized... Once integration of my project into this wikibook is well underway (if ever), I'll just delete this section and everything underneath it as I suspect it will become osbolete and I imagine its preferable to keep the talk page relevant.. Instead maybe We'll just have a sort of suggested policy posted about this part of the wikibook. If you want to title your reply to this section, please use 4 = signs on either side of the title..

--LordBrain 02:43, 5 August 2006 (UTC)

Ah, I take it this means you saw my note on HaWiki? Glad you're with us in any case. We've known for some time now that we needed a Practical Haskell section, but have been concentrating more on the basics and the advanced stuff. So having somebody really care about the Practical Haskell session makes me happy.
Note that wikibooks and wikipedia in general have a culture of boldness, that is, if you think something is the right thing to do, or even worth trying, go ahead and do it! Maybe put something on the discussion page to let people know why, but overall, just doing it makes things go very fast. The worst that can happen is that somebody would object on the discussion page, and we would have to discuss a bit to reach consensus. I don't think Haskell wikibookians are revert-war inclined, but who knows?
That being said, we sometimes hang out on #haskell, me as kowey, and DavidHouse as dmhouse, and if you feel like bouncing off a couple of ideas or for stra-te-gerising (you know, big picture, what are we really trying to do stuff), that's a good place to find us.
Welcome! -- Kowey 06:43, 6 August 2006 (UTC)
P.S. Another note. Interestingly, Haskell/Write Yourself a Scheme in 48 Hours also has a hands-on task oriented approach. Don't know how that fits in, but potential food for thought. -- Kowey 06:45, 6 August 2006 (UTC)

[edit] Yet Another Haskell Tutorial

I did a horrible job importing the LaTeX, but here it is: Haskell/YAHT (note: solutions are HTML commented. I would like to add a switch to my script so that I can output the solutions into a separate file, but that's for another day) -- Kowey 21:32, 21 October 2006 (UTC)

Ok, have cleaned up the import somewhat. Now it even has solutions and working internal links. One of admins is somewhat concerned about copyright issues though, and has advised me not to do anything until I can get Hal to do something about the license. Perhaps if I got him to put the text of the Haskell.org simple permissive license (or the GFDL), that should satisfy them.
Yay! Copyright issues resolved! -- Kowey 21:45, 3 November 2006 (UTC)


[edit] Marketing and merchandise

[edit] Announcement to the Haskell mailing lists

Hi all. I think at some point we should send a message to the Haskell mailing list: haskell@haskell.org, that outlines:

  • What the Wikibook is
  • Some brief history
  • Our current project status
  • Our goals
  • A request for more contributors

I'd like to drum up some ideas about this. What do people think to the above outline? Did I miss anything? Also, what is the history of the Haskell wikibook? Who started it?

Finally, I think we should hold off sending an email until we reach some kind of acceptable 'beta' version of the Wikibook. This should include:

  • Most of the introductory chapters complete or at least nearing completion; all done to a high standard and not 'hacked together'.
  • Some flesh in the intermediate chapters
  • Ideas for extensions, should suitably qualified contributors happen upon the wikibook.
  • A professional look, including consistent typographical conventions and use of templates. Perhaps it's also worth starting to think about a logo or opening graphic.

Thoughts? 86.143.51.96 16:37, 6 September 2006 (UTC). Sorry, that was me, forgot to log in. DavidHouse 19:28, 9 September 2006 (UTC)

Not a bad idea, but I'm not sure it'll do much good; most of those interested seem to be working on stuff on the Haskell wiki and other textbooks on Haskell. --maru (talk) contribs 02:40, 7 September 2006 (UTC)
At the very least, I would like to wait until the YAHT import is complete. Still waiting for Hal to send me the sources -- Kowey 04:33, 7 September 2006 (UTC)
If you think that's necessary, sure. Let us know when it's in. DavidHouse 19:41, 10 September 2006 (UTC)
And re: History, I started the wikibook in 2004, just a stubful of wikipedia content, back when I had no idea what I was talking about. Paul Johnson added the first real content, and then I added my monadic stuff, DavidHouse came on board and from that point, we started getting substantial "outside" contributions like Haskell/GUI. At least, that's how I remember it. We can always look in the histor(ies) to get a clearer idea. -- Kowey 04:41, 7 September 2006 (UTC)

[edit] Computer_programming#Common_concepts table

If some one has the time please think about populating the Computer_programming#Common_concepts table with the missing Haskell information.--Panic 16:43, 7 November 2006 (UTC)