https://wiki.haskell.org/api.php?action=feedcontributions&user=Fanael&feedformat=atomHaskellWiki - User contributions [en]2024-03-29T01:04:56ZUser contributionsMediaWiki 1.35.5https://wiki.haskell.org/index.php?title=Future_of_Haskell&diff=34743Future of Haskell2010-05-16T12:24:25Z<p>Fanael: dead link removal</p>
<hr />
<div>==Haskell' is the next official version==<br />
<br />
Haskell 98 is complete. It is<br />
the current official definition of Haskell (modulo some minor fixes,<br />
as detailed on the Haskell 98 bug page). We expect that this<br />
language will be supported in the long term even as new extensions are<br />
added to Haskell; compilers will continue to support Haskell 98 (via a<br />
special flag).<br />
<br />
The process of defining a successor to Haskell 98 has started. All <br />
information about this is on<br />
<blockquote><br />
<b>[http://hackage.haskell.org/trac/haskell-prime The Haskell' Wiki]</b><br />
</blockquote><br />
<br />
----<br />
<br />
The language evolves and numerous extensions have been proposed and many of them have been implemented in some Haskell systems; for example<br />
pattern guards, scoped type variables, multi-parameter type classes, local universal and existential quantification. <br />
The Haskell [[mailing lists]] <br />
are a forum for discussing new language features.<br />
People proposing an additional language feature should implement the new feature or convince the developers of one of the Haskell systems to do so.<br />
Then many people can test the practical usefulness of the extension.<br />
Finally, the people seriously interested in the new feature should define the new feature with respect to Haskell 98 in a document (a new mailing list can be set up for this purpose). This kind of addendum to the Haskell 98 report clarifies the details and can be used for adding the feature to other Haskell systems. The definition of the foreign function interface (FFI) for Haskell is a good example for this process.<br />
<br />
On a rather longer time schedule a committee led by John Launchbury<br />
may develop Haskell II. Obviously well-tested and well-described extension<br />
proposals will have a higher chance of being adopted.<br />
<br />
<br />
== Extensions of Haskell == <br />
<br />
<DL><br />
<DT><B>[[:Category:Proposals|Proposals]]</B><br />
<DD> Collects all kinds of extensions proposed for the language, libraries and specific implementations. Note that the above page is automatically generated, so to add a new proposal you can instead type the title for your page into the address bar of your browser using underscores instead of spaces, then the wiki generates a new page (assuming there is not already a page with the same title) that you can edit. If you put <pre>[[Category:Proposals]]</pre> at the top of your page, it will be automatically linked to by the [http://www.haskell.org/haskellwiki/Category:Proposals Proposals page above]. (Sometimes the convention of ending the title of a proposal with the word <tt>proposal</tt> is followed, so that people browsing the wiki can clearly see that the page describes something different that is not yet part of the current Haskell language.)<br />
</DD><br />
<br />
<DT><B>[http://web.archive.org/web/20061011095312/http://haskell.org/hawiki/HaskellTwo HaskellTwo on the old wiki]</B> (in the web archive)<br />
<DD> This old hawiki page contains all kinds of extensions proposed for the language, libraries and specific implementations, before the new wiki came online.</DD><br />
<br />
</DL><br />
<br />
<P><br />
Below we present some of the various extensions that have<br />
been implemented or proposed.<br />
See also the Haskell [[mailing lists]].<br />
<br />
<UL><br />
<li id="views"><b>Views</b> allow multiple `logical' constructors to match<br />
against real constructors in patterns.<br />
<ul><br />
<li>A [http://www.haskell.org/development/views.html views proposal] has been submitted for consideration in<br />
future Haskell reports. Implemented in hbc (?)</li><br />
<li>[[Dependent type]]s provide a way for not-forgetful views: views who cannot lie.<br />
</ul><br />
<li><b>Pattern Guards</b> by Simon Peyton-Jones is a proposal<br />
to generalize guards used in function definitions. See the<br />
[http://research.microsoft.com/Users/simonpj/Haskell/guards.html proposal] for<br />
further details. Implemented in GHC, proposed for Haskell 2. <br />
<li> [[Mathematical prelude discussion#Basic Algebra Library (BAL)|Basic algebra proposal.]] In particular: Reformulating numeric classes,<br />
instance ruled type and domain conversion.<br />
<LI> [http://www.soi.city.ac.uk/~ross/notes/ArrowsInHaskell.html Haskell Proposal: Syntactic Sugar for Arrows]<br />
<li>Mark Shields and Simon Peyton Jones: [http://research.microsoft.com/Users/simonpj/Papers/first-class-modules/ First-class Modules for Haskell] discusses a lot of extension proposals integrated in a coherent design. See also [[First-class module]] page.<br />
<li>[[Extensible record]] page: problems where extensible records are useful, proposals, implementations etc.<br />
<li>An [[Accessible layout proposal]] which would allow you to make more use of the layout rule to eliminate many commas and parentheses (particularly interesting if you don't like manually deleting then re-inserting that comma that always ends up in the wrong place when you are re-ordering a list of things by cut and paste).<br />
<li> A [[Class system extension proposal]] page, to collect ideas for making the class system more powerful, some of which have been implemented in other languages similar to Haskell.<br />
</UL><br />
<br />
== Variations of Haskell ==<br />
<br />
<br />
<DL><br />
<dt>[http://www.cs.mu.oz.au/~sulzmann/chameleon/ Chameleon]<br />
<dd>Chameleon is a Haskell-style language which provides a flexible<br />
overloading mechanism based on Constraint Handling Rules (CHRs).<br />
The user can impose conditions on overloaded identifiers via CHRs.<br />
<br />
<DT>[http://web.cecs.pdx.edu/~mpj/goferarc/index.html Gofer]<br />
<DD><br />
Gofer is a small interpreter by Mark Jones supporting a language based on the Haskell report version 1.2.<br />
Gofer is intended as an experimental language, particularly where type classes<br />
are involved. Although Haskell has adopted a number of ideas from Gofer, the Gofer type class system is still more flexible than the Haskell one.<br />
Available for all Unix platforms including Linux, DOS, and Macs.<br />
Hugs is the successor to Gofer and Gofer is no longer supported.<BR><br />
[http://www.google.com/search?q=goferdoc Html-version of the Gofer manual]<br />
<br />
<DT>[http://www.cee.hw.ac.uk/~dsg/gph/ GPH, Glasgow Parallel Haskell]<DD><br />
is an extension of Haskell for parallel programming. It<br />
adds just two new primitives to the language, namely, a form of<br />
parallel composition <b>par</b>, and sequential composition <b>seq</b>. With<br />
judicious use of <b>par</b> and <b>seq</b> it is possible to express how a program<br />
should be evaluated in parallel. <br />
<br />
<DT>[http://abp.lcs.mit.edu/projects/ph/ pH - a parallel Haskell]<br />
<DD><br />
The pH language is is a parallel, eagerly-evaluated variant of Haskell with syntactic provisions for<br />
loops, barriers, and I- and M- structure storage. The eager evaluation model of pH is similar to<br />
that of Id; the current version of the pH compiler shares a back end with the Id compiler, producing<br />
code for the Monsoon dataflow machine. The front end of the pH compiler is a modification of<br />
hbc.<br />
<br />
<DT>[http://www.score.is.tsukuba.ac.jp/~chak/goffin/ Goffin]<DD><br />
A Haskell extension for parallel and distributed<br />
programming.<br />
<br />
<DT>[http://www.cs.chalmers.se/~patrikj/poly/polyp/ PolyP - a polytypic programming language]<DD><br />
PolyP extends a functional language (a subset of Haskell) with a construct for writing polytypic functions. A polytypic function is a function that is defined by induction on the structure of user-defined datatypes.<br />
<br />
<DT>[http://www.cs.chalmers.se/~nordland/ohaskell/ O'Haskell]<DD><br />
O'Haskell is an object-oriented extension to Haskell developed at<br />
Chalmers. O'Haskell conservatively adds two major features to the<br />
Haskell core: a monad of concurrent, state-encapsulating reactive <br />
objects, and a type system with subtyping between records as well <br />
as datatypes. An implementation is available, O'Hugs, which is a<br />
derivative of Hugs 1.3b.<br />
<br />
<DT>[http://www.mathematik.uni-marburg.de/~eden/ Eden]<dd> Eden<br />
is a parallel functional language that provides a new perspective on<br />
parallel programming. It gives programmers enough control to implement<br />
their parallel algorithms efficiently (including granularity issues)<br />
and at the same time frees them from the low level details of process<br />
management. Eden is explicit about processes and their incoming and<br />
outgoing data, but abstracts from the transfer of these data between<br />
processes and the necessary synchronisation. <br />
Eden extends the Haskell but overrules lazy evaluation whenever it is<br />
necessary to support parallelism. <br />
<br />
<dt>[http://www.informatik.uni-kiel.de/~mh/curry/ Curry]<br />
<dd>Curry combines in a seamless way features from functional programming (nested expressions, higher-order functions,<br />
lazy evaluation), logic programming (logical variables, partial data structures, built-in search), and concurrent<br />
programming (concurrent evaluation of expressions with synchronization on logical variables). Many Haskell programs are also valid Curry programs.<br />
<br />
<dt>[http://www.mrtc.mdh.se/projects/DFH/ Data Field Haskell]<br />
<dd>Data Field Haskell implements an instance of Data Fields, a generalization<br />
of arrays. The purpose is to support generic array- and data parallel<br />
programming on a very high level, for rapid prototyping of parallel<br />
algorithms. The most important language extension to Haskell is the<br />
<tt>forall</tt>-construct, which allows convenient definitions of data<br />
fields.<br />
<br />
<dt>[http://www.haskell.org/th/ Template Haskell]<br />
<dd>Template Haskell is an extension to Haskell 98 that allows you to do<br />
type-safe compile-time meta-programming, with Haskell both as the<br />
manipulating language and the language being manipulated.<br />
<br />
<dt>Dependent types</dt><br />
<dd><br />
[[Dependent type]] wikipage on<br />
* concept of dependent types, its usefulness in the world of programming;<br />
* dependently typed languages, possiblity of not-forgetful views;<br />
* simulating dependent types in Haskell, and extending Haskell to have them.<br />
</dd><br />
<br />
</DL><br />
<br />
[[Category:Proposals| ]]<br />
[[Category:Language| ]]</div>Fanael