Re: [OT] Teaching Haskell in High School

2003-02-08 Thread Michael Sperber [Mr. Preprocessor]
 Arjan == Arjan van IJzendoorn [EMAIL PROTECTED] writes:

Arjan Good point, but there are fundamental differences between
Arjan Scheme and Haskell and our whole teaching here in Utrecht is
Arjan heavily geared towards Haskell: we really need laziness to
Arjan write our parsers and our attribute grammars,

This seems like a backwards way of approaching teaching the intro
course. (Besides, is this really suitable material for beginners, let
alone high school students?)  It's the common method to specify We
must do this, that, and this in the intro course and work backwards
towards the didactics.  I once was a strong proponent of the same
method, but I came to realize that it's necessary to abandon stuff
that I don't know how to teach well to beginners.  I now have a poster
in my apartment saying Kill your darlings.  (A Faulkner quote, for
those who must know.)

This is what differentiates HtDP from all other intro curriculi I've
seen: it *really* isn't about Scheme, and *nothing* is heavily
geared towards Scheme.  It's about programming and problem solving,
and it prepares you for learning the language you need to know to
produce software.  (In fact, even if you want to produce actual
software in Scheme, you'd be expected to take another course after
HtDP.)

Arjan we believe that static typing is the way to go for more robust
Arjan software, we think that algebraic data types are a great way to
Arjan model data and so on.

Sure.  But you'll notice that HtDP *does* use a completely
type-centric approach to teaching, along with algebraic data types.
And the fact that you would like to apply Haskell to professional
software engineering and believe static types are the way to go
there says nothing about the suitability of Haskell for intro
teaching.

Teach them Haskell, by all means.  Helium seems to be a great effort
directed at that, and I'm glad *someone* in the community finally
caught on to the problems you're solving.  But if you want Haskell to
be as broadly applicable to intro teaching for non-CS majors as
HtDP/TeachScheme!, you have a long way to go.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



Re: [OT] Teaching Haskell in High School

2003-02-07 Thread Michael Sperber [Mr. Preprocessor]
 Paul == Paul Hudak [EMAIL PROTECTED] writes:

Paul I can't resist jumping in on this one:

Sure :-)

 Haskell just has some terrible properties when it comes to teaching
 beginners.  Among them are the complex and easy-to-get-wrong syntax,
 the available programming environments which are OK for developers but
 awful for beginners.  There's also a dearth of good textbooks at the
 level you need.  Haskell is very easy to learn (and an excellent
 choice for a 2nd or 3rd language) when you know Scheme.

Paul I have spent many years teaching both Scheme and Haskell to beginners,
Paul and I would have to say that Haskell syntax has never been a serious
Paul problem, certainly no more than Scheme's parentheses.  It is true that
Paul there is a lack of good programming environments, although Hugs is
Paul pretty easy to use, and things like Helium should be even better.  (I
Paul won't say much about textbooks since I wrote one that I think is pretty
Paul good for beginners :-)  Finally, aside from extraneous type error
Paul messages (which Helium should do much better at), I claim that Haskell's
Paul type system is BETTER for beginners compared to having no type system at
Paul all.  As for the last point above, I could just as easily say that
Paul Scheme is very easy to learn (and an excellent choice for a 2nd or 3rd
Paul language) when you know Haskell.

Here are some observations I've made when teaching Haskell for the
first time which are relevant when you're trying them out on
beginners:

- With the programming environment, it isn't just a question of being
  easier to use: in my experience, environments like Hugs (or any
  Scheme environment other than DrScheme) work for some, but frustrate
  many beginners because they don't enable them to fix trivial
  mistakes which they're bound to make in the first couple of weeks.
  These are *crucial* to the overall success of an intro course.

  The TeachScheme! folks had to work a long time on getting DrScheme
  to provide the feedback needed to alleviate this problem.  Haskell
  systems just don't have this kind of investment.  (I'm glad Helium
  showed up, and I'm sure to try it out soon.)

- In theory, static typing is good because it helps spot bugs in your
  program early.  However, the current state of the art is such that
  the type error messages in Haskell systems are not sufficiently
  helpful (in fact, often misleading) when it comes to finding the
  actual source of the problem.  You're saying aside from extraneous
  type error messages---but these are *exactly* the problem.

  Certainly, the messages from Hugs and GHC often frustrate beginners
  (and not just beginners in programming---I've seen quite a few
  students who were learning Haskell as a 3rd or 4th language give up
  because of this).

  Again, Helium may be an improvement, but I suspect that the
  underlying problem is deeply rooted.  

- I've written between 1 and 10 lines of code in Haskell, and
  I still do things like:

  - look up syntax in a book
  - getting the alignment wrong
  - using a name twice in a recursive let, leading to infinite
recursion

  Scheme syntax is just *way* smaller than Haskell syntax, and, while
  it may not constitute a serious problem in any given course, it
  certainly eats up less space when you explain it.  Here are some
  other aspects of Haskell syntax which---in my experience---are
  confusing for beginners:

  - The syntax for ordinary variables and type variables are the same.
In fact, many examples by Great Haskell Programmers use a variable
s (for instance) to denote a value of type s.  Beginners often
have trouble understanding and distinguishing the concepts of
variables and type variables, and this makes it worse.

  - The same holds generally for the type syntax which is analogous to
the value syntax.

- I don't know what kind of beginners you're talking about exactly.
  The original poster was asking about high school.  With *CS*
  beginners (or beginners in some related field) different rules apply
  than for the average population.  If these kids have problems early
  on, they're just bound to leave programming and never come back (or
  much later).

I'm sure some of you have didactic concepts to get around these
problems---but, as you mention, they sure aren't published anywhere,
much less in a comprehensive form as HtDP, and the tools don't exist
with the same quality as DrScheme.

There's much more to say---about things like motivating examples with
GUIs and web servers---which DrScheme has in a form accessible to
beginners, but you can all read up on that in the TeachScheme!
material.

Haskell has great potential to be a wonderful and useful language for
software development and research.

It often pains me to see the efforts of the functional programming
community (which is small enough as it is) fragmented by the My
language is the best for *everything* attitude.  For intro teaching,
the TeachScheme! have 

Re: [OT] Teaching Haskell in High School

2003-02-06 Thread Michael Sperber [Mr.\ Preprocessor]
 Hal == Hal Daume, Hal writes:

Hal Hi all,

Hal Before getting in to this, let me preface my question(s) with a note that
Hal I have checked through the Haskell in Education web page and have found
Hal various links off there of interest (and I've googled, etc.  In
Hal short: I've done my homework).

Hal That said, I've been in rather close correspondence with my math/computer
Hal science teacher from high school.  When I first took CS there, they taught
Hal Pascal (a year early they had been teaching Scheme).  They switched over
Hal to VB (alas) recently and have been teaching that for a few years now.

Hal The teacher really wants to get away from VB, but is having a somewhat
Hal difficult time deciding what to go to.  The two most promising options are
Hal Haskell and Java.

I really recommend looking at the TeachScheme! curriculum and the How
to Design Programs curriculum.  Here are two URLs:

http://www.teach-scheme.org/
http://www.htdp.org/

This works exceptionally well at the High School level (I know that
earlier attempts to do this with Scheme failed---this one is very
different), and has been extensively applied with great success---also
and especially in conjunction with the AP curriculum and/or a course
on Java based on the same methodology.  There's a wealth of software
and material, and the TeachScheme! program offers (mostly free)
workshops on this.

Haskell just has some terrible properties when it comes to teaching
beginners.  Among them are the complex and easy-to-get-wrong syntax,
the available programming environments which are OK for developers but
awful for beginners.  There's also a dearth of good textbooks at the
level you need.  Haskell is very easy to learn (and an excellent
choice for a 2nd or 3rd language) when you know Scheme.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



Re: partial application

2002-03-19 Thread Michael Sperber [Mr. Preprocessor]

 Cagdas == Cagdas Ozgenc [EMAIL PROTECTED] writes:

Cagdas  Koen Claessen contributed:

 Somehow I do not think that Cagdas was talking about
 evaluation order at all. I think he referred to the
 following: Suppose I have a function f which is defined to
 have 3 arguments:


Cagdas That's right. I was thinking of the following syntax. I orginally had the
Cagdas idea for C++, where you can't do partial application at all.

Cagdas f x y z=...

Cagdas f # 3 4

As another note on the subject, this is similar to SRFI 26 for Scheme
which can be found at:

http://srfi.schemers.org/srfi-26/

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
___
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe



Re: Haskell Communities Survey - Second Call for Contributions

2001-10-26 Thread Michael Sperber [Mr. Preprocessor]

 Bernard == Bernard James POPE [EMAIL PROTECTED] writes:

Bernard Hi all,

Bernard I'm sending this to the whole list because maybe there are others who are
Bernard doing the same thing as me, and so it would be useful to share some
Bernard effort.

 What about a standard AST format?  What about static analysis and
 type checking/inference? 

Bernard A few of us at Melbourne have been slowly creating a front
Bernard end to Mark Jones' Typing Haskell in Haskell. It is getting
Bernard close to being useable.  It is intended as a stand-alone type
Bernard inference/checking tool that can give detailed information
Bernard about static aspects of the program. It will understand
Bernard modules.

Note that we also have most of a frontend based on thih.  It's
actually a translator between hsparser's output and thih's input.
It's not very well debugged or tested, but mostly complete, albeit
sans the modules stuff.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

___
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell



ghc via ftp

2001-06-26 Thread Michael Sperber [Mr. Preprocessor]


Salve glorious Glasgow Haskell teamsters!

The ghc release notes keep announcing that the ghc distro is available
via anonymous ftp, referring to details below.  However, there never
seem to be any details, and ftp.haskell.org sadly doesn't answer my
prayers on the ftp command line.  Any chance of making anonymous ftp
available so I could mirror ghc?

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

___
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs



Re: ghc via ftp

2001-06-26 Thread Michael Sperber [Mr. Preprocessor]

 J == Intl Vendor Julian writes:

J | The ghc release notes keep announcing that the ghc distro is 
J | available via anonymous ftp, referring to details below.  

J I guess that's now a bogus thing to say -- I'm inclined to fix
J the ANNOUNCE file.  Do you particularly need ftp rather than http
J access to these files?

For mirroring, yes.  This doesn't work particularly well over http.
Can't you just update the old ftp location at src.doc.ic.ac.uk or
something?  The old stuff up to version 4.04 is still there.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

___
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs



Re: ghc via ftp

2001-06-26 Thread Michael Sperber [Mr. Preprocessor]

 Keith == Keith Wansbrough [EMAIL PROTECTED] writes:

Keith [EMAIL PROTECTED] (Michael Sperber [Mr. 
Keith Preprocessor]) writes:

 For mirroring, yes.  This doesn't work particularly well over http.

Keith What about wget?  wget --mirror seems to work for me...

Sure, but the overhead is pretty stupendous, as you need to request
headers for each single file to get at the metadata.  It's also not
immediately clear what to specify as the mirroring source, even though
it's probably possible to find out.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

___
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs



GHC releases and Haggis

1997-05-12 Thread Michael Sperber [Mr. Preprocessor]


It seems there is currently no distribution of a GHC version which
will run the Haggis code from the tutorial:

0.29 doesn't understand "do".
2.02 doesn't support Haggi.

Could the 2.01 binaries be re-instated, maybe?

-- 
Cheers =8-} Mike
Friede, Volkerverstandigung und uberhaupt blabla