targen at gmail.com
Fri Apr 15 04:16:27 UTC 2016
On Thu, Apr 14, 2016 at 9:35 PM, Doug McIlroy <doug at cs.dartmouth.edu> wrote:
> The disdain for "pedagogical reasons" brushes aside an implicit wakeup
> call to the community.
I use GHC 7.10 to teach Haskell for pedagogical reasons. There is no
consensus on the pedagogical virtue of the most recent changes to the
compiler and base libraries, but a good portion of us happen to prefer
and achieve apparently good results teaching post-AMP, post-FTP
Haskell with various GHC extensions.
> Hugs is attractive because it is well described and bounded, whereas
> Haskell realized in GHC lacks a coherent description and presents
> a myriad of often inscrutable faces.
Haskell 98 has many qualities that can be understood as shortcomings
resulting from historical accidents, and the current realization of
Haskell in GHC fixes several of those. Yet more arguable infelicities
are solved by teaching to a certain set of language extensions, some
even quite recent. Avoiding these problems has pedagogical benefits.
Although precise, coherent descriptions are available for Haskell 98
and Haskell 2010 for reference in the Reports, the documentation
shipped by GHC for many language extensions is often reasonably close
in precision and coherence, as far as many students are concerned —
and, more importantly, the learning process for a student rarely
involves consuming a precise, coherent definition, and often involves
a greater degree of experimentation and consumption of explanations
aimed to teach, not to serve as reference for language implementors.
I do not aim to suggest that standards are not useful —they surely
are—, but standards are of limited use to many students.
> Learning how to wrangle a marvelous, but cantankerous, beast should not
> be confounded with initiation to the insights of functional programming.
In any case, an initiation to the insights of functional programming
surely must not begin with a general-purpose programming language
adequate for industrial application, but rather with a discussion of
the nature of functional programming supported by a review of the
theory upon which it is founded: at the very least, the lambda
calculus, preferably along with some basic ideas from type theory.
Programming in a number of concrete languages is helpful for this:
some modern descendent of LISP, perhaps some proof assistant over a
functional language, and indeed, some Haskell. If these students are
to become industrial practitioners, it serves them well to teach GHC
Haskell to illustrate one facet of the complex industrial side of
functional programming. This, indeed, is not quite adequate for the
most basic bits of an initiation — and that is fine.
More information about the Haskell-Cafe