https://wiki.haskell.org/api.php?action=feedcontributions&user=Malcolm&feedformat=atomHaskellWiki - User contributions [en]2020-08-11T04:20:09ZUser contributionsMediaWiki 1.27.4https://wiki.haskell.org/index.php?title=Learning_Haskell&diff=39371Learning Haskell2011-04-05T10:52:45Z<p>Malcolm: /* Implementations */</p>
<hr />
<div>__NOTOC__<br />
[[Category:Tutorials]]<br />
<br />
This portal points to places where you can go if you want to learn Haskell. <br />
<br />
The [[Introduction|Introduction to Haskell]] on the Haskell website tells you what Haskell gives you: substantially increased programmer productivity, shorter, clearer, and more maintainable code, fewer errors, higher reliability, a smaller semantic gap between the programmer and the language, shorter lead times. There is an old but still relevant paper about [http://weblog.raganwald.com/2007/03/why-why-functional-programming-matters.html Why Functional Programming Matters] (PDF) by John Hughes. More recently, Sebastian Sylvan wrote an article about [[Why Haskell Matters]].<br />
<br />
There is also a [http://www.haskell.org/haskellwiki/Comparison table comparing Haskell to other functional languages]. Many questions about functional programming are answered by the [http://www.cs.nott.ac.uk/~gmh//faq.html comp.lang.functional FAQ].<br />
<br />
==Implementations==<br />
<br />
Here is an overview about Haskell implementations (for new, or non-expert users, we recommend starting with the [http://haskell.org/platform Haskell Platform]).<br />
<br />
{| border=1 cellspacing=0 cellpadding=5 bgcolor=#FFFFFF width=100%|<br />
|-<br />
| <br />
! Messages<br />
! Size<br />
! Tools<br />
! Remarks <br />
|-<br />
| [http://www.haskell.org/ghc/ GHC]<br />
| +<br />
| -<br />
| ++<br />
| Many language extensions; generated code is very fast. ''The most popular implementation.''<br />
|-<br />
| [http://www.haskell.org/hugs/ Hugs]<br />
| +/-<br />
| ++<br />
| -<br />
| Fast compilation; used a lot for learning Haskell and rapid code development. See also [[WinHugs]].<br />
|-<br />
| [http://www.cs.york.ac.uk/fp/nhc98/ nhc98]<br />
| +<br />
| +<br />
| ++<br />
| Profiling, debugging, tracing. ''Not actively developed.''<br />
|-<br />
| [[Yhc]]<br />
| +<br />
| +<br />
| ?<br />
| Compiles to bytecodes. Runtime easily portable. ''Not actively developed.''<br />
|-<br />
| [http://www.cs.uu.nl/helium/ Helium]<br />
| ++<br />
| ++<br />
| -<br />
| No type classes (yet!) and thus incompatible with most material on this site. Made for teaching/learning. Excellent error messages.<br />
|-<br />
| [http://www.cs.uu.nl/wiki/UHC UHC]<br />
| +/-<br />
| -<br />
| +/-<br />
| Developed for experimentation with language features. As a Haskell compiler still under development.<br />
|}<br />
<br />
Detailed information on the implementations can be found in a [[Implementations|separate article]].<br />
<br />
== Material ==<br />
<br />
Below there are links to certain introductory material. If you want to dig deeper, see [[Books and tutorials]].<br />
<br />
=== Textbooks ===<br />
<br />
* [http://www.haskell.org/soe The Haskell School of Expression]<br />
* [http://www.cs.ukc.ac.uk/people/staff/sjt/craft2e/ Haskell: the Craft of Functional Programming]<br />
* [http://www.prenhall.com/allbooks/ptr_0134843460.html Introduction to Functional Programming using Haskell]<br />
* [http://books.cambridge.org/0521277248.htm An Introduction to Functional Programming Systems Using Haskell]<br />
* [http://www.iro.umontreal.ca/~lapalme/Algorithms-functional.html Algorithms: A functional programming approach]<br />
* [http://homepages.cwi.nl/~jve/HR/ The Haskell Road to Logic, Maths, and Programming]<br />
* [http://www.cs.nott.ac.uk/~gmh/book.html Programming in Haskell]<br />
<br />
=== Online tutorials ===<br />
<br />
* [[Meta-tutorial]]<br />
* [http://en.wikibooks.org/wiki/Haskell Haskell Wikibook] A long tutorial on Haskell that includes "Yet Another Haskell Tutorial", "Write Yourself a Scheme in 48 Hours" and "All about monads".<br />
* [http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf YAHT - Yet Another Haskell Tutorial] (good tutorial available online, also [http://pub.hal3.name/daume02yaht.pdf here])<br />
* [http://www.cs.ou.edu/~rlpage/fpclassCurrent/textbook/haskell.shtml Two dozen short lessons]<br />
* [http://www.haskell.org/tutorial/ A Gentle Introduction to Haskell] - classic text, but not so gentle really :D<br />
* [ftp://ftp.geoinfo.tuwien.ac.at/navratil/HaskellTutorial.pdf Haskell-Tutorial]<br />
* [http://www.informatik.uni-bonn.de/~ralf/teaching/Hskurs_toc.html Online Haskell Course] (German)<br />
* [http://www.haskell.org/~pairwise/intro/intro.html Haskell for C Programmers]<br />
* [http://learnyouahaskell.com/ Learn You a Haskell for Great Good!] Beautiful, illustrated Haskell tutorial for programmers with less of a functional programming background.<br />
<br />
=== Advanced tutorials ===<br />
<br />
* [[Hitchhikers guide to Haskell]]<br />
* [http://halogen.note.amherst.edu/%7Ejdtang/scheme_in_48/tutorial/overview.html Write Yourself a Scheme in 48 Hours]<br />
* [http://research.microsoft.com/Users/simonpj/papers/marktoberdorf/ Tackling the Awkward Squad] (on I/O, interfacing to C, concurrency and exceptions)<br />
<br />
=== Debugging/profiling/optimization ===<br />
<br />
=== Monads ===<br />
<br />
* [http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html You Could Have Invented Monads! (And Maybe You Already Have.)]<br />
* [http://citeseer.ist.psu.edu/wadler95monads.html Monads for Functional Programming]<br />
* [http://www.haskell.org/all_about_monads/html/ All about monads]<br />
* [[IO inside|IO inside: down the Rabbit Hole]]<br />
* [http://spbhug.folding-maps.org/wiki/MonadsEn Monads]<br />
<br />
=== Type classes ===<br />
<br />
* [http://homepages.inf.ed.ac.uk/wadler/papers/class/class.ps.gz The paper that at first time introduced type classes and their implementation using dictionaries]<br />
* [[Research papers/Type systems#Type classes|More papers on the type classes]]<br />
<br />
=== Generic programming ===<br />
<br />
* [http://www.cs.vu.nl/boilerplate/#papers Scrap your boilerplate]<br />
<br />
=== Popular libraries ===<br />
<br />
* ByteStrings?<br />
* [http://www.cs.uu.nl/people/daan/download/parsec/parsec.html Parsec, a fast combinator parser]<br />
* [[Modern array libraries]]<br />
* [http://haskell.org/gtk2hs/docs/tutorial/Tutorial_Port/index.xhtml Gtk2Hs, the GUI library]<br />
<br />
=== Reference ===<br />
<br />
* The official language definition: [[Language and library specification]]<br />
* [[HaskellNewbie|Haskell Newbie]]<br />
* [http://cs.anu.edu.au/Student/comp1100/haskell/tourofsyntax.html Tour of the Haskell Syntax]<br />
* [http://zvon.org/other/haskell/Outputglobal/index.html Haskell Reference]<br />
* Haskell [[Reference card]]<br />
* [http://members.chello.nl/hjgtuyl/tourdemonad.html A tour of the Haskell Monad functions]<br />
* [http://www.cs.uu.nl/helium/docs/TourOfPrelude.html Tour of the Helium Prelude]<br />
* [http://www.cs.ukc.ac.uk/people/staff/sjt/craft2e/errors/allErrors.html Some common Hugs error messages]<br />
* [http://blog.codeslower.com/2008/10/The-Haskell-Cheatsheet The Haskell Cheatsheet] - A reference card and mini-tutorial in one.<br />
<br />
=== Course material ===<br />
* [http://www.cse.chalmers.se/edu/course/TDA555/ Introduction to Functional Programming, Chalmers]<br />
* [http://www.cs.chalmers.se/Cs/Grundutb/Kurser/d1pt/d1pta/external.html Programming in Haskell, Chalmers]<br />
* [http://www.cse.chalmers.se/edu/course/afp/ Advanced Functional Programming, Chalmers]<br />
* [http://www.cs.chalmers.se/~koen/Aafp/ Advanced Advanced Functional Programming, Chalmers]<br />
* [http://www.cs.caltech.edu/courses/cs11/material/haskell/index.html CS 11 Caltech]<br />
* [http://www.cs.uu.nl/docs/vakken/lfp/ Functional programming]: course notes ([http://www.cs.uu.nl/~jeroen/courses/fp-eng.pdf English], [http://www.cs.uu.nl/~jeroen/courses/fp-nl.pdf Dutch], [http://www.cs.uu.nl/~jeroen/courses/fp-sp.pdf Spanish]), slides in Dutch<br />
* [http://www.cse.unsw.edu.au/~cs1011/ CS1011]: Tutorials, lab exercises and solutions</div>Malcolmhttps://wiki.haskell.org/index.php?title=Mailing_lists&diff=39022Mailing lists2011-03-15T13:25:21Z<p>Malcolm: /* Mailing lists in detail */</p>
<hr />
<div>There are three mailing lists to discuss issues related to Haskell in<br />
general, and several additional mailing lists for more detailed<br />
discussion topics, including one for each particular implementation of<br />
Haskell.<br />
<br />
* [http://haskell.org/mailman/listinfo/haskell Subscribe to haskell@haskell.org] (announces only, low traffic)<br />
* [http://haskell.org/mailman/listinfo/haskell-cafe Subscribe to haskell-cafe@haskell.org] (very busy, daily community discussion)<br />
* [http://haskell.org/mailman/listinfo/beginners Subscribe to beginners@haskell.org] (busy, daily community discussion)<br />
* [http://haskell.org/mailman/listinfo A comprehensive list of all mailing lists hosted at haskell.org]<br />
<br />
==Mailing lists in detail==<br />
<br />
<dl><dt>[mailto:haskell@haskell.org haskell@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>Announcements only. <br> [mailto:haskell@haskell.org haskell@haskell.org] is intended to be a low-bandwidth list, to which it is safe to subscribe without risking being buried in email. If a thread becomes longer than a handful of messages, please transfer to [mailto:haskell-cafe@haskell.org haskell-cafe@haskell.org].</dd><br />
<dt>[mailto:haskell-cafe@haskell.org haskell-cafe@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>General Haskell questions; extended discussions.<br> In Simon Peyton Jones' words: "forum in which it's acceptable to ask anything, no matter how naive, and get polite replies."<br />
<dt>[mailto:beginners@haskell.org beginners@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>Beginner-level, i.e., elementary, Haskell questions and discussions.<br> In the words of Benjamin L. Russell (the one who first suggested creating the mailing list and the current administrator): "Here, there is no such thing as a 'stupid question.'"</dd><br />
</dl><br />
<br />
===Mailing list tone===<br />
<br />
In practice, 'haskell' tends to be devoted mainly to announcements, 'haskell-cafe' tends to be devoted mainly to freeform discussion, and 'haskell-beginners' tends to be devoted mainly to beginner-level Haskell language discussions.<br />
<br />
The division of the general list into announcements and the cafe was introduced for people who want to stay in touch with what's happening in the Haskell world, but who don't want to be swamped with mail. '''If you are new to Haskell, then you have a choice: either haskell-cafe, or haskell-beginners.'''<br />
<br />
The readership of the three mailing lists also varies. Whereas both 'haskell' and 'haskell-cafe' tend to be frequented by either language designers or researchers, 'haskell-beginners' tends to be frequented by beginner-level students and educators. 'Haskell-beginners' was created to address the needs of readers of 'haskell-cafe' who felt that the discussion there was either too academic, or too mathematical.<br />
<br />
When posting on 'haskell-cafe', remember:<br />
<br />
* Respect others. This is a civil discussion forum. Remember, the person on the other side of the keyboard is a person too, and is probably well-intentioned.<br />
<br />
* Try to keep discussions on-topic. Threads that have lost any relevance to the Haskell language should be moved elsewhere, including tangential or joking posts (though humor in the context of on-topic discussion is welcome.)<br />
<br />
* Think before sending. Avoid content-free posts, such as a message consisting merely of the phrase "+1." The etiquette for academic mailing list discussions is different from the etiquette for other Internet fora or for ordinary conversation. Remember that your posting will be sent to thousands of people, some of whom are very busy. Ask yourself whether your contribution adds anything of value to any of them.<br />
<br />
* Bottom post and trim irrelevant parts of earlier replies. It's more natural to read the context of the original message and then a response instead of backwards. But if you quote too much of the original message, people will likely give up before getting to the new comment you added several pages down.<br />
<br />
In the case of 'haskell-beginners', please keep in mind the following pointers when posting:<br />
<br />
* Since many readers of this mailing list are beginner-level students of Haskell, try to keep the discussion at a level that allows students of all backgrounds to participate in the discussion. I.e., when explaining difficult concepts, be careful not to assume an advanced background of the reader. For example, don't start a discussion on monads by saying: "A monad is a category theory-based data structure used to supplement pure computations with features like state, common environment or I/O." Instead, say: "A monad is a tool used in Haskell when we want to allow a program to do anything other than just return a value."<br />
<br />
* Again, since many readers of this mailing list are beginner-level students of Haskell, do not assume that readers have an advanced mathematics background, or that they know everything that may seem elementary to a computer science student. For example, if a student here asks whether the screen resolution is important in determining the precision of an algorithm to compute prime numbers by picking points randomly from a square, do not accuse the student of "polluting" the newsgroup by asking a question that "has nothing to do with Haskell." Understand that the student may not have enough mathematical or programming background to realize that screen resolution may be independent of the precision of the actual algorithm used to compute the prime numbers, which may then be represented on the screen independently of the precision of the algorithm itself. If beginner-level students are required to worry about offending somebody with a question that is too elementary every time they need an answer, they will stay beginners.<br />
<br />
===Subscription information===<br />
<br />
Haskell mailing lists are managed by [http://www.gnu.org/software/mailman/mailman.html mailman] -<br />
each list has a web interface. To subscribe, unsubscribe, or view the<br />
archives of a list visit the home page of the list, such as the [http://haskell.org/mailman/listinfo/haskell Haskell mailing list home page], the [http://haskell.org/mailman/listinfo/haskell-cafe Haskell Cafe mailing list home page], or the [http://haskell.org/mailman/listinfo/beginners Haskell-Beginners mailing list home page]. <br />
<br />
===Archiving===<br />
<br />
mail-archive.com provides an archive of all messages sent to the haskell list since March 1997. This includes messages from before the list was converted to mailman. You may search these archives: [http://www.mail-archive.com/haskell@haskell.org/ haskell archive], [http://www.mail-archive.com/haskell-cafe@haskell.org/ haskell-cafe archive], and [http://www.mail-archive.com/beginners@haskell.org/ haskell-beginners archive].<br />
<br />
MarkMail has a [http://haskell.markmail.org/ searchable archive] of all Haskell lists going back to around 2000.<br />
<br />
Also, the archives of the Haskell mailing list from September 1990 until 2006, before and after the list was converted to mailman, are [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006/threads.html hosted here] (and as a [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006.tar.bz2 tar file]).<br />
Related to this is the archives of [http://groups.google.com/group/comp.lang.functional/about?hl=en comp.lang.functional] going back to 1990.<br />
<br />
You may also [http://www.google.com/coop/cse?cx=015832023690232952875%3Acunmubfghzq search the mailing list] using the Google Coop Haskell Search Engine.<br />
<br />
====Archives====<br />
<br />
The following archives exist:<br />
<br />
haskell<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.general gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.general info]) 2006/12-present<br />
* [http://www.haskell.org/pipermail/haskell/ mailman] 2000/10-present<br />
* [http://www.mail-archive.com/haskell@haskell.org/ mail-archive] 1997/03-present<br />
* [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006/threads.html dons archive] ([http://www.cse.unsw.edu.au/~dons/haskell-1990-2006.tar.bz2 tar]) 1990/09-2006/08<br />
<br />
haskell-cafe<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.cafe gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.cafe info]) 2002/04-present<br />
* [http://www.haskell.org/pipermail/haskell-cafe/ mailman] 2000/10-present<br />
* [http://www.mail-archive.com/haskell-cafe@haskell.org/ mail-archive] 1997/03-present<br />
<br />
haskell-beginners<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.beginners gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.beginners info]) 2008/07-present<br />
* [http://www.haskell.org/pipermail/beginners/ mailman] 2008/07-present<br />
* [http://www.mail-archive.com/beginners@haskell.org/ mail-archive] 2008/07-present<br />
<br />
Any problems with haskell or haskell-cafe should be reported to [mailto:haskell-admin@haskell.org haskell-admin@haskell.org], and any problems with haskell-beginners should be reported to [mailto:DekuDekuplex@Yahoo.com DekuDekuplex@Yahoo.com].<br />
<br />
==More specific lists==<br />
<br />
* [http://haskell.org/mailman/listinfo A comprehensive list of all Mailing lists hosted at haskell.org]<br />
* [http://gmane.org/find.php?list=haskell Haskell lists at gmane]<br />
<br />
There are mailing lists for each implementation of Haskell,<br />
and for more detailed discussion topics. Questions, comments, and bug<br />
reports regarding a specific implementation should be sent directly<br />
to the appropriate list instead of the entire Haskell community.<br />
Separate topics such as documentation tools, the common FFI, and<br />
libraries, also have lists of their own.<br />
<br />
==Outside haskell.org==<br />
<br />
There are also Haskell related mailing lists that are not hosted at haskell.org.<br />
<br />
* [[Haskell art]]<br />
<br />
[[Category:Community]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell.org_committee&diff=37876Haskell.org committee2010-12-12T15:16:50Z<p>Malcolm: /* Operation */ clarify the rotation date.</p>
<hr />
<div>== Responsibilities ==<br />
<br />
The ''haskell.org committee'' represents the Open Source Haskell community. Its responsibilities include:<br />
<br />
* setting the policy on what [http://haskell.org/haskellwiki/Haskell.org_domain the haskell.org domain] name, and its subdomains, may be used for<br />
* setting the policy on what the servers owned by haskell.org may be used for<br />
* determining how haskell.org funds are spent<br />
<br />
== Current members ==<br />
<br />
* Don Stewart [chair]<br />
* Edward Z. Yang<br />
* Ganesh Sittampalam<br />
* Ian Lynagh<br />
* Johan Tibell (term ends 2012)<br />
* Malcolm Wallace (term ends 2011)<br />
* Vo Minh Thu<br />
<br />
e-mail: committee [AT] haskell.org<br />
<br />
== Operation ==<br />
<br />
The committee consists of 7 members. Members are expected to serve a 3 year term, and terms are staggered so that 2 or 3 members step down each year, at the end of October.<br />
<br />
The members will elect one of their number to be chair each year. The chair is responsible for making sure that things keep moving, and to ensure that a conclusion is reached on any issues raised.<br />
<br />
When a member steps down, either because they have reached the end of their term or because other circumstances require them to step down early, open self-nominations will be sought from the community via the haskell@ mailing list. Previous committee members, including those who have just stepped down, will also be eligible for nomination. The committee will then select a replacement from amongst those nominated.<br />
<br />
The committee replacement process is intentionally currently very light. As we get more experience, we may wish to change it, e.g. by having a larger subset of "the community" vote on nominations.<br />
<br />
If any member of the community wishes to raise any issue with the committee, they may contact it by e-mailing committee [AT] haskell.org.<br />
<br />
It is expected the committee will discuss any matters brought to it amongst themselves, and if they think appropriate, with the wider community, to try to reach consensus. Ultimately, the committee will make decisions by more than half of the membership voting for a particular outcome. These rules of operation may also be changed in the same way.<br />
<br />
Each year, the committee will post a statement of the haskell.org assets, and the transactions for that year. Some details may be omitted, e.g. for confidentiality of donors.<br />
<br />
<br />
[[Category:Community]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell.org_committee&diff=37875Haskell.org committee2010-12-12T15:13:52Z<p>Malcolm: /* Current members */ add some term-ending dates</p>
<hr />
<div>== Responsibilities ==<br />
<br />
The ''haskell.org committee'' represents the Open Source Haskell community. Its responsibilities include:<br />
<br />
* setting the policy on what [http://haskell.org/haskellwiki/Haskell.org_domain the haskell.org domain] name, and its subdomains, may be used for<br />
* setting the policy on what the servers owned by haskell.org may be used for<br />
* determining how haskell.org funds are spent<br />
<br />
== Current members ==<br />
<br />
* Don Stewart [chair]<br />
* Edward Z. Yang<br />
* Ganesh Sittampalam<br />
* Ian Lynagh<br />
* Johan Tibell (term ends 2012)<br />
* Malcolm Wallace (term ends 2011)<br />
* Vo Minh Thu<br />
<br />
e-mail: committee [AT] haskell.org<br />
<br />
== Operation ==<br />
<br />
The committee consists of 7 members. Members are expected to serve a 3 year term, and terms are staggered so that 2 or 3 members step down each year.<br />
<br />
The members will elect one of their number to be chair each year. The chair is responsible for making sure that things keep moving, and to ensure that a conclusion is reached on any issues raised.<br />
<br />
When a member steps down, either because they have reached the end of their term or because other circumstances require them to step down early, open self-nominations will be sought from the community via the haskell@ mailing list. Previous committee members, including those who have just stepped down, will also be eligible for nomination. The committee will then select a replacement from amongst those nominated.<br />
<br />
The committee replacement process is intentionally currently very light. As we get more experience, we may wish to change it, e.g. by having a larger subset of "the community" vote on nominations.<br />
<br />
If any member of the community wishes to raise any issue with the committee, they may contact it by e-mailing committee [AT] haskell.org.<br />
<br />
It is expected the committee will discuss any matters brought to it amongst themselves, and if they think appropriate, with the wider community, to try to reach consensus. Ultimately, the committee will make decisions by more than half of the membership voting for a particular outcome. These rules of operation may also be changed in the same way.<br />
<br />
Each year, the committee will post a statement of the haskell.org assets, and the transactions for that year. Some details may be omitted, e.g. for confidentiality of donors.<br />
<br />
<br />
[[Category:Community]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Mailing_lists&diff=37364Mailing lists2010-10-31T14:58:45Z<p>Malcolm: </p>
<hr />
<div>There are three mailing lists to discuss issues related to Haskell in<br />
general, and several additional mailing lists for more detailed<br />
discussion topics, including one for each particular implementation of<br />
Haskell.<br />
<br />
* [http://haskell.org/mailman/listinfo/haskell Subscribe to haskell@haskell.org] (announces only, low traffic)<br />
* [http://haskell.org/mailman/listinfo/haskell-cafe Subscribe to haskell-cafe@haskell.org] (very busy, daily community discussion)<br />
* [http://haskell.org/mailman/listinfo/beginners Subscribe to beginners@haskell.org] (busy, daily community discussion)<br />
* [http://haskell.org/mailman/listinfo A comprehensive list of all mailing lists hosted at haskell.org]<br />
<br />
==Mailing lists in detail==<br />
<br />
<dl><dt>[mailto:haskell@haskell.org haskell@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>Announcements, discussion openers, technical questions. <br> [mailto:haskell@haskell.org haskell@haskell.org] is intended to be a low-bandwidth list, to which it is safe to subscribe without risking being buried in email. If a thread becomes longer than a handful of messages, please transfer to [mailto:haskell-cafe@haskell.org haskell-cafe@haskell.org].</dd><br />
<dt>[mailto:haskell-cafe@haskell.org haskell-cafe@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>General Haskell questions; extended discussions.<br> In Simon Peyton Jones' words: "forum in which it's acceptable to ask anything, no matter how naive, and get polite replies."<br />
<dt>[mailto:beginners@haskell.org beginners@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>Beginner-level, i.e., elementary, Haskell questions and discussions.<br> In the words of Benjamin L. Russell (the one who first suggested creating the mailing list and the current administrator): "Here, there is no such thing as a 'stupid question.'"</dd><br />
</dl><br />
<br />
===Mailing list tone===<br />
<br />
The division of the general list was introduced for people who want<br />
to stay in touch with what's happening in the Haskell world, but who don't want to be swamped with mail. Discussions of any kind can start on 'haskell', but should transfer to 'haskell-cafe' if they go beyond a few 'rounds'. '''Alternatively, if you are new to Haskell, then you have a choice: either haskell-cafe, or haskell-beginners.'''<br />
<br />
In practice, 'haskell' tends to be devoted mainly to announcements, 'haskell-cafe' tends to be devoted mainly to freeform discussion, and 'haskell-beginners' tends to be devoted mainly to beginner-level Haskell language discussions.<br />
<br />
The readership of the three mailing lists also varies. Whereas both 'haskell' and 'haskell-cafe' tend to be frequented by either language designers or researchers, 'haskell-beginners' tends to be frequented by beginner-level students and educators. 'Haskell-beginners' was created to address the needs of readers of 'haskell-cafe' who felt that the discussion there was either too academic, or too mathematical.<br />
<br />
When posting on 'haskell-cafe', remember:<br />
<br />
* Respect others. This is a civil discussion forum. Remember, the person on the other side of the keyboard is a person too, and is probably well-intentioned.<br />
<br />
* Try to keep discussions on-topic. Threads that have lost any relevance to the Haskell language should be moved elsewhere, including tangential or joking posts (though humor in the context of on-topic discussion is welcome.)<br />
<br />
* Think before sending. Avoid content-free posts, such as a message consisting merely of the phrase "+1." The etiquette for academic mailing list discussions is different from the etiquette for other Internet fora or for ordinary conversation. Remember that your posting will be sent to thousands of people, some of whom are very busy. Ask yourself whether your contribution adds anything of value to any of them.<br />
<br />
* Bottom post and trim irrelevant parts of earlier replies. It's more natural to read the context of the original message and then a response instead of backwards.<br />
<br />
In the case of 'haskell-beginners', please keep in mind the following pointers when posting:<br />
<br />
* Since many readers of this mailing list are beginner-level students of Haskell, try to keep the discussion at a level that allows students of all backgrounds to participate in the discussion. I.e., when explaining difficult concepts, be careful not to assume an advanced background of the reader. For example, don't start a discussion on monads by saying: "A monad is a category theory-based data structure used to supplement pure computations with features like state, common environment or I/O." Instead, say: "A monad is a tool used in Haskell when we want to allow a program to do anything other than just return a value."<br />
<br />
* Again, since many readers of this mailing list are beginner-level students of Haskell, do not assume that readers have an advanced mathematics background, or that they know everything that may seem elementary to a computer science student. For example, if a student here asks whether the screen resolution is important in determining the precision of an algorithm to compute prime numbers by picking points randomly from a square, do not accuse the student of "polluting" the newsgroup by asking a question that "has nothing to do with Haskell." Understand that the student may not have enough mathematical or programming background to realize that screen resolution may be independent of the precision of the actual algorithm used to compute the prime numbers, which may then be represented on the screen independently of the precision of the algorithm itself. If beginner-level students are required to worry about offending somebody with a question that is too elementary every time they need an answer, they will stay beginners.<br />
<br />
===Subscription information===<br />
<br />
Haskell mailing lists are managed by [http://www.gnu.org/software/mailman/mailman.html mailman] -<br />
each list has a web interface. To subscribe, unsubscribe, or view the<br />
archives of a list visit the home page of the list, such as the [http://haskell.org/mailman/listinfo/haskell Haskell mailing list home page], the [http://haskell.org/mailman/listinfo/haskell-cafe Haskell Cafe mailing list home page], or the [http://haskell.org/mailman/listinfo/beginners Haskell-Beginners mailing list home page]. <br />
<br />
===Archiving===<br />
<br />
mail-archive.com provides an archive of all messages sent to the haskell list since March 1997. This includes messages from before the list was converted to mailman. You may search these archives: [http://www.mail-archive.com/haskell@haskell.org/ haskell archive], [http://www.mail-archive.com/haskell-cafe@haskell.org/ haskell-cafe archive], and [http://www.mail-archive.com/beginners@haskell.org/ haskell-beginners archive].<br />
<br />
MarkMail has a [http://haskell.markmail.org/ searchable archive] of all Haskell lists going back to around 2000.<br />
<br />
Also, the archives of the Haskell mailing list from September 1990 until 2006, before and after the list was converted to mailman, are [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006/threads.html hosted here] (and as a [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006.tar.bz2 tar file]).<br />
Related to this is the archives of [http://groups.google.com/group/comp.lang.functional/about?hl=en comp.lang.functional] going back to 1990.<br />
<br />
You may also [http://www.google.com/coop/cse?cx=015832023690232952875%3Acunmubfghzq search the mailing list] using the Google Coop Haskell Search Engine.<br />
<br />
====Archives====<br />
<br />
The following archives exist:<br />
<br />
haskell<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.general gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.general info]) 2006/12-present<br />
* [http://www.haskell.org/pipermail/haskell/ mailman] 2000/10-present<br />
* [http://www.mail-archive.com/haskell@haskell.org/ mail-archive] 1997/03-present<br />
* [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006/threads.html dons archive] ([http://www.cse.unsw.edu.au/~dons/haskell-1990-2006.tar.bz2 tar]) 1990/09-2006/08<br />
<br />
haskell-cafe<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.cafe gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.cafe info]) 2002/04-present<br />
* [http://www.haskell.org/pipermail/haskell-cafe/ mailman] 2000/10-present<br />
* [http://www.mail-archive.com/haskell-cafe@haskell.org/ mail-archive] 1997/03-present<br />
<br />
haskell-beginners<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.beginners gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.beginners info]) 2008/07-present<br />
* [http://www.haskell.org/pipermail/beginners/ mailman] 2008/07-present<br />
* [http://www.mail-archive.com/beginners@haskell.org/ mail-archive] 2008/07-present<br />
<br />
Any problems with haskell or haskell-cafe should be reported to [mailto:haskell-admin@haskell.org haskell-admin@haskell.org], and any problems with haskell-beginners should be reported to [mailto:DekuDekuplex@Yahoo.com DekuDekuplex@Yahoo.com].<br />
<br />
==More specific lists==<br />
<br />
* [http://haskell.org/mailman/listinfo A comprehensive list of all Mailing lists hosted at haskell.org]<br />
* [http://gmane.org/find.php?list=haskell Haskell lists at gmane]<br />
<br />
There are mailing lists for each implementation of Haskell,<br />
and for more detailed discussion topics. Questions, comments, and bug<br />
reports regarding a specific implementation should be sent directly<br />
to the appropriate list instead of the entire Haskell community.<br />
Separate topics such as documentation tools, the common FFI, and<br />
libraries, also have lists of their own.<br />
<br />
==Outside haskell.org==<br />
<br />
There are also Haskell related mailing lists that are not hosted at haskell.org.<br />
<br />
* [[Haskell art]]<br />
<br />
[[Category:Community]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Mailing_lists&diff=37363Mailing lists2010-10-31T13:51:39Z<p>Malcolm: </p>
<hr />
<div>2010-10-31: ALL MAILING LISTS CURRENTLY DOWN (DISK FULL)<br />
<br />
There are three mailing lists to discuss issues related to Haskell in<br />
general, and several additional mailing lists for more detailed<br />
discussion topics, including one for each particular implementation of<br />
Haskell.<br />
<br />
* [http://haskell.org/mailman/listinfo/haskell Subscribe to haskell@haskell.org] (announces only, low traffic)<br />
* [http://haskell.org/mailman/listinfo/haskell-cafe Subscribe to haskell-cafe@haskell.org] (very busy, daily community discussion)<br />
* [http://haskell.org/mailman/listinfo/beginners Subscribe to beginners@haskell.org] (busy, daily community discussion)<br />
* [http://haskell.org/mailman/listinfo A comprehensive list of all mailing lists hosted at haskell.org]<br />
<br />
==Mailing lists in detail==<br />
<br />
<dl><dt>[mailto:haskell@haskell.org haskell@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>Announcements, discussion openers, technical questions. <br> [mailto:haskell@haskell.org haskell@haskell.org] is intended to be a low-bandwidth list, to which it is safe to subscribe without risking being buried in email. If a thread becomes longer than a handful of messages, please transfer to [mailto:haskell-cafe@haskell.org haskell-cafe@haskell.org].</dd><br />
<dt>[mailto:haskell-cafe@haskell.org haskell-cafe@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>General Haskell questions; extended discussions.<br> In Simon Peyton Jones' words: "forum in which it's acceptable to ask anything, no matter how naive, and get polite replies."<br />
<dt>[mailto:beginners@haskell.org beginners@haskell.org] ([[#Archives|archives]])</dt><br />
<dd>Beginner-level, i.e., elementary, Haskell questions and discussions.<br> In the words of Benjamin L. Russell (the one who first suggested creating the mailing list and the current administrator): "Here, there is no such thing as a 'stupid question.'"</dd><br />
</dl><br />
<br />
===Mailing list tone===<br />
<br />
The division of the general list was introduced for people who want<br />
to stay in touch with what's happening in the Haskell world, but who don't want to be swamped with mail. Discussions of any kind can start on 'haskell', but should transfer to 'haskell-cafe' if they go beyond a few 'rounds'. '''Alternatively, if you are new to Haskell, then you have a choice: either haskell-cafe, or haskell-beginners.'''<br />
<br />
In practice, 'haskell' tends to be devoted mainly to announcements, 'haskell-cafe' tends to be devoted mainly to freeform discussion, and 'haskell-beginners' tends to be devoted mainly to beginner-level Haskell language discussions.<br />
<br />
The readership of the three mailing lists also varies. Whereas both 'haskell' and 'haskell-cafe' tend to be frequented by either language designers or researchers, 'haskell-beginners' tends to be frequented by beginner-level students and educators. 'Haskell-beginners' was created to address the needs of readers of 'haskell-cafe' who felt that the discussion there was either too academic, or too mathematical.<br />
<br />
When posting on 'haskell-cafe', remember:<br />
<br />
* Respect others. This is a civil discussion forum. Remember, the person on the other side of the keyboard is a person too, and is probably well-intentioned.<br />
<br />
* Try to keep discussions on-topic. Threads that have lost any relevance to the Haskell language should be moved elsewhere, including tangential or joking posts (though humor in the context of on-topic discussion is welcome.)<br />
<br />
* Think before sending. Avoid content-free posts, such as a message consisting merely of the phrase "+1." The etiquette for academic mailing list discussions is different from the etiquette for other Internet fora or for ordinary conversation. Remember that your posting will be sent to thousands of people, some of whom are very busy. Ask yourself whether your contribution adds anything of value to any of them.<br />
<br />
* Bottom post and trim irrelevant parts of earlier replies. It's more natural to read the context of the original message and then a response instead of backwards.<br />
<br />
In the case of 'haskell-beginners', please keep in mind the following pointers when posting:<br />
<br />
* Since many readers of this mailing list are beginner-level students of Haskell, try to keep the discussion at a level that allows students of all backgrounds to participate in the discussion. I.e., when explaining difficult concepts, be careful not to assume an advanced background of the reader. For example, don't start a discussion on monads by saying: "A monad is a category theory-based data structure used to supplement pure computations with features like state, common environment or I/O." Instead, say: "A monad is a tool used in Haskell when we want to allow a program to do anything other than just return a value."<br />
<br />
* Again, since many readers of this mailing list are beginner-level students of Haskell, do not assume that readers have an advanced mathematics background, or that they know everything that may seem elementary to a computer science student. For example, if a student here asks whether the screen resolution is important in determining the precision of an algorithm to compute prime numbers by picking points randomly from a square, do not accuse the student of "polluting" the newsgroup by asking a question that "has nothing to do with Haskell." Understand that the student may not have enough mathematical or programming background to realize that screen resolution may be independent of the precision of the actual algorithm used to compute the prime numbers, which may then be represented on the screen independently of the precision of the algorithm itself. If beginner-level students are required to worry about offending somebody with a question that is too elementary every time they need an answer, they will stay beginners.<br />
<br />
===Subscription information===<br />
<br />
Haskell mailing lists are managed by [http://www.gnu.org/software/mailman/mailman.html mailman] -<br />
each list has a web interface. To subscribe, unsubscribe, or view the<br />
archives of a list visit the home page of the list, such as the [http://haskell.org/mailman/listinfo/haskell Haskell mailing list home page], the [http://haskell.org/mailman/listinfo/haskell-cafe Haskell Cafe mailing list home page], or the [http://haskell.org/mailman/listinfo/beginners Haskell-Beginners mailing list home page]. <br />
<br />
===Archiving===<br />
<br />
mail-archive.com provides an archive of all messages sent to the haskell list since March 1997. This includes messages from before the list was converted to mailman. You may search these archives: [http://www.mail-archive.com/haskell@haskell.org/ haskell archive], [http://www.mail-archive.com/haskell-cafe@haskell.org/ haskell-cafe archive], and [http://www.mail-archive.com/beginners@haskell.org/ haskell-beginners archive].<br />
<br />
MarkMail has a [http://haskell.markmail.org/ searchable archive] of all Haskell lists going back to around 2000.<br />
<br />
Also, the archives of the Haskell mailing list from September 1990 until 2006, before and after the list was converted to mailman, are [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006/threads.html hosted here] (and as a [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006.tar.bz2 tar file]).<br />
Related to this is the archives of [http://groups.google.com/group/comp.lang.functional/about?hl=en comp.lang.functional] going back to 1990.<br />
<br />
You may also [http://www.google.com/coop/cse?cx=015832023690232952875%3Acunmubfghzq search the mailing list] using the Google Coop Haskell Search Engine.<br />
<br />
====Archives====<br />
<br />
The following archives exist:<br />
<br />
haskell<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.general gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.general info]) 2006/12-present<br />
* [http://www.haskell.org/pipermail/haskell/ mailman] 2000/10-present<br />
* [http://www.mail-archive.com/haskell@haskell.org/ mail-archive] 1997/03-present<br />
* [http://www.cse.unsw.edu.au/~dons/haskell-1990-2006/threads.html dons archive] ([http://www.cse.unsw.edu.au/~dons/haskell-1990-2006.tar.bz2 tar]) 1990/09-2006/08<br />
<br />
haskell-cafe<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.cafe gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.cafe info]) 2002/04-present<br />
* [http://www.haskell.org/pipermail/haskell-cafe/ mailman] 2000/10-present<br />
* [http://www.mail-archive.com/haskell-cafe@haskell.org/ mail-archive] 1997/03-present<br />
<br />
haskell-beginners<br />
<br />
* [http://news.gmane.org/gmane.comp.lang.haskell.beginners gmane] ([http://dir.gmane.org/gmane.comp.lang.haskell.beginners info]) 2008/07-present<br />
* [http://www.haskell.org/pipermail/beginners/ mailman] 2008/07-present<br />
* [http://www.mail-archive.com/beginners@haskell.org/ mail-archive] 2008/07-present<br />
<br />
Any problems with haskell or haskell-cafe should be reported to [mailto:haskell-admin@haskell.org haskell-admin@haskell.org], and any problems with haskell-beginners should be reported to [mailto:DekuDekuplex@Yahoo.com DekuDekuplex@Yahoo.com].<br />
<br />
==More specific lists==<br />
<br />
* [http://haskell.org/mailman/listinfo A comprehensive list of all Mailing lists hosted at haskell.org]<br />
* [http://gmane.org/find.php?list=haskell Haskell lists at gmane]<br />
<br />
There are mailing lists for each implementation of Haskell,<br />
and for more detailed discussion topics. Questions, comments, and bug<br />
reports regarding a specific implementation should be sent directly<br />
to the appropriate list instead of the entire Haskell community.<br />
Separate topics such as documentation tools, the common FFI, and<br />
libraries, also have lists of their own.<br />
<br />
==Outside haskell.org==<br />
<br />
There are also Haskell related mailing lists that are not hosted at haskell.org.<br />
<br />
* [[Haskell art]]<br />
<br />
[[Category:Community]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=HaskellImplementorsWorkshop/2010&diff=37136HaskellImplementorsWorkshop/20102010-10-05T17:06:13Z<p>Malcolm: </p>
<hr />
<div>= Haskell Implementors Workshop 2010 =<br />
<br />
The 2009 Haskell Implementors Workshop was a great success, and we will be holding another one on October 1 2010, alongside [http://www.icfpconference.org/icfp2010/ ICFP 2010] in Baltimore.<br />
<br />
== Links ==<br />
<br />
* [[HaskellImplementorsWorkshop/2010/Call_for_Talks|Call for Talks]]<br />
<br />
== Dates ==<br />
<br />
* Friday 6 Aug: Submissions due<br />
* Monday 23 Aug: Notification<br />
* Friday 1 Oct: Workshop<br />
<br />
== Organisers ==<br />
<br />
* Jean-Philippe Bernardy (Chalmers University of Technology)<br />
* Duncan Coutts - co-chair (Well-Typed LLP)<br />
* Iavor Diatchki (Galois)<br />
* Simon Marlow - co-chair (Microsoft Research)<br />
* Ben Lippmeier (University of New South Wales)<br />
* Neil Mitchell (Standard Chartered)<br />
<br />
== Programme ==<br />
<br />
8:00 8:45 Breakfast<br />
<br />
9:00 10:00 Session 1<br />
<br />
* '''''Hackage, Cabal and the Haskell Platform: The Second Year''''' (Don Stewart and Duncan Coutts)<br />
:: [http://donsbot.wordpress.com/2010/10/01/hackage-cabal-and-the-haskell-platform-the-second-year/ Slides], [http://www.vimeo.com/15462768 Video]<br />
<br />
* '''''Hackage 2.0: Serving Packages Better''''' (Matthew Gruen)<br />
:: [http://www.galois.com/~dons/talks/hiw-2010/gruen-hackage2.pdf Slides (PDF)], [http://www.vimeo.com/15464003 Video]<br />
<br />
10:00 10:30 Break<br />
<br />
10:30 12:30 Session 2<br />
<br />
* '''''Shake: A Better Make''''' (Neil Mitchell)<br />
:: [http://www.galois.com/~dons/talks/hiw-2010/ndm-shake.pdf Slides (PDF)], [http://www.vimeo.com/15465133 Video]<br />
<br />
* '''''Improving Cabal's Test Support''''' (Thomas Tuegel)<br />
:: [http://www.galois.com/~dons/talks/hiw-2010/tuegel-cabal-test.pdf Slides (PDF)], [http://www.vimeo.com/15466100 Video]<br />
<br />
* '''''Revamping Haddock Output''''' (Mark Lentczner)<br />
:: [http://mtnviewmark.wordpress.com/2010/09/07/haddock-revamp/ Slides], [http://www.vimeo.com/15466885 Video]<br />
<br />
* First '''''short-talks''''' session: 10-minute(ish) talks/demos, sign up on the day<br />
** GHC Status - Simon Peyton Jones [http://www.galois.com/~dons/talks/hiw-2010/spj-ghc7-status.pdf Slides], [http://www.vimeo.com/15467880 Video]<br />
** UHC Status - Atze Dijkstra [http://www.galois.com/~dons/talks/hiw-2010/atze-uhc-status.pdf Slides] , [http://www.vimeo.com/15467692 Video]<br />
<br />
12:30 2:00 Lunch<br />
<br />
2:00 3:00 Session 3<br />
<br />
* '''''Typed type-level functional programming in GHC''''' (Brent Yorgey)<br />
:: [http://www.cis.upenn.edu/~byorgey/talks/typetype-HIW-20101001.pdf Slides], [http://www.vimeo.com/15480577 Video]<br />
<br />
* Second '''''short-talks''''' session: 10-minute(ish) talks/demos, sign up on the day<br />
** DDC peekOn/pokeOn (Ben Lippmeier) [http://www.cse.unsw.edu.au/~benl/talks/PeekOn-HIW2010.pdf Slides] [http://www.vimeo.com/15481154 Video]<br />
** Scrap your zippers (Michael Adams)<br />
** Parallel CASHflow (Kevin Hammond)<br />
** Eden - a parallel Haskell (Oleg Lobachev)<br />
** Performance visualization for multicore Haskell (Peter Wortmann)<br />
** pandoc + lhs2TeX for literate programming (Tillmann Rendel)<br />
<br />
3:00 3:30 Break<br />
<br />
3:30 4:30 Session 4<br />
<br />
* '''''Fibon -- a new benchmark suite for Haskell''''' (David Peixotto)<br />
:: [http://www.cs.rice.edu/~dmp4866/PDF/2010.Fibon-HIW-Talk.pdf Slides (PDF)]<br />
<br />
* '''''Kansas Lava -- Using and Abusing GHC's Type Extensions''''' (Andrew Farmer)<br />
:: [http://www.scribd.com/doc/38559736/kansaslava-hiw10 Slides]<br />
<br />
4:30 5:00 Break<br />
<br />
5:00 6:00 Session 5<br />
<br />
* '''''Scheduling Lazy Evaluation on Multicore''''' (Simon Marlow)<br />
:: [http://www.galois.com/~dons/talks/hiw-2010/simonmar-multicore.pdf Slides]<br />
<br />
* '''''Beyond Haskell''''' discussion, chaired by Ben Lippmeier<br />
:: [http://www.cse.unsw.edu.au/~benl/talks/BeyondHaskell-HIW2010.pdf Slides]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Ghent_Functional_Programming_Group/BelHac&diff=36710Ghent Functional Programming Group/BelHac2010-09-08T07:23:20Z<p>Malcolm: spelling</p>
<hr />
<div>== About ==<br />
<br />
The Haskell Hackathon is an international, grassroots collaborative coding festival with a simple focus: build and improve Haskell libraries, tools, and infrastructure.<br />
<br />
BelHac will be held in November in "The Therminal" in Ghent, Belgium. It is open to all -- you do not have to be a Haskell guru to attend. All you need is a basic knowledge of Haskell, a willingness to learn, and a project you're excited to help with (or a project of your own to work on).<br />
<br />
There will be lots of hacking, good beer, and, of course, fun! <br />
<br />
* Mailing list: [http://www.haskell.org/mailman/listinfo/hackathon hackathon@haskell.org]<br />
* IRC channel: #ghentfpg on FreeNode<br />
<br />
You can [[/Register|register here]].<br />
<br />
== News ==<br />
<br />
* July 29: Added a [[/Projects|projects page]]<br />
* July 20: [[/Register|Registration]] is now open!<br />
<br />
== When ==<br />
<br />
* Friday, 5th of November: 2pm - 7pm<br />
* Saturday, 6th of November: 10am - 6pm<br />
* Sunday, 7th of November: 10am - 6pm<br />
<br />
=== Program ===<br />
<br />
* Friday: short introduction, followed by hacking and sponsored food. There will also be a "Real World Haskell Crash Course" for unexperienced but interested people.<br />
* Saturday: Hacking!<br />
* Sunday: More hacking, and in the afternoon we will have a couple of (lightning) talks.<br />
<br />
If you'd like to work on a specific project, please consider adding it to the [[/Projects|projects page]] if it is not on there already. Otherwise, add yourself to the list of people who will hack on said project. <br />
<br />
== Getting there ==<br />
<br />
=== Getting to Ghent ===<br />
<br />
The nearest airport is the Brussels Airport in Zaventem (code: BRU). The train station connected to this airport has an excellent connection with Ghent (Gent in Dutch). The train schedule is pretty regular and should be more or less the same through the entire day after 9:00 AM -- pending accidents, delays, etc. So just replace the 'hour' of the ride with the hour at which you'll arrive at the train station and you're set. For example, for train reaching Ghent prior to 10AM, the schedule looks as follows.<br />
<br />
{| class="wikitable"<br />
! Time of departure<br />
! Time of arrival<br />
! Change trains at<br />
|-<br />
| 7:27 (dir. Nijvel)<br />
| 8:36<br />
| Brussel-Noord (dir. Oostende)<br />
|- <br />
| 7:52 (dir. De Panne)<br />
| 8:45<br />
|<br />
|-<br />
| 8:10 (dir. Gent, stops everywhere!)<br />
| 9:35<br />
| Brussel-Noord (dir. St.-Niklaas); Dendermonde (dir. Brugge)<br />
|-<br />
| 8:36 (dir. Quevy)<br />
| 9:36 <br />
| Brussel-Noord (dir. Oostende)<br />
|- <br />
| 8:52 (dir. De Panne)<br />
| 9:45<br />
|<br />
|}<br />
<br />
Basically, unless the train leaving at the airport is an IC or IR type connected to Ghent and beyond, you are best of when changing trains in Brussels (station Brussel-Noord (North)). There you are best off taking the IC train to either Oostende or Knokke/Blankenberge. In both cases, Ghent St.-Pieters is the first stop after Brussel-Zuid (South) or Bruxelles-Midi (in French), i.e., the third stop if you change train at Brussel-Noord. <br />
<br />
=== Getting to The Therminal ===<br />
<br />
The address of The Therminal is<br />
<br />
Hoveniersberg 24<br />
9000 Gent<br />
Belgium<br />
<br />
Here is [http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=24+Hoveniersberg,+Gent,+Vlaams+Gewest,+Belgi%C3%AB&sll=37.0625,-95.677068&sspn=38.22949,78.662109&ie=UTF8&hq=&hnear=Hoveniersberg+24,+Gent+9000+Gent,+Oost-Vlaanderen,+Vlaams+Gewest,+Belgium&t=h&z=16 a map]<br />
<br />
== Food ==<br />
<br />
Here is a [http://maps.google.com/maps/ms?hl=en&ie=UTF8&msa=0&msid=103149869785604317946.00048bcfacdc6e03545df&t=h&z=14 map of handy locations].<br />
<br />
== Accommodation ==<br />
<br />
Since Ghent is quite a tourist city, you should have no problems finding a place to stay.<br />
<br />
Some pointers:<br />
* [http://www.vjh.be/jeugdherbergen/gent/ De Draecke], a youth hostel in the center of Ghent.<br />
* [http://www.ibishotel.com/gb/hotel-0961-ibis-gent-centrum-st-baafs-kathedraal/index.shtml IBIS St.-Baafs], a 2-star hotel in the center of Ghent.<br />
* [http://www.ibishotel.com/gb/hotel-1455-ibis-gent-centrum-opera/location.shtml IBIS Opera], a 2-star hotel in the center of Ghent.<br />
* [http://book.bestwestern.com/bestwestern/productInfo.do?propertyCode=92615 Best Western Chamade], a 3-star hotel near Ghent St.-Pieters train station.<br />
* [http://www.monasterium.be/ Monasterium hotel], a 3-star hotel in the center of Ghent, in a fully refurbished building dating back to 1278. <br />
* [http://www.nh-hotels.com/nh/en/hotels/belgium/ghent/nh-gent-belfort.html NH Gent Belfort], a 4-star hotel in the center of Ghent.<br />
* [http://www.marriott.com/hotels/travel/gnemc-ghent-marriott-hotel/ Ghent Marriott], a 4-star hotel in the center of Ghent.<br />
* [http://www.visitgent.be/eCache/VGG/3/114.dmdfbGFuZz1FTg.html Visit Ghent], the Ghent tourist board.<br />
<br />
== What to bring ==<br />
<br />
* A laptop with a wireless card. Ethernet access might be available, but don't count on it. If you really need ethernet access, contact the organizers.<br />
* There is a projector available if someone wants to give a talk.<br />
<br />
== Sponsors ==<br />
<br />
[[Image:Well-typed.png]]<br />
<br />
BelHac is sponsored by [http://well-typed.com Well-Typed, The Haskell Consultants].<br />
<br />
We're still looking for sponsors to help us provide food, drinks and t-shirts. If you or your company are interested in sponsoring, please contact one of the organizers.<br />
<br />
== Organizers & Contact ==<br />
<br />
The GhentFPG organizing committee is behind this Hackaton. You can contact us at<br />
<br />
* Jasper Van der Jeugt (irc: jaspervdj, email: jaspervdj+belhac@gmail.com, phone: +32-476-26-28-27)</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell_in_industry&diff=34916Haskell in industry2010-06-08T07:43:22Z<p>Malcolm: how many lawnmower manufacturers use Haskell? Only one (afaik)</p>
<hr />
<div>__NOTOC__<br />
<br />
Haskell has a diverse range of use commercially, from aerospace and defense, to finance, to web startups, hardware design firms and a lawnmower manufacturer. This page collects resources on the industrial use of Haskell.<br />
<br />
[http://industry.haskell.org/ http://industry.haskell.org/ihg-logo.png]<br />
<br />
In February 2009 the [http://industry.haskell.org/ Industrial Haskell Group] was launched to support the needs of commercial users of the Haskell programming language. Phase 2 of the effort, expanding membership to research groups and startups with smaller budgets, was [http://www.haskell.org/pipermail/haskell/2009-November/021734.html launched in November 2009]<br />
<br />
The main user conference for industrial Haskell use is CUFP - the [http://cufp.org/ Commercial Users of Functional Programming Workshop]. The annual conference is coming up in October 2010.<br />
<br />
== Industrial Haskell: 2009 status report ==<br />
<br />
===Industrial Haskell Group===<br />
<br />
For the first time, in 2009, a consortium of companies came together to fund continued development of Haskell and its toolchain. The result is the [http://industry.haskell.org IHG], [http://www.haskell.org/pipermail/haskell/2009-March/021060.html launched] earlier in the year. The initial round of funding resulted in [http://industry.haskell.org/status several improvements to the ecosystem.] The group is seeking to [http://industry.haskell.org/join expand membership in 2010] to further consolidate the commercial strength Haskell. The [http://www.vimeo.com/6697688 Birth of the IHG] was presented at the &quot;[http://cufp.galois.com/ Commercial Users of Functional Programming]&quot; workshop.<br />
<br />
===CUFP===<br />
<br />
2009's [http://cufp.org Commercial Users of Functional Programming] workshop was held in Edinburgh, and included talks on:<br />
<br />
* [http://www.vimeo.com/6703480 Real World Haskell];<br />
* [http://www.vimeo.com/6703480 Teleconferencing on maps in Haskell];<br />
* [http://www.vimeo.com/6699769 Functional Programming at Facebook].<br />
<br />
Next year's CUFP will be held in Baltimore.<br />
<br />
===Industrial reports===<br />
<br />
A number of experience reports on the use of Haskell were presented in 2009:<br />
<br />
* As part of [http://galois.com Galois]' 10th birthday, Don Stewart presented a talk at the [http://www.londonhug.net/ LondonHUG] on [http://www.galois.com/blog/2009/04/27/engineering-large-projects-in-haskell-a-decade-of-fp-at-galois/ Engineering Large Projects in Haskell], celebrating a decade of use of Haskell by Galois.<br />
* [http://www.typlab.com/ TypLAB], a new startup [http://blog.typlab.com/2009/09/why-we-use-haskell/ talked about why they use Haskell].<br />
* Facebook released its [http://github.com/facebook/lex-pass/tree/master lex-pass tool to automate changes to a PHP codebase, by writing abstract-syntax-tree transformers in Haskell]; and <br />
* [http://www.starling-software.com/en/ Starling Software] described [http://www.starling-software.com/misc/icfp-2009-cjs.pdf building a real time financial trading system in Haskell] :: PDF.<br />
* Tom Hawkin's [http://hackage.haskell.org/package/atom/ Atom EDSL] for control systems [http://www.haskell.org/pipermail/haskell-cafe/2009-July/064775.html went into production use] in trucks and buses, and is [http://www.haskell.org/pipermail/haskell-cafe/2009-December/070558.html starting to be used] on a NASA runtime monitoring project.<br />
* The [http://www.cryptol.net Cryptol] release got [http://developers.slashdot.org/article.pl?sid=08/12/26/1725208 slashdotted].<br />
* [http://blog.tupil.com/building-commercial-haskell-applications/ Tupil.com] talked about their experiences building commercial web apps in Haskell.<br />
<br />
== Haskell in Industry ==<br />
<br />
Many companies have used Haskell for a range of projects, including:<br />
<br />
* [http://cufp.galois.com/2007/abstracts.html#CyrilSchmidt ABN AMRO] Amsterdam, The Netherlands<br />
<blockquote><br />
ABN AMRO is an international bank headquartered in Amsterdam. For its<br />
investment banking activities it needs to measure the counterparty risk<br />
on portfolios of financial derivatives. </blockquote><br />
::ABN AMRO's [http://cufp.galois.com/2007/abstracts.html#CyrilSchmidt CUFP talk].<br />
<br />
* [http://www.aetion.com/ Aetion Technologies LLC] Columbus, Ohio<br />
<blockquote><br />
Aetion is a defense contractor whose applications use artificial intelligence.<br />
Rapidly changing priorities make it important to minimize the code impact of<br />
changes, which suits Haskell well. Aetion has developed three main projects in<br />
Haskell, all successful. Haskell's concise code was perhaps most important for<br />
rewriting: it made it practicable to throw away old code occasionally. DSELs<br />
allowed the AI to be specified very declaratively. <br />
</blockquote><br />
::Aetion's [http://cufp.galois.com/2006/slides/GaryMorris.pdf CUFP talk].<br />
<br />
* [http://www.amgen.com/ Amgen] Thousand Oaks, California<br />
<blockquote><br />
Amgen is a human therapeutics company in the biotechnology industry. Amgen pioneered the development of novel products based on advances in recombinant DNA and molecular biology and launched the biotechnology industry’s first blockbuster medicines.<br />
<br />
Amgen uses Haskell;<br />
<br />
* To rapidly build software to implement mathematical models and other complex, mathematically oriented applications<br />
* Provide a more mathematically rigorous validation of software<br />
* To break developers out of their software development rut by giving them a new way to think about software.<br />
</blockquote><br />
::Amgen's [http://cufp.galois.com/2008/abstracts.html#BalabanDavid CUFP talk].<br />
<br />
* [http://www.ansemond.com/ Ansemond LLC]<br />
<blockquote><br />
"Find It! Keep It! is a Mac Web Browser that lets you keep the pages you<br />
visit in a database. A list of these pages is shown in the 'database<br />
view'. "<br />
</blockquote><br />
<br />
* [http://antiope.com/ Antiope] Fair Haven, New Jersey<br />
<blockquote><br />
Antiope Associates provides custom solutions for wireless communication<br />
and networking problems. Our team has expertise in all aspects of<br />
wireless system design, from the physical and protocol layers to complex<br />
networked applications. Antiope Associates's relies on a number of<br />
advanced techniques to ensure that the communication systems we design<br />
are reliable and free from error. We use custom simulation tools<br />
developed in Haskell, to model our hardware designs..<br />
</blockquote><br />
::Antiope's [http://cufp.galois.com/2008/slides/WrightGregory.pdf CUFP talk].<br />
<br />
* [http://www.att.com AT&amp;T]<br />
<blockquote><br />
Haskell is being used in the Network Security division to automate processing of internet abuse complaints. Haskell has allowed us to easily meet very tight deadlines with reliable results.<br />
</blockquote><br />
<br />
* [http://www.anygma.com/ Anygma] Antwerp, Belgium<br />
<blockquote><br />
Anygma is a startup company focusing on generating easy-to-use tools for<br />
creating audio-visual 2D/3D content, in the area of entertainment,<br />
media, corporate communication and the internet. The company is closely<br />
related to [http://www.nazooka.com/ Nazooka], a niche player in the<br />
media industry, specialized in creating cross media concepts and<br />
communication solutions. Anygma is using Haskell to quickly build a<br />
prototype of its new content creation platform, targeted towards artists<br />
and designers. </blockquote><br />
<br />
* [http://www.baml.com/ Bank of America Merril Lynch]<br />
<blockquote>Haskell is being used for backend data transformation and loading.</blockquote><br />
<br />
* [http://www.haskell.org/communities/12-2007/html/report.html#sect7.1.2 Barclays Capital Quantitative Analytics Group]<br />
<blockquote><br />
Barclays Capital's Quantitative Analytics group is using Haskell to<br />
develop an embedded domain-specific functional language (called FPF)<br />
which is used to specify exotic equity derivatives. These derivatives,<br />
which are naturally best described in terms of mathematical functions,<br />
and constructed compositionally, map well to being expressed in an<br />
embedded functional language. This language is now regularly being used<br />
by people who had no previous functional language experience.<br />
</blockquote><br />
::[http://lambda-the-ultimate.org/node/3331 Simon Frankau et al's JFP paper on their use of Haskell]<br />
<br />
* [http://www.bcode.com/ bCODE Pty Ltd] Sydney Australia<br />
<blockquote><br />
bCode Pty Ltd is a small venture capital-funded startup using Ocaml and a bit of Haskell in Sydney Australia.<br />
</blockquote><br />
<br />
* [http://www.bluespec.com/ Bluespec, Inc.] Waltham, Massachusetts<br />
<br />
<blockquote><br />
Developing a modern integrated circuit (ASIC or FPGA) is an enormously<br />
expensive process involving specification, modeling (to choose and fix the<br />
architecture), design (to describe what will become silicon) and verification<br />
(to ensure that it meets the specs), all before actually committing anything to<br />
silicon (where the cost of a failure can be tens of millions of dollars).<br />
Bluespec, Inc. is a three year-old company that provides language facilities,<br />
methodologies, and tools for this purpose, within the framework of the IEEE<br />
standard languages SystemVerilog and SystemC, but borrowing ideas heavily from<br />
Term Rewriting Systems and functional programming languages like Haskell. In<br />
this talk, after a brief technical overview to set the context, we will<br />
describe our tactics and strategies, and the challenges we face, in introducing<br />
declarative programming ideas into this field, both externally (convincing<br />
customers about the value of these ideas) and internally (using Haskell for our<br />
tool implementation). <br />
</blockquote><br />
<br />
::Bluespec's [http://cufp.galois.com/2006/abstracts.html#RishiyurNikhil CUFP talk].<br />
<br />
* [http://www.circos.com Circos Brand Karma] Singapore<br />
<blockquote><br />
Brand Karma provides services to brand owners to measure online sentiments towards their brands.<br />
Haskell is used in building parts of the product, specifically for back-end job scheduling and brand matching.<br />
</blockquote><br />
<br />
* [http://www.credit-suisse.com/ Credit Suisse Global Modelling and Analytics Group] London, UK; New York City, New York<br />
<br />
<blockquote><br />
GMAG, the quantitative modelling group at Credit Suisse, has been using Haskell<br />
for various projects since the beginning of 2006, with the twin aims of<br />
improving the productivity of modellers and making it easier for other people<br />
within the bank to use GMAG models. Current projects include: Further work on<br />
tools for checking, manipulating and transforming spreadsheets; a<br />
domain-specific language embedded in Haskell for implementing reusable<br />
components that can be compiled into various target forms (see the video presentation: [http://www.londonhug.net/2008/08/11/video-paradise-a-dsel-for-derivatives-pricing/ Paradise, a DSEL for Derivatives Pricing]).<br />
</blockquote><br />
<br />
::Credit Suisse's [http://cufp.galois.com/2006/abstracts.html#HowardMansell CUFP talk].<br />
<br />
* [http://www.db.com/ Deutsche Bank Equity Proprietary Trading, Directional Credit Trading]<br />
<br />
<blockquote><br />
The Directional Credit Trading group uses Haskell as the primary<br />
implementation language for all its software infrastructure.<br />
</blockquote><br />
<br />
::Deutsche Bank's [http://cufp.galois.com/2008/abstracts.html#PolakowJeff CUFP talk].<br />
<br />
* [http://article.gmane.org/gmane.comp.lang.haskell.cafe/37093 Eaton] Cleveland, Ohio<br />
<br />
<blockquote><br />
Design and verification of hydraulic hybrid vehicle systems<br />
</blockquote><br />
<br />
::Eaton's [http://cufp.galois.com/2008/abstracts.html#HawkinsTom CUFP talk]<br />
::Eaton's [http://www.haskell.org/pipermail/haskell-cafe/2009-April/060602.html experiences using a Haskell DSL]<br />
<br />
* [Ericsson AB]<br />
<blockquote><br />
Ericsson uses Haskell for the implementation of Feldspar, an EDSL for digital signal processing algorithms.<br />
</blockquote><br />
<br />
::Ericsson's [http://hackage.haskell.org/package/feldspar-compiler Feldspar compiler]<br />
<br />
* [http://facebook.com Facebook]<br />
<br />
<blockquote><br />
Facebook uses some Haskell internally for tools. [http://github.com/facebook/lex-pass/tree/master lex-pass] is a tool for programmatically manipulating a PHP code base via Haskell.<br />
</blockquote><br />
<br />
:: Facebook's [http://cufp.galois.com/2009/abstracts.html#ChristopherPiroEugeneLetuchy CUFP talk]<br />
<br />
* [http://www.factisresearch.com/ Factis Research]<br />
<blockquote><br />
actis research, located in Freiburg, Germany, develops reliable and user-friendly mobile solutions. Our client software runs under J2ME, Symbian, iPhone OS, Android, and Blackberry. The server components are implemented in Python and Haskell. We are actively using Haskell for a number of projects, most of which are released under an open-source license.<br />
</blockquote><br />
<br />
:: Factis' [http://haskell.org/communities/05-2010/html/report.html#factisresearch HCAR submission]<br />
<br />
* [http://www.haskell.org/pipermail/haskell-cafe/2008-September/047168.html Gamr7] http://gamr7.com/ Lyon, France<br />
<br />
<blockquote><br />
Gamr7 is a startup focused on procedural city generation for the game<br />
and simulation market. <br />
</blockquote><br />
<br />
* [http://www.galois.com/ Galois, Inc] Portland, Oregon<br />
<br />
<blockquote><br />
Galois designs and develops high confidence software for critical applications.<br />
Our innovative approach to software development provides high levels of<br />
assurance, yet its scalability enables us to address the most complex problems.<br />
We have successfully engineered projects under contract for corporations and<br />
government clients in the demanding application areas of security, information<br />
assurance and cryptography. <br />
</blockquote><br />
<br />
::Galois' [http://cufp.galois.com/2007/abstracts.html#JohnLaunchbury CUFP talk]<br />
::Galois' [http://www.galois.com/blog/2009/04/27/engineering-large-projects-in-haskell-a-decade-of-fp-at-galois/ retrospective on 10 years of industrial Haskell use]<br />
<br />
* [http://glyde.com/ Glyde]<br />
<br />
<blockquote><br />
Glyde uses OCaml and Haskell for a few projects. Glyde uses Haskell for our client-side template source-to-source translator, which converts HAML-like view templates into JS code.<br />
</blockquote><br />
<br />
* [http://article.gmane.org/gmane.comp.lang.haskell.cafe/21951 HAppS LLC]<br />
<br />
<blockquote><br />
Open web development company. Now merged with [http://happstack.com/ happstack]<br />
</blockquote><br />
<br />
* [http://hustlerturf.com Hustler Turf Equipment] Hesston, Kansas<br />
<blockquote><br />
Designs, builds, and sells lawn mowers. We use quite a bit of Haskell, especially as a "glue language" for tying together data from different manufacturing-related systems. We also use it for some web apps that are deployed to our dealer network. There are also some uses for it doing sysadmin<br />
automation, such as adding/removing people from LDAP servers and the like<br />
</blockquote><br />
<br />
* [http://iba-cg.de/haskell.html iba Consulting Gesellschaft] - Intelligent business architecture for you. Leipzig, Germany<br />
<br />
<blockquote><br />
iba CG develops software for large companies: <br />
* risk analysis and reporting solution for power supply company; <br />
* contract management, assert management, booking and budgeting software for one of the worldwide leading accounting firm.<br />
</blockquote><br />
<br />
* [http://www.ics-ag.de/ Informatik Consulting Systems AG]<br />
<br />
<blockquote><br />
ICS AG developed a simulation and testing tool which based on a DSL (Domain Specific Language). The DSL is used for the description of architecture and behavior of distributed system components (event/message based, reactive). The compiler was written in Haskell (with target language Ada). The test system is used in some industrial projects.<br />
</blockquote><br />
<br />
* [http://www.ivu.de/uk/products/public-transport/ IVU Traffic Technologies AG]<br />
<blockquote><br />
The rostering group at IVU Traffic Technologies AG has been using Haskell to check rosters for compliance with EC regulations.<br />
<br />
Our implementation is based on an embedded DSL to combine the regulation’s single rules into a solver that not only decides on instances but, in the case of a faulty roster, finds an interpretation of the roster that is “favorable” in the sense that the error messages it entails are “helpful” in leading the dispatcher to the resolution of the issue at hand.<br />
<br />
The solver is both reliable (due to strong static typing and referential transparency — we have not experienced a failure in three years) and efficient (due to constraint propagation, a custom search strategy, and lazy evaluation).<br />
<br />
Our EC 561/2006 component is part of the IVU.crew software suite and as such is in wide-spread use all over Europe, both in planning and dispatch. So the next time you enter a regional bus, chances are that the driver’s roster was checked by Haskell.<br />
</blockquote><br />
<br />
* [http://www.janrain.com JanRain]<br />
<blockquote><br />
JanRain uses Haskell for network and web software.<br />
</blockquote><br />
<br />
* [http://www.linspire.com/ Linspire]<br />
<br />
<blockquote><br />
Linspire, Inc. has used functional programming since its inception in 2001,<br />
beginning with extensive use of O'Caml, with a steady shift to Haskell as its<br />
implementations and libraries have matured. Hardware detection, software<br />
packaging and CGI web page generation are all areas where we have used<br />
functional programming extensively. Haskell's feature set lets us replace much<br />
of our use of little languages (e.g., bash or awk) and two-level languages (C<br />
or C++ bound to an interpreted language), allowing for faster development,<br />
better code sharing and ultimately faster implementations. Above all, we value<br />
static type checking for minimizing runtime errors in applications that run in<br />
unknown environments and for wrapping legacy programs in strongly typed<br />
functions to ensure that we pass valid arguments. <br />
</blockquote><br />
<br />
::Linspire's [http://cufp.galois.com/2006/abstracts.html#CliffordBeshers CUFP talk]<br />
<br />
* [http://www.mitre.org/ MITRE]<br />
<blockquote><br />
MITRE uses Haskell for, amongst other things, the [http://hackage.haskell.org/package/cpsa analysis of cryptographic protocols].<br />
</blockquote><br />
<br />
* [http://ertos.nicta.com.au/research/sel4/ NICTA]<br />
<blockquote><br />
NICTA has used Haskell as part of a project to verify the L4 microkernel.<br />
</blockquote><br />
::[http://www.drdobbs.com/embedded/222400553 Read the Dr. Dobbs article on using Haskell and formal methods to verify a kernel]<br />
<br />
* [http://blog.openomy.com/2008/01/case-study-using-haskell-and-happs-for.html Openomy]<br />
<br />
<blockquote><br />
Openomy's API v2.0 is developed in Haskell, using the<br />
[http://www.happs.org/ HAppS] web platform.<br />
</blockquote><br />
<br />
* [http://www.oblomov.com Oblomov]<br />
<br />
<blockquote><br />
Oblomov Systems is a one-person software company based in Utrecht, The Netherlands. Founded in 2009, Oblomov has since then been working on a number of Haskell-related projects. The main focus lies on web-applications and (web-based) editors. Haskell has turned out to be extremely useful for implementing web servers that communicate with JavaScript clients or iPhone apps.<br />
</blockquote><br />
<br />
:: [http://haskell.org/communities/05-2010/html/report.html#oblomov Oblomov's HCAR submission].<br />
<br />
* [http://www.patch-tag.com Patch-Tag: hosting for darcs]<br />
<blockquote><br />
Need somewhere to put your darcs code? Try us.<br />
<br />
Patch-Tag is built with [http://happstack.com happstack], the continuation of the project formerly known as HAppS.<br />
</blockquote><br />
<br />
* [http://www.peerium.com Peerium, Inc] Cambridge, Massachusetts<br />
<blockquote><br />
At Peerium, we're striving to bring a new level of quality and efficiency to online communication and collaboration within virtual communities, social networks, and business environments. We believe that a new environment that supports the effortless sharing of both information and software will enable a level of online cooperation far beyond current Web-based technologies -- modern programming techniques will enable the creation of more robust and more powerful programs within these environments. To this end, we're building a new software platform for direct, real-time communication and collaboration within graphically rich environments. Peerium is located in the heart of Harvard Square in Cambridge, Massachusetts.<br />
</blockquote><br />
<br />
* [http://www.qualcomm.com/ Qualcomm, Inc]<br />
<br />
<blockquote><br />
Qualcomm uses Haskell to generate Lua bindings to the BREW platform <br />
</blockquote><br />
<br />
* [http://www.renci.org/ Renaissaince Computing Institute], Chapel Hill, North Carolina<br />
<blockquote><br />
The Renaissance Computing Institute (RENCI), a multi-institutional organization, brings together multidisciplinary experts and advanced technological capabilities to address pressing research issues and to find solutions to complex problems that affect the quality of life in North Carolina, our nation and the world.<br />
<br />
Research scientists at RENCI have used Haskell for a number of projects, including [http://vis.renci.org/jeff/2009/08/26/open-sourcing-the-big-board/ The Big Board].<br />
</blockquote><br />
<br />
::RENCI's [http://cufp.galois.com/2009/abstracts.html#JeffersonHeard CUFP talk].<br />
<br />
* [http://www.signalicorp.com/index.htm Signali] Portland, Oregon<br />
<br />
<blockquote><br />
Signali Corp is a new custom hardware design company. Our chief products<br />
are custom IP cores targeted for embedded DSP and cryptographic<br />
applications. Our specialty is the design and implementation of<br />
computationally intensive, complex algorithms. The interfaces to each<br />
core are modular and can be very efficiently modified for your specific<br />
application. System-level integration and validation is crucial and is<br />
the majority of investment in a product.<br />
</blockquote><br />
<br />
* [http://www.standardchartered.com/home/en/index.html Standard Chartered]<br />
<br />
<blockquote><br />
Standard Chartered has a group using Haskell in finance.<br />
</blockquote><br />
<br />
* [http://seereason.org/ SeeReason Partners, LLC]<br />
<br />
<blockquote><br />
Clifford Beshers, David Fox and Jeremy Shaw have formed SeeReason<br />
Partners, LLC. Our plan is to deliver services over the internet, using<br />
Haskell to build our applications whenever possible. We have chosen<br />
primary mathematics skills as our domain, seeking to create a social<br />
networking site with games and activities that are both fun and<br />
educational.<br />
</blockquote><br />
<br />
* [http://www.starling-software.com/en/index.html Starling Software] Tokyo, Japan<br />
<blockquote><br />
Starling Software are developing a commercial automated options trading system <br />
in Haskell, and are migrating other parts of their software suite to<br />
Haskell.<br />
</blockquote><br />
<br />
::Starling Software's [http://www.starling-software.com/misc/icfp-2009-cjs.pdf experience building real time trading systems in Haskell] <br />
<br />
* [http://tsurucapital.com Tsuru Capital] Tokyo, Japan<br />
<blockquote><br />
Tsuru Capital is operating an automated options trading system written in Haskell.<br />
</blockquote><br />
<br />
::[http://haskell.org/communities/05-2010/html/report.html#sect7.6 Tsuru Capital's HCAR submission]<br />
<br />
* [http://tupil.com/ Tupil] Utrecht, The Netherlands<br />
<br />
<blockquote><br />
Tupil is a Dutch company that builds software for clients, written in Haskell. Tupil uses Haskell for the speed in development and resulting software quality. The company is founded by Chris Eidhof and Eelco Lempsink.<br />
</blockquote><br />
<br />
:: Tupil's experience building [http://blog.tupil.com/building-commercial-haskell-applications/ commercial web apps in Haskell]<br />
<br />
* [http://typlab.com TypLAB] Amsterdam, The Netherlands<br />
<br />
<blockquote><br />
TypLAB investigates and develops new ways of creating and consuming online content.<br />
</blockquote><br />
<br />
:: TypLAB's blog on [http://blog.typlab.com/2009/09/why-we-use-haskell/ why they use Haskell]<br />
<br />
* [http://www.sensor-sense.nl Sensor Sense] Nijmegen, The Netherlands<br />
<br />
<blockquote><br />
Sensor Sense is offering high technology systems for gas measurements in the ''ppbv'' down to ''pptv'' range. We use Haskell for the embedded control software of our trace gas detectors.<br />
</blockquote><br />
<br />
If you're using Haskell commercially, please add your details here.<br />
<br />
== The Industrial Haskell Group ==<br />
<br />
The [http://industry.haskell.org/ Industrial Haskell Group (IHG)] is an organisation to support the needs of commercial users of the Haskell programming language. <br />
<br />
== Jobs and recruitment ==<br />
<br />
[[Jobs|Haskell jobs]].<br />
<br />
See also the [http://www.jobs-in-fp.org/ Jobs in Functional Programming] event.<br />
<br />
== Consultants ==<br />
<br />
[[Consultants]]<br />
<br />
== Commercial Users of Functional Programming Workshop ==<br />
<br />
[http://www.galois.com/cufp/ Commercial Users of Functional Programming]<br />
<br />
The goal of [http://www.galois.com/cufp/ CUFP] is to build a community<br />
for users of functional programming languages and technology, be they<br />
using functional languages in their professional lives, in an open<br />
source project (other than implementation of functional languages), as a<br />
hobby, or any combination thereof. In short: anyone who uses functional<br />
programming as a means, but not an end.<br />
<br />
[[Category:Community]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=TypeDirectedNameResolution&diff=31637TypeDirectedNameResolution2009-11-18T03:00:49Z<p>Malcolm: </p>
<hr />
<div>= Type directed name resolution =<br />
<br />
This publicly editable page is a place to summarise comments on the Haskell Prime proposal for Type Directed Name Resolution (TDNR).<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution TDNR proposal]<br />
<br />
= Straw poll =<br />
<br />
It's hard to gauge how much people like proposals like this, so let's try the experiment of collecting votes here:<br />
<br />
Names of people who would positively like to see TDNR happen (say briefly why)<br />
* Simon PJ (I wrote the proposal)<br />
* Daniel Fischer (I think it would be an improvement to the language. I have not much missed it yet, so I don't feel strongly about it, though.)<br />
* Levi Greenspan (The current module-scoped record selectors represent a major burden when defining many records with similar selectors, for example the "channel" property in Bayeux protocol messages. See [http://www.haskell.org/pipermail/haskell-cafe/2009-May/061879.html "How to implement this? ..."] for details. Currently only type classes can be used as a workaround but only with lots of boilerplate code consisting of instance definitions. TDNR would be of great help.)<br />
<br />
Names of people who think that on balance it's a bad idea<br />
* Ganesh Sittampalam (see http://thread.gmane.org/gmane.comp.lang.haskell.cafe/61723 ; I think that having constraints you can't quantify over is a bad idea. However if that is fixable I'd be generally in favour.)<br />
* Malcolm Wallace. (I see the attraction of the idea, but find the use of '.' highly confusing. If there are spaces around the dot, it is normal functional composition, if no spaces, then it is almost like composition in the opposite direction. Also, there seem to be lots of special cases based on what is easier to implement - the design does not seem sufficiently orthogonal and clear-cut. There is a new form of lightweight overloading hiding here, but it is struggling to fight its way out of a tangle of syntactic issues.)<br />
<br />
= Other comments =<br />
<br />
* A lot of people have commented that using <hask>.</hask> for this as well as composition and qualification is going to start getting confusing. One alternative suggestion was <hask>-></hask> but this would conflict with case branches and lambda syntax. Similar things like <hask>~></hask> or <hask>--></hask> could work too, but look a little uglier.<br />
<br />
However, I think a little ugly is preferable to confusing or conflicting with syntax. I ''think'' using '.' won't be too confusing (we all separate the composition operator from the functions by a space anyway, don't we?), so I'd go with that. But rater than letting it die over '.'-ambiguity, I'd choose a different notation (would <hask>a#f</hask> be an option?).[[User:Daniel.is.fischer|Daniel.is.fischer]] 21:06, 17 November 2009 (UTC)<br />
<br />
No, I often use composition now without surrounding spaces.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Spreadsheet&diff=31515Spreadsheet2009-11-11T08:47:34Z<p>Malcolm: add bytestring-csv</p>
<hr />
<div>It's a common task to exchange spreadsheet data in comma-separated-value files (CSV).<br />
There are various (small) projects for this task:<br />
<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/spreadsheet spreadsheet] package for reading and writing CSV files lazily<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/csv csv] package for reading and writing CSV files in a strict way<br />
* [http://hackage.haskell.org/package/bytestring-csv bytestring-csv] package for reading and writing CSV files (also strict)<br />
* http://www.xoltar.org/languages/haskell.html, http://www.xoltar.org/languages/haskell/CSV.hs : Reading CSV files in a strict way<br />
<br />
[[Category:Libraries]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=HaskellImplementorsWorkshop&diff=30066HaskellImplementorsWorkshop2009-09-14T16:40:48Z<p>Malcolm: Add link to videos</p>
<hr />
<div>The first Haskell Implementers' Workshop is co-located with ICFP, and will be held in Edinburgh, Scotland, on September 5 2009.<br />
<br />
* [[HaskellImplementorsWorkshop/Call for Talks|Call for Talks]]<br />
* [http://www.vimeo.com/album/126462 Videos of Presentations]<br />
<br />
== Important Dates ==<br />
<br />
* Workshop: September 5 2009<br />
<br />
<br />
== Program ==<br />
<br />
9.00 : Start<br />
<br />
* '''''GHC Status Update''''' (Simon Peyton Jones)<br />
* '''''A more flexible code generator for GHC''''' (John Dias)<br />
<br />
10.00 - 10.30 : Tea/coffee <br />
<br />
* '''''Haskell Types with Added Value''''' (Conor McBride)<br />
* '''''Towards a Lightweight, Safety-preserving Haskell Compiler''''' (Tim Chevalier)<br />
* '''''Stack tracing in Haskell''''' (Bernie Pope)<br />
<br />
12.00 - 13.30 : Lunch<br />
<br />
* '''''Haskell for Everyone: Hackage and the Haskell Platform''''' (Don Stewart & Duncan Coutts)<br />
* '''''My Dream GHC Environment: A Few Things We Do Right, and Many We Do Wrong''''' (Curt Sampson)<br />
* '''''Discussion: Haskell building and packaging''''' (including an update on Cabal and cabal-install from Duncan Coutts)<br />
<br />
15.00 - 15.30 : Tea/coffee <br />
<br />
* '''''GHC on the OpenSPARC T2''''' (Ben Lippmeier)<br />
* '''''A wander through GHC's new IO Library''''' (Simon Marlow)<br />
<br />
16.30 - 16.45 : short break <br />
<br />
* '''''Implementing Data Parallel Haskell''''' (Roman Leshchinskiy)<br />
* '''''Running Haskell Array Computations on a GPU''''' (Manuel M T Chakravarty)<br />
<br />
<br />
<br />
== Organisers ==<br />
<br />
* Duncan Coutts - co-chair (Well-Typed LLP)<br />
* Atze Dijkstra (Utrecht University)<br />
* Roman Leshchinskiy (University of New South Wales)<br />
* Simon Marlow - co-chair (Microsoft Research)<br />
* Bryan O'Sullivan (Linden Lab)<br />
* Wouter Swierstra (Chalmers University of Technology)</div>Malcolmhttps://wiki.haskell.org/index.php?title=Roman_numerals&diff=28515Roman numerals2009-06-08T09:37:11Z<p>Malcolm: </p>
<hr />
<div>The system of '''Roman numerals''' is a numeral system originating in ancient Rome, and was adapted from Etruscan numerals. The system used in classical antiquity was slightly modified in the Middle Ages to produce the system we use today. It is based on certain letters which are given values as numerals.<br />
<br />
== Oneliner ==<br />
<br />
This is a nearly-completely points-freed expression which evaluates a given Roman numeral as a String to the corresponding Int. The folded function is not points-freed for ease of reading, and it would also need an `if' function which needs separate definition.<br />
<br />
<haskell><br />
import Data.Maybe (fromJust)<br />
<br />
romanToInt :: String -> Int<br />
romanToInt = fst<br />
. foldr (\p (t,s) -> if p >= s then (t+p,p) else (t-p,p)) (0,0)<br />
. map (fromJust . flip lookup (zip "IVXLCDM" [1,5,10,50,100,500,1000]))<br />
</haskell><br />
<br />
== More-than-one liner ==<br />
<br />
[http://www.cs.york.ac.uk/ftpdir/pub/haskell/contrib/Roman.hs A more explanatory program] for conversions in both directions - toRoman and fromRoman.<br />
<br />
== Roman (type-)numerals ==<br />
<br />
The function `roman' here infers the value of the Roman numeral from the type of its first argument, which in turn is left unevaluated, and returns it as an Int.<br />
<br />
<haskell><br />
{-# OPTIONS_GHC -fglasgow-exts #-}<br />
module Romans where<br />
<br />
class Roman t where<br />
roman :: t -> Int<br />
<br />
data O -- 0<br />
data I a -- 1<br />
data V a -- 5<br />
data X a -- 10<br />
data L a -- 50<br />
data C a -- 100<br />
data D a -- 500<br />
data M a -- 1000<br />
<br />
instance Roman O where roman _ = 0<br />
instance Roman (I O) where roman _ = 1<br />
instance Roman (V O) where roman _ = 5<br />
instance Roman (X O) where roman _ = 10<br />
<br />
instance Roman (I a) => Roman (I (I a)) where roman _ = roman (undefined :: (I a)) + 1<br />
instance Roman a => Roman (I (V a)) where roman _ = roman (undefined :: a) + 4<br />
instance Roman a => Roman (I (X a)) where roman _ = roman (undefined :: a) + 9<br />
<br />
instance Roman (I a) => Roman (V (I a)) where roman _ = roman (undefined :: (I a)) + 5<br />
instance Roman (V a) => Roman (V (V a)) where roman _ = roman (undefined :: (V a)) + 5<br />
<br />
instance Roman (I a) => Roman (X (I a)) where roman _ = roman (undefined :: (I a)) + 10<br />
instance Roman (V a) => Roman (X (V a)) where roman _ = roman (undefined :: (V a)) + 10<br />
instance Roman (X a) => Roman (X (X a)) where roman _ = roman (undefined :: (X a)) + 10<br />
instance Roman a => Roman (X (L a)) where roman _ = roman (undefined :: a) + 40<br />
instance Roman a => Roman (X (C a)) where roman _ = roman (undefined :: a) + 90<br />
instance Roman a => Roman (X (D a)) where roman _ = roman (undefined :: a) + 490<br />
<br />
instance Roman a => Roman (L a) where roman _ = roman (undefined :: a) + 50<br />
<br />
instance Roman (I a) => Roman (C (I a)) where roman _ = roman (undefined :: (I a)) + 100<br />
instance Roman (V a) => Roman (C (V a)) where roman _ = roman (undefined :: (V a)) + 100<br />
instance Roman (X a) => Roman (C (X a)) where roman _ = roman (undefined :: (X a)) + 100<br />
instance Roman (L a) => Roman (C (L a)) where roman _ = roman (undefined :: (L a)) + 100<br />
instance Roman (C a) => Roman (C (C a)) where roman _ = roman (undefined :: (C a)) + 100<br />
instance Roman a => Roman (C (D a)) where roman _ = roman (undefined :: a) + 400<br />
instance Roman a => Roman (C (M a)) where roman _ = roman (undefined :: a) + 900<br />
<br />
instance Roman a => Roman (D a) where roman _ = roman (undefined :: a) + 500<br />
<br />
instance Roman a => Roman (M a) where roman _ = roman (undefined :: a) + 1000<br />
<br />
-- Example type: XVI ~> X (V (I O)); MCMXCIX ~> M (C (M (X (C (I (X O))))))<br />
<br />
powersoftwo = [roman (undefined :: (I (I O))),<br />
roman (undefined :: (I (V O))),<br />
roman (undefined :: (V (I (I (I O))))),<br />
roman (undefined :: (X (V (I O)))),<br />
roman (undefined :: (X (X (X (I (I O)))))),<br />
roman (undefined :: (L (X (I (V O))))),<br />
roman (undefined :: (C (X (X (V (I (I (I O)))))))),<br />
roman (undefined :: (C (C (L (V (I O)))))),<br />
roman (undefined :: (D (X (I (I O))))),<br />
roman (undefined :: (M (X (X (I (V O)))))),<br />
roman (undefined :: (M (M (X (L (V (I (I (I O)))))))))]<br />
</haskell><br />
<br />
== With data constructors ==<br />
<br />
I think there is also some simpler solution using<br />
<haskell><br />
data RomanDigit a =<br />
O -- 0<br />
| I a -- 1<br />
| V a -- 5<br />
| X a -- 10<br />
| L a -- 50<br />
| C a -- 100<br />
| D a -- 500<br />
| M a -- 1000<br />
</haskell><br />
if not only an enumeration of digits which can be used in a regular list.<br />
<br />
<br />
[[Category:Idioms]]<br />
[[Category:Mathematics]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Template:Main/About&diff=27832Template:Main/About2009-04-22T09:38:11Z<p>Malcolm: </p>
<hr />
<div>{|<br />
|-<br />
|'''[http://haskell.org/ghc/download_ghc_6_10_1.html Download GHC Haskell]'''<br />
|-<br />
|'''[http://hackage.haskell.org/packages/archive/pkg-list.html Find A Library]'''<br />
|-<br />
|'''[http://www.google.com/custom?hl=en&safe=off&client=google-coop-np&cof=AH%3Aleft%3BS%3Ahttp%3A%2F%2Fhaskell.org%3BCX%3Ahaskell%3BL%3Ahttp%3A%2F%2Fhaskell.org%2Fhaskellwiki_logo_small.png%3BLH%3A57%3BLP%3A1%3BVLC%3A%23551a8b%3BGFNT%3A%23666666%3BDIV%3A%23cccccc%3B&adkw=AELymgWtRtlzIgBtP0mbtrHecJ5ha0yGsB7u4HAQZORt4w2NravQifsI1tthnvuoao3GcNRq2O1TjqB5SY-frAoMzrYgmD8AuRsS2t-dOA_e5o_NrR-2IjlR1FtWKQlHVXV128mypbGt-DVtvST1OygXE1TBGtDS9g&q=&btnG=Search&cx=015832023690232952875%3Afmx5feg3cco Search]'''<br />
|}<br />
<br />
'''About'''<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://www.google.com/cse?cx=014102838545582129901%3Anhonl7a8bw8 Search haskell.org]<br />
|-<br />
| [[Introduction|Why use Haskell?]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History of Haskell]]<br />
|-<br />
| [[Future of Haskell]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: '''[http://haskell.org/ghc/ GHC]'''<br />
: [http://haskell.org/hugs/ hugs], [http://haskell.org/nhc98/ nhc98], [http://www.cs.uu.nl/wiki/UHC UHC], [[Yhc]]<br />
: [http://repetae.net/computer/jhc/ jhc], [http://lhc.seize.it/ lhc], <br />
{|<br />
| [[Windows]] : [[OSX]] : [[GNU/Linux|Linux]] : [[BSD]]<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Quantified_contexts&diff=25831Quantified contexts2009-01-14T10:47:11Z<p>Malcolm: </p>
<hr />
<div>[[Category:Proposals]]<br />
<br />
== The problem ==<br />
The base library currently contains (essentially) the following classes:<br />
<haskell><br />
class Monoid a where<br />
mempty :: a<br />
mappend :: a -> a -> a<br />
class MonadPlus m where<br />
mzero :: m a<br />
mplus :: m a -> m a -> m a<br />
class ArrowPlus c where<br />
arrowZero :: c a b<br />
arrowPlus :: c a b -> c a b -> c a b<br />
</haskell><br />
<br />
If you look closely '''these are all the same''.<br />
The only difference is in the superclasses and in the arity of the argument.<br />
You will find that any class that is an instance of MonadPlus can be made an instance of Monoid.<br />
In fact, some types such as lists, are indeed instances of both classes.<br />
<br />
This leads to duplication of code and of extra names for what is essentially the same thing.<br />
When should you use <hask>mappend</hask> instead of <hask>mplus</hask>, and when shouldn't you?<br />
<br />
This exact same situation is also found in the <hask>Data.Typeable</hask> module, which has the classes:<br />
<haskell><br />
class Typeable a where<br />
typeOf :: a -> TypeRep<br />
class Typeable1 t where<br />
typeOf1 :: t a -> TypeRep<br />
class Typeable2 t where<br />
typeOf2 :: t a b -> TypeRep<br />
-- etc.<br />
</haskell><br />
<br />
== Chained instances ==<br />
<br />
This Typeable library comes with instances<br />
<haskell><br />
instance (Typeable2 t, Typeable a) => Typable (t a)<br />
instance (Typeable3 t, Typeable a) => Typable2 (t a)<br />
-- etc.<br />
</haskell><br />
Which means that only one instance of <hask>typeableN</hask> has to be written for a type constructor with arity n.<br />
<br />
We could do the same for <hask>Monoid</hask>.<br />
The <hask>MonadPlus</hask> and <hask>ArrowPlus</hask> classes can not be used for this purpose, because they require <hask>Monad</hask> and <hask>Arrow</hask> superclasses.<br />
But we could add <hask>Monoid1</hask>, <hask>Monoid2</hask>, etc.<br />
<haskell><br />
class Monoid2 t where<br />
mempty2 :: t a<br />
mappend2 :: t a -> t a -> t a<br />
class Monoid3 t where<br />
mempty3 :: t a b<br />
mappend3 :: t a b -> t a b -> t a b<br />
instance Monoid2 t => Monoid (t a) where<br />
mempty = mempty2<br />
mappend = mappend2<br />
</haskell><br />
<hask>MonadPlus</hask> can then be a [[Class_system_extension_proposal#Typeclass_synonyms|class alias]] or simply a subclass of both <hask>Monad</hask> and <hask>Monoid2</hask>.<br />
<haskell><br />
class (Monad m, Monoid2 m) => MonadPlus m<br />
</haskell><br />
<br />
A big disadvantage of these instances is that it is an all or nothing aproach.<br />
It is no longer possible to declare an <hask>instance Monoid (t a)</hask> directly, because it overlaps with the instance using <hask>Monoid2</hask>.<br />
Usually this is not a big problem, but it also forces the parameter of the type constructor to have kind <hask>*</hask> and there can't be constraints on it.<br />
<br />
For example there is currently an instance<br />
<haskell><br />
instance Ord k => Monoid (Map k v)<br />
</haskell><br />
This would become imposible, because the instance would need be<br />
<haskell><br />
instance Monoid2 Map -- we need Ord<br />
</haskell><br />
<br />
== Quantified contexts ==<br />
An alternative would be a small extension of the Haskell language to allow quantifiers in contexts.<br />
Where we now write<br />
<haskell><br />
function :: (Class a, Another (t a)) => Type a<br />
</haskell><br />
We would also allow<br />
<haskell><br />
function :: (forall b. Ctx => SomeClass b) => Type<br />
</haskell><br />
The meaning is simple, to satisfy this context, an instance<br />
<haskell><br />
instance Ctx => SomeClass b<br />
</haskell><br />
is needed (or a more general one).<br />
<br />
We can use these quantified contexts in the <hask>Monoid</hask> example as:<br />
<haskell><br />
class (Monad m, forall a. Monoid (m a)) => MonadPlus m<br />
</haskell><br />
or without the superflous extra class, for example<br />
<haskell><br />
guard :: (Monad m, forall a. Monoid (m a)) => Bool -> m ()<br />
</haskell><br />
<br />
The compiler will never infer a quantified context; the above type is not the most general type of guard.<br />
If you gave no type signature the compiler would infer<br />
<haskell><br />
guard :: (Monad m, Monoid (m ())) => Bool -> m ()<br />
</haskell><br />
<br />
== Response from SimonPJ ==<br />
<br />
I didn't see how Section 3<br />
addressed the issues raised in Sections 1 and 2. For example, to avoid<br />
the cascade of `Typeable2`, `Typeable3` etc classes the solution is<br />
presumably polymorphism at the kind level. (Tim Sheard's language Omega<br />
has this.)<br />
<br />
Still, I recognise the merit of quantification in contexts. Indeed, Ralf<br />
Hinze and I suggested it back in 2000 in Section 7 of<br />
[[http://research.microsoft.com/en-us/um/people/simonpj/papers/derive.htm<br />
Derivable type classes]]. (This section is rather independent of the rest<br />
of the paper.)<br />
<br />
However, attractive as it is, it's quite a big step to add something akin<br />
to local instance declarations. Our ICFP'08 paper<br />
[[http://research.microsoft.com/~simonpj/papers/assoc-types/index.htm Type<br />
checking with open type functions]] relies rather crucially on ''not''<br />
having such local instances. (We've managed to simplify the algorithm<br />
quite a bit since then, but it still relies on that assumption.)<br />
<br />
So I'm not sure I see how to make quantified contexts compatible with type<br />
functions, and all the other stuff in Haskell. But their lack is clearly<br />
a wart, and one that may become more pressing.<br />
<br />
Meanwhile, clarifying the proposal would be a good thing, even if it's not<br />
adopted right away.</div>Malcolmhttps://wiki.haskell.org/index.php?title=GHC/Data_Parallel_Haskell&diff=24475GHC/Data Parallel Haskell2008-12-02T16:19:49Z<p>Malcolm: module DotP should export dotp_wrapper</p>
<hr />
<div>[[Category:GHC|Data Parallel Haskell]]<br />
== Data Parallel Haskell ==<br />
<br />
''Data Parallel Haskell'' is the codename for an extension to the Glasgow Haskell Compiler and its libraries to support [http://www.cs.cmu.edu/~scandal/cacm/cacm2.html nested data parallelism] with a focus to utilise multicore CPUs. Nested data parallelism extends the programming model of flat data parallelism, as known from parallel Fortran dialects, to irregular parallel computations (such as divide-and-conquer algorithms) and irregular data structures (such as sparse matrices and tree structures). An introduction to nested data parallelism in Haskell, including some examples, can be found in the paper [http://www.cse.unsw.edu.au/~chak/papers/papers.html#ndp-haskell Nepal – Nested Data-Parallelism in Haskell]. <br />
<br />
__TOC__<br />
<br />
=== Project status ===<br />
<br />
A first ''technology preview'' of Data Parallel Haskell (DPH) is included in the 6.10.1 release of GHC. All major components of DPH are implemented, including code vectorisation and parallel execution on multicore systems. However, the implementation has many limitations and probably also many bugs. Major limitations include the inability to mix vectorised and non-vectorised code in a single Haskell module, the need to use a feature-deprived, special-purpose Prelude in vectorised code, and a lack of optimisations (leading to poor performance).<br />
<br />
The purpose of this technology preview is twofold. Firstly, it gives interested early adopters the opportunity to see where the project is headed and enables them to experiment with simple DPH programs. Secondly, we hope to get user feedback that helps us to guide the project and prioritise those features that our users are most interested in.<br />
<br />
'''Disclaimer:''' Data Parallel Haskell is very much '''work in progress.''' Some components are already usable, and we explain here how to use them. However, please be aware that APIs are still in flux and functionality may change during development.<br />
<br />
=== Where to get it ===<br />
<br />
Currently, we recommend to use the implementation in GHC 6.10.1. It is [http://haskell.org/ghc/download_ghc_6_10_1.html available in source and binary form] for many architectures. (Please use the version in the HEAD repository of GHC only if you are a GHC developer or a very experienced GHC user and if you know the current status of the DPH code – intermediate versions may well be broken while we implement major changes.)<br />
<br />
=== Overview ===<br />
<br />
From a user's point of view, Data Parallel Haskell adds a new data type to Haskell –namely, ''parallel arrays''– as well as operations on parallel arrays. Syntactically, parallel arrays are like lists, only that instead of square brackets <hask>[</hask> and <hask>]</hask>, parallel arrays use square brackets with a colon <hask>[:</hask> and <hask>:]</hask>. In particular, <hask>[:e:]</hask> is the type of parallel arrays with elements of type <hask>e</hask>; the expression <hask>[:x, y, z:]</hask> denotes a three element parallel array with elements <hask>x</hask>, <hask>y</hask>, and <hask>z</hask>; and <hask>[:x + 1 | x <- xs:]</hask> represents a simple array comprehension. More sophisticated array comprehensions (including the equivalent of [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#parallel-list-comprehensions parallel list comprehensions]) as well as enumerations and pattern matching proceed in an analog manner. Moreover, the array library of DPH defines analogs of most list operations from the Haskell prelude and the standard <hask>List</hask> library (e.g., we have <hask>lengthP</hask>, <hask>sumP</hask>, <hask>mapP</hask>, and so on).<br />
<br />
The two main differences between lists and parallel arrays are that (1) parallel arrays are a strict data structure and (2) that they are not inductively defined. Parallel arrays are strict in that by demanding a single element, all elements of an array are demanded. Hence, all elements of a parallel array might be evaluated in parallel. To facilitate such parallel evaluation, operations on parallel arrays should treat arrays as aggregate structures that are manipulated in their entirety (instead of the inductive, element-wise processing that is the foundation of all Haskell list functions.)<br />
<br />
As a consequence, parallel arrays are always finite, and standard functions that yield infinite lists, such as <hask>enumFrom</hask> and <hask>repeat</hask>, have no corresponding array operation. Moreover, parallel arrays only have an undirected fold function <hask>foldP</hask> that requires an associative function as an argument – such a fold function has a parallel step complexity of O(log ''n'') for arrays of length ''n''. Parallel arrays also come with some aggregate operations that absent from the standard list library, such as <hask>permuteP</hask>.<br />
<br />
=== A simple example ===<br />
<br />
As a simple example of a DPH program, consider the following code that computes the dot product of two vectors given as parallel arrays:<br />
<haskell><br />
dotp :: Num a => [:a:] -> [:a:] -> a<br />
dotp xs ys = sumP [:x * y | x <- xs | y <- ys:]<br />
</haskell><br />
This code uses an array variant of [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#parallel-list-comprehensions parallel list comprehensions], which could alternatively be written as <hask>[:x * y | (x, y) <- zipP xs ys:]</hask>, but should otherwise be self-explanatory to any Haskell programmer.<br />
<br />
=== Running DPH programs ===<br />
<br />
Unfortunately, we cannot use the above implementation of <hask>dotp</hask> directly in the current preliminary implementation of DPH. In the following, we will discuss how the code needs to be modified and how it needs to be compiled and run for parallel execution. GHC applies an elaborate transformation to DPH code called ''vectorisation'' that turns nested into flat data parallelism. This transformation is only useful for code that is executed in parallel (i.e., code that manipulates parallel arrays), but there it raises the level of expressiveness dramatically.<br />
<br />
==== No type classes ====<br />
<br />
Unfortunately, vectorisation does not properly handle type classes at the moment. Hence, we currently need to avoid overloaded operations in parallel code. To account for that limitation, we specialise <hask>dotp</hask> on doubles.<br />
<haskell><br />
dotp_double :: [:Double:] -> [:Double:] -> Double<br />
dotp_double xs ys = sumP [:x * y | x <- xs | y <- ys:]<br />
</haskell><br />
<br />
==== Special Prelude ====<br />
<br />
As the current implementation of vectorisation cannot handle some language constructs, we cannot use it to vectorise those parts of the standard Prelude that might be used in parallel code (such as arithmetic operations). Instead, DPH comes with its own (rather limited) Prelude in [http://www.haskell.org/ghc/docs/latest/html/libraries/dph-par/Data-Array-Parallel-Prelude.html Data.Array.Parallel.Prelude] plus three extra modules to support one numeric type each [http://www.haskell.org/ghc/docs/latest/html/libraries/dph-par/Data-Array-Parallel-Prelude-Double.html Data.Array.Parallel.Prelude.Double], [http://www.haskell.org/ghc/docs/latest/html/libraries/dph-par/Data-Array-Parallel-Prelude-Int.html Data.Array.Parallel.Prelude.Int], and [http://www.haskell.org/ghc/docs/latest/html/libraries/dph-par/Data-Array-Parallel-Prelude-Word8.html Data.Array.Parallel.Prelude.Word8]. These three modules support the same functions (on different types) and if a program needs to use more than one, they need to be imported qualified (as we cannot use type classes in vectorised code in the current version). If your code needs any other numeric types or functions that are not implemented in the these Prelude modules, you currently need to implement and vectorise that functionality yourself.<br />
<br />
To compile <hask>dotp_double</hask>, we add the following three import statements:<br />
<haskell><br />
import qualified Prelude<br />
import Data.Array.Parallel.Prelude<br />
import Data.Array.Parallel.Prelude.Double<br />
</haskell><br />
<br />
==== Impedance matching ====<br />
<br />
Special care is needed at the interface between vectorised and non-vectorised code. Currently, only simple types can be passed between these different kinds of code. In particular, parallel arrays '''cannot''' be passed. Instead, we can pass flat arrays of type <hask>PArray</hask>. This type is exported by our special-purpose Prelude together with a conversion function <hask>fromPArrayP</hask> (which is specific to the element type due to the lack of type classes in vectorised code). <br />
<br />
Using this conversion function, we define a wrapper function for <hask>dotp_double</hask> that we export and use from non-vectorised code.<br />
<haskell><br />
dotp_wrapper :: PArray Double -> PArray Double -> Double<br />
{-# NOINLINE dotp_wrapper #-}<br />
dotp_wrapper v w = dotp_double (fromPArrayP v) (fromPArrayP w)<br />
</haskell><br />
It is important to mark this function as <hask>NOINLINE</hask> as we don't want it to be inlined into non-vectorised code.<br />
<br />
==== Compiling vectorised code ====<br />
<br />
The definition of <hask>dotp_double</hask> requires two language extensions, namely <hask>PArr</hask> to enable the syntax of parallel arrays and <hask>ParallelListComp</hask> for the parallel comprehension. Furthermore, we need to explicitly tell GHC which modules we want to vectorise.<br />
<br />
Currently, GHC either vectorises all code in a module or none. This can be inconvenient as some parts of a program cannot be vectorised – for example, code in the <hask>IO</hask> monad (the radical re-ordering of computations performed by the vectorisation transformation is only valid for pure code). As a consequence, the programmer currently needs to partition vectorised and non-vectorised code carefully over different modules.<br />
<br />
The compiler option to enable vectorisation is <code>-fvectorise</code>. Overall, we get the following complete module definition for the dot-product code:<br />
<haskell><br />
{-# LANGUAGE PArr, ParallelListComp #-}<br />
{-# OPTIONS -fvectorise #-}<br />
<br />
module DotP (dotp_double,dotp_wrapper)<br />
where<br />
<br />
import qualified Prelude<br />
import Data.Array.Parallel.Prelude<br />
import Data.Array.Parallel.Prelude.Double<br />
<br />
dotp_double :: [:Double:] -> [:Double:] -> Double<br />
dotp_double xs ys = sumP [:x * y | x <- xs | y <- ys:]<br />
<br />
dotp_wrapper :: PArray Double -> PArray Double -> Double<br />
{-# NOINLINE dotp_wrapper #-}<br />
dotp_wrapper v w = dotp_double (fromPArrayP v) (fromPArrayP w)<br />
</haskell><br />
Assuming the module is in a file <hask>DotP.hs</hask>, we compile it was follows:<br />
<blockquote><br />
<code>ghc -c -Odph -fcpr-off -fdph-seq DotP.hs</code><br />
</blockquote><br />
The option <code>-Odph</code> enables a predefined set of GHC optimisation options that is geared at optimising DPH code. Moreover, we use <code>-fcpr-off</code> as GHC's CPR phase doesn't play nice with type families at the moment, which in turn are heavily used in the DPH library. We shall discuss <code>-fdph-seq</code> below.<br />
<br />
==== Using vectorised code ====<br />
<br />
Finally, we need a wrapper module that calls the vectorised code, but is itself not vectorised. In this simple example, this is just the <hask>Main</hask> module that generates two random vectors and computes their dot product:<br />
<haskell><br />
import System.Random (newStdGen)<br />
import Data.Array.Parallel.PArray (PArray, randomRs)<br />
<br />
import DotP (dotp_wrapper) -- import vectorised code<br />
<br />
main :: IO ()<br />
main<br />
= do <br />
gen1 <- newStdGen<br />
gen2 <- newStdGen<br />
let v = randomRs n range gen1<br />
w = randomRs n range gen2<br />
print $ dotp_wrapper v w -- invoke vectorised code and print the result<br />
where<br />
n = 10000 -- vector length<br />
range = (-100, 100) -- range of vector elements<br />
</haskell><br />
We compile this module with<br />
<blockquote><br />
<code>ghc -c -O -fdph-seq Main.hs</code><br />
</blockquote><br />
and finally link with<br />
<blockquote><br />
<code>ghc -o dotp -fdph-seq -threaded DotP.o Main.o</code><br />
</blockquote><br />
<br />
'''NOTE:''' The code as presented is unsuitable for benchmarking as we wouldn't want to measure the purely sequential random number generation (that dominates this simple program). For benchmarking, we would want to guarantee that the generated vectors are fully evaluated before taking the time. The module [http://www.haskell.org/ghc/docs/latest/html/libraries/dph-par/Data-Array-Parallel-PArray.html Data.Array.Parallel.PArray] exports the function <hask>nf</hask> for this purpose.<br />
<br />
==== Parallel execution ====<br />
<br />
The array library of DPH comes in two flavours: <code>dph-seq</code> and <code>dph-par</code>. The former supports the whole DPH stack, but only executes on a single core. In contrast, <code>dph-par</code> implements multi-threaded code. <br />
<br />
In the above compiler invocations, we used the option <code>-fdph-seq</code> to select the <code>dph-seq</code> flavour. We can as well compile with <code>-fdph-par</code> to generate multi-threaded code. By invoking <code>./dotp +RTS -N2</code>, we use two OS threads to execute the program. A beautiful property of DPH is that the number of threads used to execute a program only affects its performance, but not the result. So, it is fine to do all debugging concerning correctness with <code>dph-seq</code> and to switch to <code>dph-par</code> only for performance debugging.<br />
<br />
Data Parallel Haskell –and more generally, GHC's multi-threading support– currently only aims at multicore processors or uniform memory access (UMA) multi-processors. Performance on non-uniform memory access (NUMA) machines is generally bad as GHC's runtime makes no effort at optimising placement. Some people have reported that the parallel garbage collector (as included in GHC 6.10.1) should not be used with parallel programs; i.e., it is advisable to start parallel programs with <code>my_program +RTS -N2 -g1</code> to run on two cores (and different arguments to <code>-N</code> for other core counts). This problem has been addressed in the development version of GHC.<br />
<br />
=== Further examples ===<br />
<br />
Further examples are available in the [http://darcs.haskell.org/ghc-6.10/packages/dph/examples/ examples directory of the package dph source]. In addition to code using vectorisation (as described above), these examples also contain code that directly targets the two array libraries contained in <code>-package dph-seq</code> and <code>-package dph-par</code>, respectively. For more complex programs, targeting the DPH array libraries directly can lead to much faster code than using vectorisation, as GHC currently doesn't optimise vectorised code very well. However, code targeting the DPH libraries directly can only use flat data parallelism.<br />
<br />
The interfaces of the various components of the DPH library are specified in GHC's [http://www.haskell.org/ghc/docs/latest/html/libraries/index.html hierarchical libraries documentation].<br />
<br />
=== Designing parallel programs ===<br />
<br />
Data Parallel Haskell is a high-level language to code parallel algorithms. Like plain Haskell, DPH frees the programmer from many low-level operational considerations (such as thread creation, thread synchronisation, critical sections, and deadlock avoidance). Nevertheless, the full responsibility for parallel algorithm design and many performance considerations (such as when does a computation have sufficient parallelism to make it worthwhile to exploit that parallelism) are still with the programmer.<br />
<br />
DPH encourages a data-driven style of parallel programming and, in good Haskell tradition, puts the choice of data types first. Specifically, the choice between using lists or parallel arrays for a data structure determines whether operations on the structure will be executed sequentially or in parallel. In addition to suitably combining standard lists and parallel arrays, it is often also useful to embed parallel arrays in a user-defined inductive structure, such as the following definition of parallel rose trees:<br />
<haskell><br />
data RTree a = RNode [:RTree a:]<br />
</haskell><br />
The tree is inductively defined; hence, tree traversals will proceed sequentially, level by level. However, the children of each node are held in parallel arrays, and hence, may be traversed in parallel. This structure is, for example, useful in parallel adaptive algorithms based on a hierarchical decomposition, such as the Barnes-Hut algorithm for solving the ''N''-body problem as discussed in more detail in the paper [http://www.cse.unsw.edu.au/~chak/papers/PLKC08.html Harnessing the Multicores: Nested Data Parallelism in Haskell.]<br />
<br />
For a general introduction to nested data parallelism and its cost model, see Blelloch's [http://www.cs.cmu.edu/~scandal/cacm/cacm2.html Programming Parallel Algorithms.]<br />
<br />
=== Further reading and information on the implementation ===<br />
<br />
DPH has two major components: (1) the ''vectorisation transformation'' and (2) the ''generic DPH library for flat parallel arrays''. The vectorisation transformation turns nested into flat data-parallelism and is described in detail in the paper [http://www.cse.unsw.edu.au/~chak/papers/PLKC08.html Harnessing the Multicores: Nested Data Parallelism in Haskell.] The generic array library maps flat data-parallelism to GHC's multi-threaded multicore support and is described in the paper [http://www.cse.unsw.edu.au/~chak/papers/CLPKM06.html Data Parallel Haskell: a status report]. The same topics are also covered in the slides for the two talks [http://research.microsoft.com/~simonpj/papers/ndp/NdpSlides.pdf Nested data parallelism in Haskell] and [http://dataparallel.googlegroups.com/web/UNSW%20CGO%20DP%202007.pdf Compiling nested data parallelism by program transformation].<br />
<br />
For further reading, consult this [[GHC/Data Parallel Haskell/References|collection of background papers, and pointers to other people's work]]. If you are really curious and like to know implementation details and the internals of the Data Parallel Haskell project, much of it is described on the GHC developer wiki on the pages covering [http://hackage.haskell.org/trac/ghc/wiki/DataParallel data parallelism] and [http://hackage.haskell.org/trac/ghc/wiki/TypeFunctions type families].<br />
<br />
=== Feedback ===<br />
<br />
Please file bug reports at [http://hackage.haskell.org/trac/ghc/ GHC's bug tracker]. Moreover, comments and suggestions are very welcome. Please post them to the [mailto:glasgow-haskell-users@haskell.org GHC user's mailing list], or contact the DPH developers directly:<br />
* [http://www.cse.unsw.edu.au/~chak/ Manuel Chakravarty]<br />
* [http://www.cse.unsw.edu.au/~keller/ Gabriele Keller]<br />
* [http://www.cse.unsw.edu.au/~rl/ Roman Leshchinksiy]<br />
* [http://research.microsoft.com/~simonpj/ Simon Peyton Jones]</div>Malcolmhttps://wiki.haskell.org/index.php?title=OpenGL&diff=23979OpenGL2008-11-11T12:02:00Z<p>Malcolm: update link to PolyFunViz</p>
<hr />
<div>This is a stub page for Haskell's OpenGL and GLUT bindings. It is meant as a starting point to replace the outdated and misleading documentation at the<br />
[http://www.haskell.org/HOpenGL-old/ old page].<br />
<br />
First, note that the implementation is far more up-to-date than that old page suggested (originally, it was quite useful, but the page hasn't kept up with the implementation for a long time now).<br />
<br />
== References == <br />
* [http://www.haskell.org/mailman/listinfo/hopengl the HOpenGL mailing list]<br />
<br />
* [http://hackage.haskell.org/packages/archive/OpenGL/latest/doc/html/ the API docs for the OpenGL binding]<br />
<br />
* [http://hackage.haskell.org/packages/archive/GLUT/latest/doc/html/ the API docs for the GLUT binding]<br />
<br />
* [http://darcs.haskell.org/packages/OpenGL the darcs repo with the sources for the OpenGL binding]<br />
<br />
* [http://darcs.haskell.org/packages/GLUT/ the darcs repo with the sources for the GLUT binding]<br />
<br />
In particular, note that the [http://darcs.haskell.org/packages/GLUT/examples/ examples/] directory in the GLUT repo contains lots of examples, including translations of the red book examples.<br />
<br />
Both the API documentation and the examples are best studied with the [http://www.opengl.org/documentation/specs/ original specs] and the original [http://www.opengl.org/documentation/red_book/ red book] examples at hand. An index of the examples from v1.1 of the red book, with screen shots, can be found [http://www.opengl.org/resources/code/samples/redbook/ here]<br />
<br />
== Projects using the OpenGL bindings == <br />
<br />
* [[Frag]], a 3D first-person shooter game.<br />
* [[Monadius]], a 2D scrolling arcade game.<br />
* [[Roguestar]], a roguelike adventure game using 3D graphics.<br />
* [[Shu-thing]], a 2D scroling arcade game.<br />
* [[Topkata]], a jumping ball puzzle game.<br />
* [http://www.comp.leeds.ac.uk/funvis/ PolyFunViz], a toolkit for scientific visualization (e.g. surfaces, flows, contours, volumes)<br />
<br />
== HOpenGL Resources == <br />
<br />
* [[OpenGLTutorial1]] and [[OpenGLTutorial2]]<br />
* [http://bluheron.europa.renci.org/docs/BeautifulCode.pdf Beautiful Code, Compelling Evidence: Functional Programming for Information Visualization and Visual Analytics] - Writing visualizations using OpenGL or Cairo (PDF)<br />
* [http://www.cin.ufpe.br/~haskell/hopengl/ Andre Furtado's nice tutorial] written in 2001 (bitrotted)<br />
* [http://www.haskell.org/~pairwise/HOpenGL/HOpenGL.html#texLoad Spriting with HOpenGL], David Morra<br />
<br />
== OpenGL Resources ==<br />
<br />
* [http://www.opengl.org/resources/faq/technical/ OpenGL FAQ and Toubleshooting Guide] Assumes some knowledge of OpenGL. Good for those who have written something but want to avoid common pitfalls.<br />
<br />
== Getting Started ==<br />
<br />
* assuming you know Haskell, any OpenGL tutorial of your choice should get you going (browsing the [http://www.opengl.org OpenGL] site is also a good idea)<br />
* use the [http://www.opengl.org/documentation/red_book/ Red Book], and its example code translations, to understand the small differences between OpenGL and HOpenGL<br />
* use the [http://www.opengl.org/documentation/specs/ OpenGL and GLUT specs] to find your way around the [http://hackage.haskell.org/packages/archive/OpenGL/latest/doc/html HOpenGL Haddock documentation]<br />
* use the [http://www.haskell.org/mailman/listinfo/hopengl HopenGL list] for questions and success stories<br />
<br />
== Additional software == <br />
* [[FTGL]]: Portable TrueType font rendering for OpenGL using the Freetype2 library<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GLFW GLFW]: A binding for GLFW, An OpenGL Framework<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GLUT GLUT]: A binding for the OpenGL Utility Toolkit<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/graphics-drawingcombinators graphics-drawingcombinators]: A functional interface to 2D drawing in OpenGL<br />
<br />
Somewhat related is [http://libsdl.org/ SDL], which is also based on OpenGL:<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL SDL]: Binding to libSDL<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-gfx SDL-gfx]: Binding to libSDL_gfx<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-image SDL-image]: Binding to libSDL_image<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-mixer SDL-mixer]: Binding to libSDL_mixer<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-mpeg SDL-mpeg]: Binding to the SMPEG library<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-ttf SDL-ttf]: Binding to libSDL_ttf<br />
<br />
To add sound to OpenGL applications:<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/OpenAL OpenAL]: A binding to the [[OpenAL]] cross-platform 3D audio API<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ALUT ALUT]: A binding for the OpenAL Utility Toolkit<br />
<br />
<br />
== Troubleshooting ==<br />
=== I can't display text with renderString ===<br />
It's probably because the text is displayed too big. Setting a much smaller scale factor before calling renderString should solve the problem.<br />
<haskell><br />
scale 0.001 0.001 (0.001∷GLfloat)<br />
renderString Roman "Test string"<br />
</haskell><br />
=== Animations flicker ===<br />
If you're not using DoubleBuffered display mode, turn that on. Also, you must set the display mode '''before''' creating the window you're going to be drawing in. To check if you've enabled double buffering use something like:<br />
<haskell><br />
db <- get doubleBuffered<br />
</haskell><br />
and set DoubleBuffered mode (before creating your windows!) like this:<br />
<haskell><br />
initialDisplayMode $= [DoubleBuffered]<br />
createWindow "My Window"<br />
</haskell><br />
You will also need to call [http://hackage.haskell.org/packages/archive/GLUT/latest/doc/html/Graphics-UI-GLUT-Window.html#v%3AswapBuffers <haskell>swapBuffers</haskell>] at the end of your draw function.<br />
<br />
[[Category:Packages]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Video_presentations/Haskell_Symposium_2008&diff=23174Video presentations/Haskell Symposium 20082008-09-30T08:44:09Z<p>Malcolm: </p>
<hr />
<div>[[Category:Community]]<br />
<br />
__NOTOC__<br />
<br />
Guerrilla videos of...<br />
'''[http://haskell.org/haskell-symposium/2008/ ACM SIGPLAN 2008 Haskell Symposium]'''<br />
<br />
Victoria, British Columbia, Canada<br />
<br />
Thursday, 25th September, 2008<br />
<br />
== Session 1: 9:00 - 10:30 ==<br />
<br />
;[http://video.google.com/videoplay?docid=8480288061583056438 Lightweight monadic regions]<br />
: Oleg Kiselyov and Chung-chieh Shan<br />
;[http://video.google.com/videoplay?docid=2924823266768371672 A Library for Light-weight Information-Flow Security in Haskell]<br />
: Alejandro Russo, Koen Claessen and John Hughes<br />
;[http://video.google.com/videoplay?docid=-2432086335458210931 Haskell Session Types with (Almost) No Class]<br />
: Riccardo Pucella and Jesse Tov<br />
<br />
== Session 2: 10:45 - 12:00 ==<br />
<br />
;[http://video.google.com/videoplay?docid=8540922190337591178 SmallCheck and Lazy SmallCheck: automatic exhaustive testing for small values]<br />
: Colin Runciman, Matthew Naylor and Fredrik Lindblad<br />
;[http://video.google.com/videoplay?docid=8250544235079789504 Not All Patterns, But Enough - an automatic verifier for partial but sufficient pattern matching]<br />
: Neil Mitchell and Colin Runciman (PDF of slides [[Media:ndm.pdf]])<br />
;[http://video.google.com/videoplay?docid=4183423992181607417 Yi - An Editor in Haskell for Haskell (Demo)]<br />
: Jean-Philippe Bernardy<br />
<br />
== Session 3: 1:30 - 3:00 ==<br />
<br />
;[http://video.google.com/videoplay?docid=7818736861350305755 Haskell, Do You Read Me? Constructing and composing effcient top-down parsers at run-time]<br />
: Marcos Viera, Doaitse Swierstra and Eelco Lempsink (PDF of slides [[Media:doaitse.pdf]])<br />
;[http://video.google.com/videoplay?docid=-231732818259976604 Shared Subtypes: Subtyping recursive parametrized algebraic data types]<br />
: Ki Yung Ahn and Tim Sheard<br />
;[http://video.google.com/videoplay?docid=-4399280499170944001 Language and Program Design for Functional Dependencies]<br />
: Mark Jones and Iavor Diatchki<br />
<br />
== Session 4: 3:20-4:30 ==<br />
<br />
;[http://video.google.com/videoplay?docid=7131199249736690943 Making Monads First-class with Template Haskell]<br />
: Pericles Kariotis, Adam Procter and William Harrison<br />
;[http://video.google.com/videoplay?docid=1269998691689979629 Comparing Libraries for Generic Programming in Haskell]<br />
: Alexey Rodriguez, Johan Jeuring, Patrik Jansson, Alex Gerdes, Oleg Kiselyov and Bruno C. d. S. Oliveira<br />
;[http://video.google.com/videoplay?docid=1906731977807736380 CLASE: Cursor Library for A Structured Editor (Demo)]<br />
: Tristan O. R. Allwood, Susan Eisenbach<br />
<br />
== Future of Haskell: 4:30 - ==<br />
<br />
;[http://video.google.com/videoplay?docid=5177116830079185902 Haskell' Status Report]<br />
: Simon Marlow<br />
; Haskell: Batteries Included (Demo)<br />
: Duncan Coutts, Isaac Potoczny-Jones, Don Stewart<br />
: Unfortunately there is no video for this talk but slides and a brief description are posted [http://blog.well-typed.com/2008/09/slides-from-the-haskell-platform-talk/ here] and a discussion is [http://www.serpentine.com/blog/2008/09/26/some-notes-on-the-future-of-haskell-and-fp/ here].<br />
; Discussion</div>Malcolmhttps://wiki.haskell.org/index.php?title=File:Ndm.pdf&diff=23173File:Ndm.pdf2008-09-30T08:36:33Z<p>Malcolm: Haskell Symposium 2008.
Not all patterns, but enough.
PDF of slides.</p>
<hr />
<div>Haskell Symposium 2008.<br />
Not all patterns, but enough.<br />
PDF of slides.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Video_presentations/Haskell_Symposium_2008&diff=23172Video presentations/Haskell Symposium 20082008-09-30T08:35:37Z<p>Malcolm: </p>
<hr />
<div>[[Category:Community]]<br />
<br />
__NOTOC__<br />
<br />
'''[http://haskell.org/haskell-symposium/2008/ ACM SIGPLAN 2008 Haskell Symposium]'''<br />
<br />
Victoria, British Columbia, Canada<br />
<br />
Thursday, 25th September, 2008<br />
<br />
== Session 1: 9:00 - 10:30 ==<br />
<br />
;[http://video.google.com/videoplay?docid=8480288061583056438 Lightweight monadic regions]<br />
: Oleg Kiselyov and Chung-chieh Shan<br />
;[http://video.google.com/videoplay?docid=2924823266768371672 A Library for Light-weight Information-Flow Security in Haskell]<br />
: Alejandro Russo, Koen Claessen and John Hughes<br />
;[http://video.google.com/videoplay?docid=-2432086335458210931 Haskell Session Types with (Almost) No Class]<br />
: Riccardo Pucella and Jesse Tov<br />
<br />
== Session 2: 10:45 - 12:00 ==<br />
<br />
;[http://video.google.com/videoplay?docid=8540922190337591178 SmallCheck and Lazy SmallCheck: automatic exhaustive testing for small values]<br />
: Colin Runciman, Matthew Naylor and Fredrik Lindblad<br />
;[http://video.google.com/videoplay?docid=8250544235079789504 Not All Patterns, But Enough - an automatic verifier for partial but sufficient pattern matching]<br />
: Neil Mitchell and Colin Runciman (PDF of slides [[Media:ndm.pdf]])<br />
;[http://video.google.com/videoplay?docid=4183423992181607417 Yi - An Editor in Haskell for Haskell (Demo)]<br />
: Jean-Philippe Bernardy<br />
<br />
== Session 3: 1:30 - 3:00 ==<br />
<br />
;[http://video.google.com/videoplay?docid=7818736861350305755 Haskell, Do You Read Me? Constructing and composing effcient top-down parsers at run-time]<br />
: Marcos Viera, Doaitse Swierstra and Eelco Lempsink<br />
;[http://video.google.com/videoplay?docid=-231732818259976604 Shared Subtypes: Subtyping recursive parametrized algebraic data types]<br />
: Ki Yung Ahn and Tim Sheard<br />
;[http://video.google.com/videoplay?docid=-4399280499170944001 Language and Program Design for Functional Dependencies]<br />
: Mark Jones and Iavor Diatchki<br />
<br />
== Session 4: 3:20-4:30 ==<br />
<br />
;[http://video.google.com/videoplay?docid=7131199249736690943 Making Monads First-class with Template Haskell]<br />
: Pericles Kariotis, Adam Procter and William Harrison<br />
;[http://video.google.com/videoplay?docid=1269998691689979629 Comparing Libraries for Generic Programming in Haskell]<br />
: Alexey Rodriguez, Johan Jeuring, Patrik Jansson, Alex Gerdes, Oleg Kiselyov and Bruno C. d. S. Oliveira<br />
;[http://video.google.com/videoplay?docid=1906731977807736380 CLASE: Cursor Library for A Structured Editor (Demo)]<br />
: Tristan O. R. Allwood, Susan Eisenbach<br />
<br />
== Future of Haskell: 4:30 - ==<br />
<br />
;[http://video.google.com/videoplay?docid=5177116830079185902 Haskell' Status Report]<br />
: Simon Marlow<br />
; Haskell: Batteries Included (Demo)<br />
: Duncan Coutts, Isaac Potoczny-Jones, Don Stewart<br />
: Unfortunately there is no video for this talk but slides and a brief description are posted [http://blog.well-typed.com/2008/09/slides-from-the-haskell-platform-talk/ here] and a discussion is [http://www.serpentine.com/blog/2008/09/26/some-notes-on-the-future-of-haskell-and-fp/ here].<br />
; Discussion</div>Malcolmhttps://wiki.haskell.org/index.php?title=Simonpj/Talk:ResearchSkills&diff=23013Simonpj/Talk:ResearchSkills2008-09-19T08:45:21Z<p>Malcolm: fix link</p>
<hr />
<div>= Research skills =<br />
<br />
Writing papers, giving research talks, and writing research proposals are key skills, but they aren't easy. You can find my thoughts and presentations about these skills [http://research.microsoft.com/~simonpj/papers/giving-a-talk/giving-a-talk.htm here], but this page is for you!<br />
<br />
Anyone can edit this Wiki page. Please add your comments on [http://research.microsoft.com/~simonpj/papers/giving-a-talk/giving-a-talk.htm my material], your own thoughts and suggestions, and pointers to other material you have found useful.<br />
<br />
I find it most helpful to put new entries at the top, so that the oldest ones end up at the bottom. That way new entries are easy to find.<br />
<br />
You can identify your entries by preceding them with four tildes. Doing so adds your name, and the date. Thus:<br />
<br />
:[[User:Simonpj|Simonpj]] 08:42, 19 April 2007 (UTC) Note from Simon<br />
<br />
--------------------------</div>Malcolmhttps://wiki.haskell.org/index.php?title=OpenGL&diff=21965OpenGL2008-07-27T18:18:16Z<p>Malcolm: </p>
<hr />
<div>This is a stub page for Haskell's OpenGL and GLUT bindings. It is meant as a starting point to replace the outdated and misleading documentation at the<br />
[http://www.haskell.org/HOpenGL-old/ old page].<br />
<br />
First, note that the implementation is far more up-to-date than that old page suggested (originally, it was quite useful, but the page hasn't kept up with the implementation for a long time now).<br />
<br />
== References == <br />
* [http://www.haskell.org/mailman/listinfo/hopengl the hopengl mailing list]<br />
<br />
* [http://www.haskell.org/ghc/docs/latest/html/libraries/OpenGL/Graphics-Rendering-OpenGL.html the API docs for the OpenGL binding]<br />
<br />
* [http://www.haskell.org/ghc/docs/latest/html/libraries/GLUT/Graphics-UI-GLUT.html the API docs for the GLUT binding]<br />
<br />
* [http://darcs.haskell.org/packages/OpenGL the darcs repo with the sources for the OpenGL binding]<br />
<br />
* [http://darcs.haskell.org/packages/GLUT/ the darcs repo with the sources for the GLUT binding]<br />
<br />
In particular, note that the [http://darcs.haskell.org/packages/GLUT/examples/ examples/] directory in the GLUT repo contains lots of examples, including translations of the red book examples.<br />
<br />
Both the API documentation and the examples are best studied with the [http://www.opengl.org/documentation/specs/ original specs] and the original [http://www.opengl.org/documentation/red_book/ red book] examples at hand. An index of the examples from v1.1 of the red book, with screen shots, can be found [http://www.opengl.org/resources/code/samples/redbook/ here]<br />
<br />
== Projects using the OpenGL bindings == <br />
<br />
* [[Frag]], a 3D first-person shooter game.<br />
* [[Monadius]], a 2D scrolling arcade game.<br />
* [[Roguestar]], a roguelike adventure game using 3D graphics.<br />
* [[Shu-thing]], a 2D scroling arcade game.<br />
* [[Topkata]], a jumping ball puzzle game.<br />
* PolyFunViz, a toolkit for scientific visualization (e.g. surfaces, flows, contours, volumes)<br />
<br />
== HOpenGL Resources == <br />
<br />
* [[OpenGLTutorial1]] and [[OpenGLTutorial2]]<br />
* http://www.cin.ufpe.br/~haskell/hopengl/ Andre Furtado's nice tutorial written in 2001 (bitrotted)<br />
* http://www.haskell.org/~pairwise/HOpenGL/HOpenGL.html#texLoad Spriting with HOpenGL, David Morra<br />
<br />
== OpenGL Resources ==<br />
<br />
* [http://www.opengl.org/resources/faq/technical/ OpenGL FAQ and Toubleshooting Guide] Assumes some knowledge of OpenGL. Good for those who have written something but want to avoid common pitfalls.<br />
<br />
== Getting Started ==<br />
<br />
* assuming you know Haskell, any OpenGL tutorial of your choice should get you going (browsing the [http://www.opengl.org OpenGL] site is also a good idea)<br />
* use the Red Book, and its example code translations, to understand the small differences between OpenGL and HOpenGL<br />
* use the OpenGL and GLUT specs to find your way around the HOpenGL Haddock documentation<br />
* use the HopenGL list for questions and success stories<br />
<br />
== Troubleshooting ==<br />
=== I can't display text with renderString ===<br />
It's probably because the text is displayed too big. Setting a much smaller scale factor before calling renderString should solve the problem.<br />
<haskell><br />
scale 0.001 0.001 (0.001∷GLfloat)<br />
renderString Roman "Test string"<br />
</haskell><br />
=== Animations flicker ===<br />
If you're not using DoubleBuffered display mode, turn that on. Also, you must set the display mode '''before''' creating the window you're going to be drawing in. To check if you've enabled double buffering use something like:<br />
<haskell><br />
db <- get doubleBuffered<br />
</haskell><br />
and set DoubleBuffered mode (before creating your windows!) like this:<br />
<haskell><br />
initialDisplayMode $= [DoubleBuffered]<br />
createWindow "My Window"<br />
</haskell><br />
You will also need to call <haskell>swapBuffer</haskell> at the end of your draw function.<br />
<br />
[[Category:Packages]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell_Platform&diff=21893Haskell Platform2008-07-22T14:15:39Z<p>Malcolm: </p>
<hr />
<div>'''Haskell: Batteries Included'''<br />
<br />
The Haskell Library Platform (HLP) is the name of a proposed library set<br />
that would be the minimum standard for Haskell library support on a<br />
system.<br />
<br />
More generally, if we want tools as well as libraries, then the simpler name<br />
''Haskell Platform'' may be more appropriate.<br />
<br />
There are now more than 500 libraries available for Haskell, on<br />
[http://hackage.haskell.org hackage]. Choosing which libraries to<br />
support on a distro is currently done on an ad hoc basis, with<br />
significant variation from one distribution to another.<br />
<br />
Some, such as Arch Linux, or Gentoo Linux, include as many libraries as<br />
possible (typically over 400), while others have the bare minimum<br />
required to build ghc and say, darcs and xmonad.<br />
<br />
The Haskell community needs to provide direction and blessing to a<br />
library set that should be available and adopted, to further encourage<br />
Haskell use.<br />
<br />
Ensuring that the chosen set of library versions works well together, and<br />
with a particular version of GHC (and other tools), is a major goal.<br />
<br />
== Discussion ==<br />
<br />
* [http://thread.gmane.org/gmane.comp.lang.haskell.cvs.ghc/28062/focus=28807 A discussion] took place in June and July 2008 about the direction of the HLP.<br />
<br />
==Criteria==<br />
<br />
* GHC would build against its own core libraries, but would be generally distributed with the HLP.<br />
<br />
* The HLP should provide good coverage for all typical tasks one might want to accomplish with the language, given library availability.<br />
<br />
* No bottlenecks: release of the HLP should be entirely independent from GHC, and also independent of the development cycle of any individual library or tool.<br />
<br />
===Quality Control===<br />
<br />
* cabal-installable libraries with haddocks.<br />
<br />
== Current library set ==<br />
<br />
===Core system===<br />
<br />
This will be on every system, as they're required for GHC to build:<br />
<br />
* array<br />
* base<br />
* bytestring<br />
* Cabal<br />
* containers<br />
* directory<br />
* editline<br />
* filepath<br />
* haskell98<br />
* hpc<br />
* integer-gmp<br />
* old-locale<br />
* old-time<br />
* packedstring<br />
* pretty<br />
* process<br />
* random<br />
* template-haskell<br />
* unix OR Win32<br />
<br />
===Extra libraries===<br />
<br />
Current libraries available in the 'extralibs' bundle provided with GHC,<br />
a descendent of what used to by fptools, with a few additions.<br />
<br />
* ALUT<br />
* GLUT<br />
* HUnit<br />
* ObjectIO<br />
* OpenAL<br />
* OpenGL<br />
* QuickCheck<br />
* cgi<br />
* fgl<br />
* haskell-src<br />
* html<br />
* mtl<br />
* network<br />
* parsec<br />
* parallel<br />
* regex-base<br />
* regex-compat<br />
* regex-posix<br />
* stm<br />
* time<br />
* xhtml<br />
<br />
===Hackage ===<br />
<br />
A quick list of key libraries on Hackage, by genre:<br />
<br />
* Codecs<br />
**base64<br />
**bzlib<br />
**zlib<br />
**dataenc<br />
**encoding<br />
**iconv<br />
**mime<br />
**utf8-string<br />
**tar<br />
**nano-md5/hmac<br />
**pureMD5<br />
<br />
* Control<br />
**arrows<br />
**category-extras<br />
**logict<br />
**maybet<br />
**mtl<br />
**reactive<br />
**monad-lib<br />
<br />
* Data<br />
**array<br />
**binary<br />
**binary-strict<br />
**bloomfilter<br />
**bytestring<br />
**carray<br />
**containers<br />
**dlist<br />
**lazyarray<br />
**numbers<br />
**ranged-sets<br />
**stream<br />
**strict<br />
**suffixtree<br />
**avltree<br />
**bitset<br />
**bktrees<br />
**fingertree<br />
**random-access-list<br />
**heap<br />
<br />
* Database<br />
**hdbc<br />
**takusen<br />
**sqlite<br />
<br />
* Development<br />
**alex<br />
**c2hs<br />
**cpphs<br />
**derive<br />
**haddock<br />
**happy<br />
**cabal<br />
**cabal-install<br />
**hscolour<br />
<br />
* Graphics<br />
** Chart<br />
** gd<br />
** hgl<br />
** hpdf<br />
** opengl<br />
** x11<br />
<br />
* GUI<br />
** gtk2hs<br />
** wxHaskell<br />
<br />
* Languages and parsing<br />
**haskell-src<br />
**Language.C<br />
**parsec<br />
**polyparse<br />
**csv<br />
**feed<br />
**rss<br />
**haxml<br />
**hxt<br />
**xml<br />
**html<br />
**xhtml<br />
**i18n<br />
**hssyck<br />
**pcre-light<br />
**regex<br />
**hstemplate<br />
<br />
* Math<br />
**blas<br />
**hmatrix<br />
**cmath<br />
**fft<br />
**mersenne-random<br />
<br />
* Network<br />
**cgi<br />
**cgi-undecidable<br />
**curl<br />
**download-curl<br />
**fastcgi<br />
**ftphs<br />
**hS3<br />
**http<br />
**network<br />
**network-bytestring<br />
<br />
* Sound<br />
**alut<br />
**openal<br />
<br />
* System<br />
**bytestring-mmap<br />
**directory<br />
**flepath<br />
**locale<br />
**time<br />
**parsedate<br />
**process<br />
**random<br />
**unix<br />
**parseargs<br />
<br />
== Tools ==<br />
<br />
Language-processing tools should probably also be considered to be part of the platform. Commonly-needed tools include:<br />
<br />
* ghc<br />
* happy<br />
* alex<br />
* haddock<br />
* cpphs<br />
* cabal-install (now known simply as cabal?)<br />
<br />
What else might we consider?<br />
<br />
* DrIFT or derive<br />
* throw in another compiler - e.g. Hugs?<br />
* c2hs<br />
* hsc2hs<br />
<br />
==Release mechanics==<br />
<br />
==Public "Haskell Platform Compliant" list==<br />
<br />
To encourage adoption of the HLP, distributions that support the HLP<br />
will be publically listed as e.g. "Haskell Platform Compliant"<br />
<br />
==Management==<br />
<br />
== Next Steps==<br />
''What are the next steps to move this process forward? Build distribution packages for the distros listed above, containing the haskell packages listed above?''<br />
<br />
==History==<br />
<br />
* fptools<br />
* extralibs/ core libs<br />
<br />
== Related ==<br />
<br />
* [http://docs.python.org/lib/lib.html Python libraries]<br />
* Gnome's release process.<br />
<br />
[[Category:Community]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Weekly_Meeting&diff=21890Weekly Meeting2008-07-22T09:13:26Z<p>Malcolm: page did not mention which day of the week the meeting is held</p>
<hr />
<div>Many GHC users have recently been coordinating on a time to meet on IRC to discuss topics of interest to the compiler community. This is an informal gathering to exchange ideas and views on any current issues.<br />
<br />
'''When''': Wednesdays, 0800 PDT / 1100h EDT / 1600 BST<br />
<br />
'''Where''': irc.freenode.net #ghc<br />
<br />
Note: the meeting is in #ghc, and whilst the topics sometimes stray outside of just GHC, we would like to keep the agenda as close to GHC-only as possible<br />
<br />
=== Agenda ===<br />
If you desire to discuss a particular topic then post it here and perhaps shoot out an e-mail so people can give it proper thought and show up with something to contribute.<br />
<br />
* Should the GHC project (only) switch to a different DRCS (i.e. leave Darcs)? [http://www.haskell.org/pipermail/glasgow-haskell-users/2008-July/015089.html]<br />
* Who's doing what with the Haskell Platform?<br />
<br />
=== Recent History ===<br />
* July 16: [[The Haskell Platform]] was discussed including which libraries to include initially, criteria, and development process.<br />
<br />
== Logs ==<br />
* 2008-07-16 [http://haskell.org/~duncan/ghc/%23ghc-2008-07-16.log]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Weekly_Meeting&diff=21889Weekly Meeting2008-07-22T08:25:49Z<p>Malcolm: clarify that the meeting is GHC-only in topic</p>
<hr />
<div>Many GHC users have recently been coordinating on a time to meet on IRC to discuss topics of interest to the compiler community. This is an informal gathering to exchange ideas and views on any current issues.<br />
<br />
'''When''': 0800 PDT / 1100h EDT / 1600 BST<br />
<br />
'''Where''': irc.freenode.net #ghc<br />
<br />
Note: the meeting is in #ghc, and whilst the topics sometimes stray outside of just GHC, we would like to keep the agenda as close to GHC-only as possible<br />
<br />
=== Agenda ===<br />
If you desire to discuss a particular topic then post it here and perhaps shoot out an e-mail so people can give it proper thought and show up with something to contribute.<br />
<br />
* Should the GHC project (only) switch to a different DRCS (i.e. leave Darcs)? [http://www.haskell.org/pipermail/glasgow-haskell-users/2008-July/015089.html]<br />
* Who's doing what with the Haskell Platform?<br />
<br />
=== Recent History ===<br />
* July 16: [[The Haskell Platform]] was discussed including which libraries to include initially, criteria, and development process.<br />
<br />
== Logs ==<br />
* 2008-07-16 [http://haskell.org/~duncan/ghc/%23ghc-2008-07-16.log]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Template:Main/Headlines&diff=20746Template:Main/Headlines2008-05-01T10:04:41Z<p>Malcolm: GSoC funding decided.</p>
<hr />
<div>'''Headlines'''<br />
<br />
* Haskell.org is a mentoring organization in the [http://code.google.com/soc 2008 Google Summer of Code]. We received funding for 7 student projects: [http://code.google.com/soc/2008/haskell/about.html details].<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee is continuing work on defining the next minor revision of the language specification.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Template:Main/News&diff=18164Template:Main/News2008-01-08T17:33:22Z<p>Malcolm: fix the version number of nhc98</p>
<hr />
<div>''2008-01-05''<br />
<br />
<ul><li><p><em>GHC 6.8.2</em>. The GHC Team<br />
[http://www.haskell.org/ghc/download_ghc_682.html announced] the release of GHC 6.8.2, featuring optimisation improvements, improvements to ghci and fixes to standalone deriving.</p></li><br />
<br />
<li><p><em>nhc98 1.20 released</em>. Malcolm Wallace<br />
[http://article.gmane.org/gmane.comp.lang.haskell.general/15770 announced] the release of nhc98 1.20.<br />
1.20 is a refreshed release with many of the current core library packages included, and a variety of small bugfixes since the last release. It successfully compiles and runs more programs from the nobench suite than jhc, hbc, Hugs, or yhc. It generates an interpreted bytecode that, on the whole runs faster than that generated by Hugs or yhc, and in many cases is also faster than ghci. Although nhc98 is written in Haskell, you don't need an existing Haskell compiler on your platform to build nhc98 - a C compiler will do. Hence, it is portable to almost any unix-like machine with a 32-bit compatibility mode. Many useful build tools come included: hmake (the inspiration for ghc --make), hi (interactive read-eval-print, like Hugs or ghci), cpphs (Haskell-aware replacement for cpp) and hsc2hs (preprocessor for FFI code)</p></li><br />
<br />
<li><p><em>darcs 2.0.0pre2</em>. David Roundy<br />
[http://article.gmane.org/gmane.comp.lang.haskell.cafe/33483 announced] the availability of the second prerelease of [http://darcs.net darcs two], darcs 2.0.0pre2. This release fixes several severe performance bugs that were present in the first prerelease. These issues were identified and fixed thanks to the helpful testing of Simon Marlow and Peter Rockai. We also added support for compilation under ghc 6.4, so even more users should be able to test this release.</p></li><br />
<br />
<li><p><em>The Monad.Reader Issue 9: SoC special</em>. Wouter Swierstra<br />
[http://article.gmane.org/gmane.comp.lang.haskell.cafe/31848 announced] a new issue of The Monad.Reader, a 'Summer of Code Special' - it consists of three articles from student participants of Google's Summer of Code, describing the projects they worked on.</p></li><br />
<br />
<li><p><em>What's happening with Haskell? The 13th HCAR</em>. Andres Loeh<br />
[http://www.haskell.org/communities/ announced] the 13th edition of the Haskell Communities and Activities Report</p></li><br />
<br />
<li><p><em>Teach yourself gtk2hs in 21 hours</em>. Hans van Thiel <br />
[http://article.gmane.org/gmane.comp.lang.haskell.cafe/32671 announced] a Gtk2Hs basics tutorial, based on the Tony Gale and Ian Main GTK+2.0 tutorial, is now available for review and comment.</p></li><br />
<br />
<li><p><em>Minimalistic Haskell blog framework</em>. Paul Brown<br />
[http://article.gmane.org/gmane.comp.lang.haskell.cafe/34503 announced] a lightweight, experimental blog publishing application, [http://datapr0n.com/repos/perpubplat perpubplat</p></li><br />
<br />
<li><p><em>atom</em>. Tom Hawkins<br />
[http://www.haskell.org/pipermail/haskell-cafe/2007-December/035742.html announced] the release of atom 2007.12; atom is a domain-specific language embedded in Haskell for describing real-time control applications</p></li></ul><br />
<ul><li><p><em>bytestring 0.9.0.4</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-0.9.0.4 bytestring]: Fast, packed, strict and lazy byte arrays with a list interface.</p></li><br />
<br />
<li><p><em>uuagc 0.9.5</em>. Uploaded by ArieMiddelkoop.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uuagc-0.9.5 uuagc]: Attribute Grammar System of Universiteit Utrecht.</p></li><br />
<br />
<li><p><em>uulib 0.9.5</em>. Uploaded by ArieMiddelkoop.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uulib-0.9.5 uulib]: Haskell Utrecht Tools Library.</p></li><br />
<br />
<li><p><em>llvm 0.0.2</em>. Uploaded by BryanOSullivan.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/llvm-0.0.2 llvm]: Bindings to the LLVM compiler toolkit.</p></li><br />
<br />
<li><p><em>HDBC-sqlite3 1.1.3.1</em>. Uploaded by JohnGoerzen.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-sqlite3-1.1.3.1 HDBC-sqlite3]: Sqlite v3 driver for HDBC.</p></li><br />
<br />
<li><p><em>HDBC-odbc 1.1.3.1</em>. Uploaded by JohnGoerzen.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-odbc-1.1.3.1 HDBC-odbc]: ODBC driver for HDBC.</p></li><br />
<br />
<li><p><em>dimensional 0.7.2</em>. Uploaded by BjornBuckwalter.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dimensional-0.7.2 dimensional]: Statically checked physical dimensions..</p></li><br />
<br />
<li><p><em>uulib 0.9.5</em>. Uploaded by ArieMiddelkoop.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uulib-0.9.5 uulib]: Haskell Utrecht Tools Library.</p></li><br />
<br />
<li><p><em>hsc3 0.1</em>. Uploaded by RohanDrape.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsc3-0.1 hsc3]: Haskell SuperCollider.</p></li><br />
<br />
<li><p><em>hosc 0.1</em>. Uploaded by RohanDrape.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hosc-0.1 hosc]: Haskell Open Sound Control.</p></li><br />
<br />
<li><p><em>GLFW 0.2</em>. Uploaded by PaulLiu.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GLFW-0.2 GLFW]: A binding for GLFW, An OpenGL Framework.</p></li><br />
<br />
<li><p><em>control-timeout 0.1</em>. Uploaded by AdamLangley.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/control-timeout-0.1 control-timeout]: Timeout handling.</p></li><br />
<br />
<li><p><em>hiccup 0.35</em>. Uploaded by KyleConsalus.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hiccup-0.35 hiccup]: Relatively efficient Tcl interpreter with support for basic operations.</p></li><br />
<br />
<li><p><em>phooey 2.0</em>. Uploaded by ConalElliott.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/phooey-2.0 phooey]: Functional user interfaces.</p></li><br />
<br />
<li><p><em>reactive 0.0</em>. Uploaded by ConalElliott.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/reactive-0.0 reactive]: Simple foundation for functional reactive programming.</p></li><br />
<br />
<li><p><em>phooey 1.4</em>. Uploaded by ConalElliott.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/phooey-1.4 phooey]: Functional user interfaces.</p></li><br />
<br />
<li><p><em>hburg 1.1.1</em>. Uploaded by IgorBohm.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hburg-1.1.1 hburg]: Haskell Bottom Up Rewrite Generator.</p></li><br />
<br />
<li><p><em>hinotify 0.2</em>. Uploaded by LennartKolmodin.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hinotify-0.2 hinotify]: Haskell binding to INotify.</p></li><br />
<br />
<li><p><em>cabal-rpm 0.3.3</em>. Uploaded by BryanOSullivan.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-rpm-0.3.3 cabal-rpm]: RPM package builder for Haskell Cabal source packages..</p></li><br />
<br />
<li><p><em>codec-libevent 0.1</em>. Uploaded by AdamLangley.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/codec-libevent-0.1 codec-libevent]: Cross-platform structure serialisation.</p></li><br />
<br />
<li><p><em>irc 0.4</em>. Uploaded by TrevorElliott.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/irc-0.4 irc]: A small library for parsing IRC messages..</p></li><br />
<br />
<li><p><em>dlist 0.4</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dlist-0.4 dlist]: Differences lists.</p></li><br />
<br />
<li><p><em>AutoForms 0.4.0</em>. Uploaded by MadsLindstroem.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/AutoForms-0.4.0 AutoForms]: GUI library based upon generic programming (SYB3).</p></li><br />
<br />
<li><p><em>bktrees 0.2.1</em>. Uploaded by JosefSvenningsson.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bktrees-0.2.1 bktrees]: A set data structure with approximate searching.</p></li><br />
<br />
<li><p><em>bktrees 0.2</em>. Uploaded by JosefSvenningsson.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bktrees-0.2 bktrees]: A set data structure with approximate searching.</p></li><br />
<br />
<li><p><em>binary-strict 0.1</em>. Uploaded by AdamLangley.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/binary-strict-0.1 binary-strict]: Binary deserialisation using strict ByteStrings.</p></li><br />
<br />
<li><p><em>haddock 0.9</em>. Uploaded by SimonMarlow.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haddock-0.9 haddock]: Haddock is a documentation-generation tool for Haskell libraries.</p></li><br />
<br />
<li><p><em>bytestring-mmap 0.2.0</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-mmap-0.2.0 bytestring-mmap]: mmap support for strict ByteStrings.</p></li><br />
<br />
<li><p><em>bytestring 0.9.0.3</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-0.9.0.3 bytestring]: Fast, packed, strict and lazy byte arrays with a list interface.</p></li><br />
<br />
<li><p><em>hiccup 0.3</em>. Uploaded by KyleConsalus.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hiccup-0.3 hiccup]: Added by KyleConsalus, Wed Dec 19 17:00:42 PST 2007..</p></li><br />
<br />
<li><p><em>cedict 0.1.1</em>. Uploaded by JasonDusek.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cedict-0.1.1 cedict]: Convenient Chinese character lookup..</p></li><br />
<br />
<li><p><em>TypeCompose 0.3</em>. Uploaded by ConalElliott.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/TypeCompose-0.3 TypeCompose]: Type composition classes & instances.</p></li><br />
<br />
<li><p><em>bytestring-mmap 0.1.2</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-mmap-0.1.2 bytestring-mmap]: mmap support for strict ByteStrings.</p></li><br />
<br />
<li><p><em>bytestring 0.9.0.2</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-0.9.0.2 bytestring]: Fast, packed, strict and lazy byte arrays with a list interface.</p></li><br />
<br />
<li><p><em>bytestring-mmap 0.1.1</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-mmap-0.1.1 bytestring-mmap]: mmap support for strict ByteStrings.</p></li><br />
<br />
<li><p><em>mkcabal 0.3</em>. Uploaded by DonaldStewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mkcabal-0.3 mkcabal]: Generate cabal files for a Haskell project.</p></li><br />
<br />
<li><p><em>terminfo 0.1</em>. Uploaded by Judah Jacobson.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/terminfo-0.1 terminfo]: Haskell bindings to the terminfo library..</p></li><br />
<br />
<li><p><em>Cabal 1.2.3.0</em>. Uploaded by Duncan Coutts.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Cabal-1.2.3.0 Cabal]: A framework for packaging Haskell software.</p></li><br />
<br />
<li><p><em>hxt 7.4</em>. Uploaded by UweSchmidt.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hxt-7.4 hxt]: A collection of tools for processing XML with Haskell..</p></li><br />
<br />
<li><p><em>X11 1.4.1</em>. Uploaded by Spencer Janssen.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-1.4.1 X11]: A binding to the X11 graphics library.</p></li><br />
<br />
<li><p><em>dataenc 0.10.1</em>. Uploaded by Magnus Therning.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dataenc-0.10.1 dataenc]: Data encoding library currently providing Uuencode, Base64,<br />
Base64Url, Base32, Base32Hex, and Base16..</p></li><br />
<br />
<li><p><em>bytestringreadp 0.1</em>. Uploaded by Gracjan Polak.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestringreadp-0.1 bytestringreadp]: A ReadP style parser library for ByteString.</p></li><br />
<br />
<li><p><em>encoding 0.3</em>. Uploaded by HenningGuenther.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/encoding-0.3 encoding]: A library for various character encodings.</p></li><br />
<br />
<li><p><em>hslua 0.2</em>. Uploaded by Gracjan Polak.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hslua-0.2 hslua]: A Lua language interpreter embedding in Haskell.</p></li><br />
<br />
<li><p><em>xmonad-contrib 0.5</em>. Uploaded by Spencer Janssen.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad-contrib-0.5 xmonad-contrib]: Third party extensions for xmonad.</p></li><br />
<br />
<li><p><em>xmonad 0.5</em>. Uploaded by SpencerJanssen.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad-0.5 xmonad]: A tiling window manager.</p></li><br />
<br />
<li><p><em>pandoc 0.45</em>. Uploaded by John MacFarlane.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pandoc-0.45 pandoc]: Conversion between markup formats.</p></li><br />
<br />
<li><p><em>markov-chain 0.0.1</em>. Uploaded by Henning Thielemann.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/markov-chain-0.0.1 markov-chain]: Markov Chains for generating random sequences with a user definable behaviour..</p></li><br />
<br />
<li><p><em>parsedate 3000.0.0</em>. Uploaded by Bjorn Bringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/parsedate-3000.0.0 parsedate]: Data and time parsing for CalendarTime.</p></li><br />
<br />
<li><p><em>hackage2hwn 0.1</em>. Uploaded by Don Stewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hackage2hwn-0.1 hackage2hwn]: Convert hackage = Hackage RSS feeds to Haskell Weekly News format.</p></li><br />
<br />
<li><p><em>hask-home 2007.12.6</em>. Uploaded by BjornBringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hask-home-2007.12.6 hask-home]: Generate homepages for cabal packages.</p></li><br />
<br />
<li><p><em>hmarkup 3000.0.1</em>. Uploaded by BjornBringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmarkup-3000.0.1 hmarkup]: Simple wikitext-like markup format implementation..</p></li><br />
<br />
<li><p><em>hspread 0.2</em>. Uploaded by AndreaVezzosi.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hspread-0.2 hspread]: A client library for the spread toolkit.</p></li><br />
<br />
<li><p><em>pcap 0.4.2</em>. Uploaded by BryanOSullivan.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcap-0.4.2 pcap]: A system-independent interface for user-level packet capture.</p></li><br />
<br />
<li><p><em>hogg 0.3.0</em>. Uploaded by ConradParker.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hogg-0.3.0 hogg]: Library and tools to manipulate the Ogg container format.</p></li><br />
<br />
<li><p><em>Finance-Quote-Yahoo 0.4.1</em>. Uploaded by BradClawsie.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Finance-Quote-Yahoo-0.4.1 Finance-Quote-Yahoo]: Obtain quote data from finance.yahoo.com.</p></li><br />
<br />
<li><p><em>Monadius 0.9.20071204</em>. Uploaded by GwernBranwen.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Monadius-0.9.20071204 Monadius]: 2-D arcade scroller.</p></li><br />
<br />
<li><p><em>Shu-thing 1.0.20071203</em>. Uploaded by GwernBranwen.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shu-thing-1.0.20071203 Shu-thing]: A vector shooter game.</p></li><br />
<br />
<li><p><em>hmatrix 0.1.1.0</em>. Uploaded by AlbertoRuiz.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmatrix-0.1.1.0 hmatrix]: Linear algebra and numerical computations.</p></li><br />
<br />
<li><p><em>HTTP 3001.0.3</em>. Uploaded by BjornBringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTP-3001.0.3 HTTP]: Added by BjornBringert, Fri Nov 30 14:50:55 PST 2007..</p></li><br />
<br />
<li><p><em>rss 3000.0.1</em>. Uploaded by BjornBringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rss-3000.0.1 rss]: A library for generating RSS 2.0 feeds..</p></li><br />
<br />
<li><p><em>haxr 3000.0.1</em>. Uploaded by BjornBringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haxr-3000.0.1 haxr]: XML-RPC client and server library..</p></li><br />
<br />
<li><p><em>fitsio 0.1</em>. Uploaded by EricSessoms.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fitsio-0.1 fitsio]: A library for reading and writing data files in the FITS data format..</p></li><br />
<br />
<li><p><em>YamlReference 0.6</em>. Uploaded by Oren Ben Kiki.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/YamlReference-0.6 YamlReference], YAML reference implementation</p></li><br />
<br />
<li><p><em>LambdaShell 0.9.1</em>. Uploaded by Robert Dockins.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/LambdaShell-0.9.1 LambdaShell], simple shell for evaluating lambda expressions</p></li><br />
<br />
<li><p><em>Shellac 0.9.1</em>. Uploaded by Robert Dockins.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shellac-0.9.1 Shellac], a framework for creating shell envinronments</p></li><br />
<br />
<li><p><em>EdisonCore 1.2.1.1</em>. Uploaded by Robert Dockins.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/EdisonCore-1.2.1.1 EdisonCore], a library of efficent, purely-functional data structures (Core Implementations)</p></li><br />
<br />
<li><p><em>hmatrix 0.1.0.0</em>. Uploaded by Alberto Ruiz.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmatrix-0.1.0.0 hmatrix], linear algebra and numerical computations</p></li><br />
<br />
<li><p><em>strict-concurrency 0.1</em>. Uploaded by Don Stewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/strict-concurrency-0.1 strict-concurrency], strict concurrency abstractions</p></li><br />
<br />
<li><p><em>X11 1.4.0</em>. Uploaded by Don Stewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-1.4.0 X11], binding to the X11 graphics library</p></li><br />
<br />
<li><p><em>safecopy 0.3</em>. Uploaded by David Himmelstrup.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/safecopy-0.3 safecopy], binary serialization with version control</p></li><br />
<br />
<li><p><em>HaXml 1.13.3</em>. Uploaded by Malcolm Wallace.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HaXml-1.13.3 HaXml], utilities for manipulating XML documents</p></li><br />
<br />
<li><p><em>c2hs 0.15.1</em>. Uploaded by Duncan Coutts.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/c2hs-0.15.1 c2hs], C->Haskell Interface Generator</p></li><br />
<br />
<li><p><em>calc 0.1</em>. Uploaded by Austin Seipp.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/calc-0.1 calc], small compiler for arithmetic expressions.</p></li><br />
<br />
<li><p><em>miniplex 0.2.1</em>. Uploaded by Lukas Mai.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/miniplex-0.2.1 miniplex], simple 1-to-N interprocess communication</p></li><br />
<br />
<li><p><em>sat 1.1.1</em>. Uploaded by Andrii Zvorygin.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/sat-1.1.1 sat], CNF SATisfier</p></li><br />
<br />
<li><p><em>dimensional 0.7.1</em>. Uploaded by Bjorn Buckwalter.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dimensional-0.7.1 dimensional], statically checked physical dimensions</p></li><br />
<br />
<li><p><em>hxt 7.4</em>. Uploaded by Uwe Schmidt.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hxt-7.4 hxt], collection of tools for processing XML with Haskell.</p></li><br />
<br />
<li><p><em>dlist 0.3.2</em>. Uploaded by Don Stewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dlist-0.3.2 dlist], difference lists. A list type supporting fast append.</p></li><br />
<br />
<li><p><em>mkcabal 0.2</em>. Uploaded by Don Stewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mkcabal-0.2 mkcabal], generate cabal files for a Haskell project</p></li><br />
<br />
<li><p><em>Chart 0.5</em>. Uploaded by Tim Docker.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Chart-0.5 Chart], a library for generating 2D Charts and Plots</p></li><br />
<br />
<li><p><em>MaybeT 0.1.1</em>. Uploaded by Don Stewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/MaybeT-0.1.1 MaybeT], MaybeT monad transformer</p></li><br />
<br />
<li><p><em>regex-pcre 0.93</em>. Uploaded by Chris Kuklewicz.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-pcre-0.93 regex-pcre], replaces Text.Regex</p></li><br />
<br />
<li><p><em>fixpoint 0.1</em>. Uploaded by Roman Leshchinskiy.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fixpoint-0.1 fixpoint], data types as fixpoints</p></li><br />
<br />
<li><p><em>ChasingBottoms 1.2.2</em>. Uploaded by Nils Anders Danielsson.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ChasingBottoms-1.2.2 ChasingBottoms], support for testing partial and infinite values</p></li><br />
<br />
<li><p><em>GrowlNotify 0.3</em>. Uploaded by Nicholas Burlett.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GrowlNotify-0.3 GrowlNotify], notification utility for Growl</p></li><br />
<br />
<li><p><em>pcap 0.4.1</em>. Uploaded by Bryan OSullivan.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcap-0.4.1 pcap], a system-independent interface for user-level packet capture</p></li><br />
<br />
<li><p><em>bencode 0.3</em>. Uploaded by David Himmelstrup.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bencode-0.3 bencode], parser and printer for bencoded data.</p></li><br />
<br />
<li><p><em>stream-fusion 0.1.1</em>. Uploaded by Don Stewart.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/stream-fusion-0.1.1 stream-fusion], provides the standard Haskell list library reimplemented to allow stream fusion. This should in general provide faster list operations, and faster code for list-heavy programs.</p></li><br />
<br />
<li><p><em>HTTP 3001.0.2</em>. Uploaded by Bjorn Bringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTP-3001.0.2 HTTP], library for client-side HTTP</p></li><br />
<br />
<li><p><em>X11-xft 0.2</em>. Uploaded by Clemens Fruhwirth.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-xft-0.2 X11-xft], bindings to the Xft, X Free Type interface library, and some Xrender parts</p></li><br />
<br />
<li><p><em>GrowlNotify 0.1</em>. Uploaded by Nicholas Burlett.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GrowlNotify-0.1 GrowlNotify], notification utility for Growl.</p></li><br />
<br />
<li><p><em>HsHaruPDF 0.0.0</em>. Uploaded by Audrey Tang.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsHaruPDF-0.0.0 HsHaruPDF], Haskell binding to libharu</p></li><br />
<br />
<li><p><em>unicode-normalization 0.1</em>. Uploaded by Reinier Lamers.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/unicode-normalization-0.1 unicode-normalization], Unicode normalization using the ICU library</p></li><br />
<br />
<li><p><em>uniplate 1.0.1</em>. Uploaded by Neil Mitchell.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uniplate-1.0.1 uniplate], uniform type generic traversals</p></li><br />
<br />
<li><p><em>lax-0.0.0</em>. Uploaded by Wolfgang Jeltsch.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/lax-0.0.0 lax], Lax arrows are variants of other arrows which are ?less strict? than the original arrows. They can be used, for example, to produce I/O fixpoints in situations where fixIO would fail.</p></li><br />
<br />
<li><p><em>fastcgi 3001.0.1</em>. Uploaded by Bjorn Bringert.<br />
[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fastcgi-3001.0.1 fastcgi], a Haskell library for writing FastCGI programs</p></li></ul><br />
<br />
[[Old news|More news]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Template:Main/Headlines&diff=18163Template:Main/Headlines2008-01-08T17:32:05Z<p>Malcolm: remove headline item about HW videos - links still available elsewhere</p>
<hr />
<div>'''Headlines'''<br />
<br />
* Haskell.org was a mentoring organization in the [http://code.google.com/soc 2007 Google Summer of Code]. 9 students were funded by Google to work on infrastructure projects for Haskell; read about some results in Issue 9 of [http://www.haskell.org/pipermail/haskell-cafe/2007-November/034836.html ''The Monad Reader''].<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Video_presentations&diff=16211Video presentations2007-10-19T10:31:01Z<p>Malcolm: HW + ICFP videos, 2007</p>
<hr />
<div>Collected videos of Haskell tutorials and conference presentations,<br />
sorted by topic.<br />
<br />
== Introductions to FP and Haskell ==<br />
<br />
;A Taste of Haskell<br />
:[http://blip.tv/file/324976 Part 1] ([http://s5.video.blip.tv/0560000629508/OSCON-OSCON2007SimonPeytonJonesATasteOfHaskellPartI455.mov .mov])<br />
:[http://blip.tv/file/325646 Part 2] ([http://blip.tv/file/get/OSCON-OSCON2007SimonPeytonJonesATasteOfHaskellPartII749.mov .mov])<br />
:[http://conferences.oreillynet.com/presentations/os2007/os_peytonjones.pdf Slides]<br />
:Simon Peyton-Jones, OSCON, July 2007.<br />
<blockquote><br />
Haskell is the world's leading purely functional programming language<br />
that offers a radical and elegant attack on the whole business of<br />
writing programs. In the last two or three years there has been an<br />
explosion of interest in Haskell, and it is now being used for a<br />
bewildering variety of applications. In this tutorial, I will try to<br />
show you why programming in Haskell is such fun, and how it makes you<br />
think about programming in a new way.<br />
</blockquote><br />
<br />
;[http://channel9.msdn.com/showpost.aspx?postid=326762 Programming language nirvana]<br />
:Simon Peyton-Jones, Eric Meijer, MSR, July 2007.<br />
<br />
;[http://video.google.com/videoplay?docid=-4167170843018186532 Faith, Evolution, and Programming Languages]<br />
:Phil Wadler, April 2007.<br />
<br />
;[http://port25.technet.com/archive/2007/09/26/haskell-in-the-hallway-sam-interviews-simon-peyton-jones.aspx Haskell in the Hallway]<br />
: An interview with SPJ at OSCON, Sep 2007.<br />
<br />
;[http://video.s-inf.de/#FP.2005-SS-Giesl.(COt).HD_Videoaufzeichnung Lecture Functional Programming]<br />
: A computer science lecture at RWTH University Aachen (Germany) dealing with functional programming and haskell (including theoretical background)<br />
<br />
== ICFP 2007 and related workshops ==<br />
<br />
; [http://video.google.com/videoplay?docid=-1518197558546337776 The Reduceron: Widening the von Neumann Bottleneck for Graph Reduction using an FPGA.]<br />
:The Reduceron: Widening the von Neumann Bottleneck for Graph Reduction using an FPGA. A research talk given at IFL'2007 in Freiburg. Work by Matthew Naylor and Colin Runciman of the University of York. <br />
<br />
; [http://www.ludd.ltu.se/~pj/icfp2007/ICFP2007.html Selected videos from IFL 2007 and ICFP 2007.]<br />
<br />
; [http://www.ludd.ltu.se/~pj/hw2007/HaskellWorkshop.html All talks from Haskell Workshop 2007.]<br />
<br />
== Advanced topics ==<br />
<br />
;[http://video.google.com/videoplay?docid=-4851250372422374791 Parametric Polymorphism and the Girard-Reynolds Isomorphism]<br />
:Phil Gossett, April 2007.<br />
<br />
;[http://iba-cg.de/haskell.html Generic Programming in Haskell].<br />
:Johan Jeuring, Sep 2007.<br />
<br />
;[http://golem.ph.utexas.edu/category/2007/09/the_catsters_on_youtube.html Category theoretic monads]<br />
:The Catsters, Sep 2007.<br />
<br />
;[http://www.youtube.com/watch?v=JEJim3t-N9A Adjunctions]<br />
: More from The Catsters, Sep 2007<br />
<br />
== Concurrency and parallelism ==<br />
<br />
;[http://www.blip.tv/file/317758/ Transactional Memory for Concurrent Programming]<br />
:Simon Peyton-Jones, OSCON, July 2007.<br />
<br />
;[http://channel9.msdn.com/Showpost.aspx?postid=231495 Programming in the Age of Concurrency: Software Transactional Memory]<br />
:Simon Peyton-Jones and Tim Harris, September 2006.<br />
<br />
;[http://www.londonhug.net/2007/09/25/nested-data-parallelism-video-returns/ Nested Data Parallelism in Haskell]<br />
:Simon Peyton-Jones, [http://www.londonhug.net/ London HUG], May 2007.<br />
:[http://research.microsoft.com/~simonpj/papers/ndp/NdpSlides.pdf Slides] (pdf)<br />
<br />
== The web ==<br />
<br />
;[http://www.bayfp.org/blog/2007/10/16/alex-jacobson-on-happs-videos-slides/ HAppS]<br />
:Alex Jacobson, [http://www.bayfp.org/blog Bay Area FPers], Oct 2007.<br />
<br />
== Games ==<br />
<br />
;[http://www.londonhug.net/2007/09/24/better-video-for-games-in-haskell/ Games in Haskell]<br />
:2007 meeting of the London Haskell User Group. Matthew Sackman and Tristan Allwood of Imperial College talk about building 3D games in Haskell.<br />
<br />
== The ICFP contest ==<br />
<br />
;[http://video.google.com/videoplay?docid=6419094369756184531 2006 ICFP contest results]<br />
:ICFP, 2006<br />
<br />
;[http://www.ludd.ltu.se/~pj/icfp2007/ICFP%20contest%202007.mov 2007 ICFP contest results]<br />
:ICFP, 2007<br />
<br />
== Livecoding Haskell ==<br />
<br />
;[http://youtube.com/watch?v=xaoLbKWMwoU Haskell music]<br />
:[http://doc.gold.ac.uk/~ma503am/ Yaxu], 2006.<br />
<br />
;[http://youtube.com/watch?v=eLS6GHXWMpA Hacking Haskell music]<br />
:More of Yaxu live coding music and Haskell, 2006.<br />
<br />
;[http://doc.gold.ac.uk/~ma503am/alex/asciirave ASCII Rave in Haskell]<br />
:Yaxu, using words to control the articulation of a physical modelling synthesiser based on the elegant Karplus-Strong algorithm<br />
<br />
== GHC Hackathon presentations ==<br />
<br />
;[http://hackage.haskell.org/trac/ghc/wiki/AboutVideos GHC commentary]<br />
:Simon Peyton Jones and Simon Marlow, 2006.<br />
<br />
== Haskell applications ==<br />
<br />
;[http://ftp.belnet.be/mirrors/FOSDEM/2006/FOSDEM2006-darcs.avi GADTs for darcs]<br />
:David Roundy, FOSDEM, 2006<br />
<br />
; [http://www.uwtv.org/programs/displayevent.aspx?rID=2124&fID=368 Functional Image Synthesis]<br />
: Conal Elliott, talk at University of Washington, November 2000<br />
<br />
[[Category:Tutorials]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=16112Haskell2007-10-08T11:02:52Z<p>Malcolm: new host for haskell workshop videos</p>
<hr />
<div><p style="text-align:center"><br />
Haskell is a general purpose, purely functional programming language featuring static typing, higher order functions, polymorphism, type classes, and monadic effects. Haskell compilers are freely available for almost any computer.<br />
</p><br />
__NOTOC__<br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History of Haskell]]<br />
|-<br />
| [[Future of Haskell]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/ghc GHC]<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/nhc98 nhc98]<br />
: [[Yhc]]<br />
<br />
== Learning Haskell ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]]<br />
|-<br />
| [[Blog articles]]<br />
|-<br />
| [[Video presentations|Videos]]<br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
|}<br />
<br />
== Libraries ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [http://hackage.haskell.org Hackage library database]<br />
|-<br />
| [[Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
|}<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and active projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [[User groups]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [[The Monad.Reader]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] [[Ru/Haskell | ru]] [[cn/Haskell|zh/cn]]<br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
* [http://www.ludd.ltu.se/~pj/hw2007/HaskellWorkshop.html Videos of the Haskell Workshop 2007] talks and discussion are now available again (on a different host to previously). They are in QuickTime (H264 video, AAC audio) format, at 320x240 pixels, low frame rate (but still about 120Mb per half-hour talk).<br />
<br />
* Haskell.org is a mentoring organisation in the [http://code.google.com/soc 2007 Google Summer of Code]. 9 students have been funded by Google to work on infrastructure projects for Haskell.<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=16111Haskell2007-10-08T07:36:46Z<p>Malcolm: </p>
<hr />
<div><p style="text-align:center"><br />
Haskell is a general purpose, purely functional programming language featuring static typing, higher order functions, polymorphism, type classes, and monadic effects. Haskell compilers are freely available for almost any computer.<br />
</p><br />
__NOTOC__<br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History of Haskell]]<br />
|-<br />
| [[Future of Haskell]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/ghc GHC]<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/nhc98 nhc98]<br />
: [[Yhc]]<br />
<br />
== Learning Haskell ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]]<br />
|-<br />
| [[Blog articles]]<br />
|-<br />
| [[Video presentations|Videos]]<br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
|}<br />
<br />
== Libraries ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [http://hackage.haskell.org Hackage library database]<br />
|-<br />
| [[Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
|}<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and active projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [[User groups]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [[The Monad.Reader]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] [[Ru/Haskell | ru]] [[cn/Haskell|zh/cn]]<br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
* [http://web.mac.com/malcolm.wallace/HaskellWorkshop.html Videos of the Haskell Workshop 2007] talks and discussion are now *offline* again. Due to very high demand, the private webhosting has exceeded its transfer limit. We'll be looking for an alternative host.<br />
<br />
* Haskell.org is a mentoring organisation in the [http://code.google.com/soc 2007 Google Summer of Code]. 9 students have been funded by Google to work on infrastructure projects for Haskell.<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=16107Haskell2007-10-07T22:23:22Z<p>Malcolm: </p>
<hr />
<div><p style="text-align:center"><br />
Haskell is a general purpose, purely functional programming language featuring static typing, higher order functions, polymorphism, type classes, and monadic effects. Haskell compilers are freely available for almost any computer.<br />
</p><br />
__NOTOC__<br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History of Haskell]]<br />
|-<br />
| [[Future of Haskell]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/ghc GHC]<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/nhc98 nhc98]<br />
: [[Yhc]]<br />
<br />
== Learning Haskell ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]]<br />
|-<br />
| [[Blog articles]]<br />
|-<br />
| [[Video presentations|Videos]]<br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
|}<br />
<br />
== Libraries ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [http://hackage.haskell.org Hackage library database]<br />
|-<br />
| [[Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
|}<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and active projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [[User groups]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [[The Monad.Reader]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] [[Ru/Haskell | ru]] [[cn/Haskell|zh/cn]]<br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
* [http://web.mac.com/malcolm.wallace/HaskellWorkshop.html Videos of the Haskell Workshop 2007] talks and discussion are now online. (After finding that [http://video.google.com/videosearch?q=haskell+workshop Google Video] was a rather unreliable location, they are now hosted on a private server.) You will need QuickTime and a fast connection (>=1Mbps) to view them.<br />
<br />
* Haskell.org is a mentoring organisation in the [http://code.google.com/soc 2007 Google Summer of Code]. 9 students have been funded by Google to work on infrastructure projects for Haskell.<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Template:Main/Events&diff=16091Template:Main/Events2007-10-06T18:12:36Z<p>Malcolm: fun in the afternoon</p>
<hr />
<div>{| border="0" cellspacing="0" cellpadding="2"<br />
! <br />
!<br />
!<br />
|-<br />
| [http://www.haskell.org/haskellwiki/Hac_2007_II Hac: Haskell Hackathon]<br />
| Freiburg/Germany<br />
| October 5-7<br />
|-<br />
| [http://bayfp.org/ Bay Area FP Group]<br />
| San Francisco/USA<br />
| October 11<br />
|-<br />
| [http://spbhug.folding-maps.org/ Saint Petersburg Haskell User Group]<br />
| Saint Petersburg/Russia<br />
| October 13<br />
|-<br />
| [http://www.comp.mq.edu.au/plrg/sapling.html SAPLING]<br />
| Canberra/Australia<br />
| November 12<br />
|-<br />
| [http://sneezy.cs.nott.ac.uk/fun/ Fun in the Afternoon]<br />
| York, UK<br />
| November 22<br />
|-<br />
| [http://www.cs.uu.nl/~johanj/FPDag2008/ FPDag]<br />
| Utrecht/Netherlands<br />
| January 11 2008<br />
|}<br />
<br />
Other Haskell [[User groups]] and [[Conferences]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=16090Haskell2007-10-06T18:06:11Z<p>Malcolm: change location of Haskell Workshop videos</p>
<hr />
<div><p style="text-align:center"><br />
Haskell is a general purpose, purely functional programming language featuring static typing, higher order functions, polymorphism, type classes, and monadic effects. Haskell compilers are freely available for almost any computer.<br />
</p><br />
__NOTOC__<br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History of Haskell]]<br />
|-<br />
| [[Future of Haskell]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/ghc GHC]<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/nhc98 nhc98]<br />
: [[Yhc]]<br />
<br />
== Learning Haskell ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]]<br />
|-<br />
| [[Blog articles]]<br />
|-<br />
| [[Video presentations|Videos]]<br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
|}<br />
<br />
== Libraries ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [http://hackage.haskell.org Hackage library database]<br />
|-<br />
| [[Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
|}<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and active projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [[User groups]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [[The Monad.Reader]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] [[Ru/Haskell | ru]] [[cn/Haskell|zh/cn]]<br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
* [http://web.mac.com/malcolm.wallace/HaskellWorkshop.html Videos of the Haskell Workshop 2007] talks and discussion are now beginning to appear online. After finding that [http://video.google.com/videosearch?q=haskell+workshop Google Video] was rather unsuitable location, they are now hosted on a private server. You will need QuickTime and a fast connection (>=1Mbps) to view them.<br />
<br />
* Haskell.org is a mentoring organisation in the [http://code.google.com/soc 2007 Google Summer of Code]. 9 students have been funded by Google to work on infrastructure projects for Haskell.<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=15955Haskell2007-09-30T18:27:07Z<p>Malcolm: New headline: videos from the Haskell Workshop</p>
<hr />
<div><p style="text-align:center"><br />
Haskell is a general purpose, purely functional programming language featuring static typing, higher order functions, polymorphism, type classes, and monadic effects. Haskell compilers are freely available for almost any computer.<br />
</p><br />
__NOTOC__<br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History of Haskell]]<br />
|-<br />
| [[Future of Haskell]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/ghc GHC]<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/nhc98 nhc98]<br />
: [[Yhc]]<br />
<br />
== Learning Haskell ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]]<br />
|-<br />
| [[Blog articles]]<br />
|-<br />
| [[Video presentations|Videos]]<br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
| [[Example code]] <br />
|-<br />
|}<br />
<br />
== Libraries ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [http://hackage.haskell.org Hackage library database]<br />
|-<br />
| [[Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
|}<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and active projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [[User groups]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [[The Monad.Reader]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Consultants]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] [[Ru/Haskell | ru]][[cn/Haskell | zh_CN]]<br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
* Videos of the Haskell Workshop 2007 talks and discussion are now beginning to appear on [http://video.google.com/videosearch?q=haskell+workshop Google Video]. The upload connection speed from the conference venue is slow, so more talks will appear gradually over the next day or two.<br />
<br />
* Haskell.org is a mentoring organisation in the [http://code.google.com/soc 2007 Google Summer of Code]. 9 students have been funded by Google to work on infrastructure projects for Haskell.<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
* The [http://www.haskell.org/communities May 2007] Haskell Communities and Activities report is now out, documenting projects in the Haskell community.<br />
<br />
* Haskell, for the third year running, was used by [http://googleresearch.blogspot.com/2006/09/and-awards-go-to.html the winning team] in the [http://www.boundvariable.org/scoreboard.shtml ICFP Programming Contest].<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Hac_2007_II/Attendees&diff=15449Hac 2007 II/Attendees2007-09-08T15:23:24Z<p>Malcolm: can't come</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
== Registrants ==<br />
<br />
If you've registered, do add your name to the following table.:<br />
<br />
{| class="wikitable"<br />
! Number<br />
! Name<br />
! Nick<br />
! Affiliiation<br />
|-<br />
| 1<br />
| Don Stewart<br />
| dons<br />
| Galois<br />
|-<br />
| 2<br />
| Ian Lynagh<br />
| Igloo<br />
|<br />
|-<br />
| 3<br />
| Duncan Coutts<br />
| dcoutts<br />
| Oxford<br />
|-<br />
| 4<br />
| <br />
|<br />
|<br />
|-<br />
| 5<br />
| Lennart Kolmodin<br />
| kolmodin<br />
| Chalmers<br />
|-<br />
| 6<br />
| Pepe Iborra<br />
| mnislaih<br />
| UPV<br />
|-<br />
| 7<br />
| Ben Lippmeier<br />
| benl23<br />
| ANU<br />
|-<br />
| 8<br />
| David Himmelstrup<br />
| Lemmih<br />
|<br />
|- <br />
| 9<br />
| Bjrn Bringert<br />
| bringert<br />
| Chalmers <br />
|-<br />
| 10<br />
| David Waern<br />
| waern<br />
|<br />
|-<br />
| 11<br />
| Rickard Nilsson<br />
| ricky<br />
|<br />
|-<br />
| 12<br />
| Tim Chevalier<br />
| Binkley<br />
|<br />
|-<br />
| 13<br />
| Neil Mitchell<br />
| ndm<br />
|<br />
|-<br />
| 14<br />
| Andy Gill<br />
| andyjgill<br />
| Galois<br />
|-<br />
| 15<br />
| Clemens Fruhwirth<br />
| therp<br />
|<br />
|-<br />
| 16<br />
| Thorkil Naur<br />
| naur<br />
|<br />
|-<br />
| 17<br />
| Benedikt Schmidt<br />
| beschmi<br />
|<br />
|-<br />
|18<br />
| Thomas Schilling<br />
| nominolo<br />
|<br />
|-<br />
|19<br />
| Conal Elliott<br />
| conal<br />
|<br />
|-<br />
|20<br />
| Russell O'Connor<br />
| roconnor<br />
|<br />
|-<br />
|21<br />
| Ganesh Sittampalam<br />
| Heffalump<br />
| Credit Suisse<br />
|-<br />
|22<br />
| Jürgen Nicklisch<br />
| Jutaro<br />
| <br />
|-<br />
|23<br />
| Ivan Tarasov<br />
| ivant<br />
|<br />
|-<br />
|24<br />
| Johan Tibell<br />
| tibbe<br />
| <br />
|-<br />
|}<br />
<br />
== Arriving ==<br />
<br />
===Train===<br />
<br />
* Igloo: By train, 29 Sep at 21:00, Freiburg Hbf.<br />
* Lemmih: By train, 29 Sep at 18:00, Freiburg Hbf.<br />
* ivant: By train, 30 Sep, at 8:00, from Vienna<br />
* tibbe: By train, 5 Oct, at 8:00, from Zurich<br />
<br />
===Air===<br />
<br />
* Andy Gill, 29 Sep Frankfurt<br />
* Don Stewart, 29 Sep 8.35 am, Frankfurt<br />
* Thomas Schilling, 29 Sep Frankfurt Main<br />
* Conal Elliott, 25 Sep 11:10 am, Frankfurt<br />
* Ganesh Sittampalam, 29 Sep 2:50 pm, Zurich<br />
* Pepe Iborra, 29 Sep 8:40 pm, Frankfurt Hahn (HHN)<br />
<br />
== Accomodation ==<br />
<br />
A number of accommodation options are available. To organise to share,<br />
contact other attendees on irc or via email. <br />
<br />
=== Black Forest Hostel ===<br />
<br />
Some people are staying at the hostel: http://www.blackforest-hostel.de/<br />
<br />
* Igloo, Lemmih, nominolo: 29 Sep - 8 Oct<br />
* nominolo<br />
* conal: same, in a 6-bed dorm room, 25 Sep - 8 Oct<br />
* ivant: hopefully, same, 30 Sep 8 Oct<br />
* tibbe: 6-bed dorm room, 5 Oct - 7 Oct<br />
* mnislaih: same<br />
<br />
=== Best Western ===<br />
<br />
* dons, andy: Best Western</div>Malcolmhttps://wiki.haskell.org/index.php?title=Yhc/Introduction&diff=15422Yhc/Introduction2007-09-05T20:44:28Z<p>Malcolm: </p>
<hr />
<div>{{Yhc}}<br />
<br />
== Prerequisites ==<br />
To build yhc from source, you will require:<br />
* GHC<br />
* any C compiler<br />
* python<br />
* scons<br />
* darcs<br />
* lots of patience<br />
<br />
== Downloading Yhc ==<br />
<br />
The current development version is available online. Please note that yhc is still not finished, so don't expect a full polished compiler yet!<br />
<br />
darcs get --partial http://darcs.haskell.org/yhc<br />
<br />
== Contacts ==<br />
<br />
There is a [http://haskell.org/mailman/listinfo/yhc mailing list] for general discussion, bug reports etc.<br />
<br />
There is also a [http://yhc06.blogspot.com/ blog], where development style posts are made. This is probably better for getting a feel of the project.<br />
<br />
There is also a [http://code.google.com/p/yhc/issues/list bug reporting] place.<br />
<br />
== Ports ==<br />
<br />
The following ports have been done, and should work straight from the darcs repo, without additional modifications. If your platform is not on this list see [[Yhc/Porting|the Yhc porting guide]] and give it a try, but if it doesn't work straight away (within 10 minutes), its usually best to give up, unless you are a scons expert. :-)<br />
<br />
* Linux/x86 - Tom Shackell<br />
* Linux/x86-64 - Tom Shackell + Andrew Wilkinson<br />
* Windows/x86 - [[User:NeilMitchell|Neil Mitchell]]<br />
* Mac OS X/PPC - Tom Davie<br />
* Mac OS X/PPC64 - non-working<br />
* Mac OS X/x86 - untested<br />
* OpenBSD/x86 - Donald Bruce Stewart<br />
* FreeBSD/x86 - non-working<br />
* Irix/mips64 - Donald Bruce Stewart<br />
* Solaris - IurieCn / phys_rules<br />
* Plan 9 - vegai [in progress]<br />
* PalmOS - stepcut [in progress]<br />
<br />
== License & Copyright ==<br />
<br />
[[Yhc]] is (C) 1996-2005 its contributors, which include Tom Shackell, [[User:NeilMitchell|Neil Mitchell]], Andrew Wilkinson, Mike Dodds, Tom Davie and more.<br />
<br />
Yhc is substantially based on [[nhc98]], which is (C) Niklas Röjemo, 1991-1998. Many parts of the nhc98 compiler, libraries, and build system were contributed or modified by Malcolm Wallace, Jan Sparud, David Wakeling, Colin Runciman, Phil Hassall, Olaf Chitil, and Thomas Nordin, and are copyright to them, their respective institutions, or funding bodies, (C) 1996-2006.<br />
<br />
Yhc is released under the the [http://haskell.org/nhc98/copyright.html same license as nhc], and additionally under the GPL, but programs compiled with Yhc are free from additional copyright restrictions. All contributions are assumed to be under the above license.<br />
<br />
<br />
== Introductory Material ==<br />
<br />
[[Media:Yhc-presentation-2006_feb_09.pdf|Yhc Presentation]] - 09 Feb 2006, Tom Shackell</div>Malcolmhttps://wiki.haskell.org/index.php?title=Template:Main/Events&diff=14108Template:Main/Events2007-07-09T14:51:53Z<p>Malcolm: </p>
<hr />
<div>{| border="0" cellspacing="0" cellpadding="2"<br />
! <br />
!<br />
!<br />
|-<br />
| [http://iba-cg.de/haskell.html HaL2 - Haskell in Leipzig]<br />
| Leipzig/Germany<br />
| July 10, 2007<br />
|-<br />
| [http://www.icfpcontest.org/ ICFP Programming Contest 2007]<br />
| [http://haskell.org/haskellwiki/ICFP_Programming_Contest/Teams_2007 Anywhere]<br />
| July 20-23, 2007<br />
|-<br />
| [http://conferences.oreillynet.com/cs/os2007/view/e_sess/14016 OSCON Haskell Tutorial]<br />
| Portland/Oregon<br />
| July 23, 2007<br />
|-<br />
| [http://f.loulergue.free.fr/HLPP/hlpp2007/ High-level Parallel Programming Workshop]<br />
| Tokyo/Japan<br />
| July 23-24, 2007<br />
|-<br />
| [http://proglang.informatik.uni-freiburg.de/IFL2007/ IFL]<br />
| Freiburg/Germany<br />
| September 27-29, 2007<br />
|-<br />
| [http://www.cse.unsw.edu.au/~keller/haskellws/HaskellWorkshop.html Haskell Workshop]<br />
| Freiburg/Germany<br />
| September 30, 2007<br />
|-<br />
| [http://www.informatik.uni-bonn.de/~ralf/icfp07.html ICFP]<br />
| Freiburg/Germany<br />
| October 1-3 2007<br />
|-<br />
| [http://www.haskell.org/haskellwiki/Hac_2007_II Hackathon]<br />
| Freiburg/Germany<br />
| Sept/October 2007<br />
|-<br />
| [http://www.cs.uu.nl/~johanj/FPDag2008/ FPDag]<br />
| Utrecht/Netherlands<br />
| January 11, 2008<br />
|-<br />
|}<br />
<br />
[[Category:Events]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Hac_2007_II&diff=14107Hac 2007 II2007-07-09T14:44:06Z<p>Malcolm: </p>
<hr />
<div>Please add yourself to this list if you are potentially interested in being part of a Hackathon colocated with [http://www.cse.unsw.edu.au/~keller/haskellws/HaskellWorkshop.html Haskell Workshop] and [http://www.informatik.uni-bonn.de/~ralf/icfp07.html ICFP] 2007<br />
(i.e. in Freiburg, Germany, around the end of September/beginning of October).<br />
<br />
* Ian Lynagh (Igloo)<br />
* Duncan Coutts (dcoutts)<br />
* Malcolm Wallace (malcolmw)<br />
<br />
In terms of dates, IFL immediately preceedes HW, which immediately preceeds ICFP, so the best might be to go for the weekend Fri-Sun afterwards. This gives a days rest after a week's conferences, or CUFP for the diehards, on the Thursday.<br />
<br />
An alternative might be to run the Hackathon in parallel with IFL (or ICFP), but this might result in some people who want to go not being able to make much of it.<br />
<br />
== Potential topics for a group hack ==<br />
<br />
Add ideas here for which you think hacking together as a group (rather than individually) would be beneficial.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=12992Haskell2007-05-11T12:50:34Z<p>Malcolm: GSoC tweak</p>
<hr />
<div><p style="text-align:center"><br />
Haskell is a general purpose, purely functional programming language featuring static typing, higher order functions, polymorphism, type classes, and monadic effects. Haskell compilers are freely available for almost any computer.<br />
</p><br />
__NOTOC__<br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History of Haskell]]<br />
|-<br />
| [[Future of Haskell]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/ghc GHC]<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/nhc98 nhc98]<br />
: [[Yhc]]<br />
<br />
== Getting started ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]]<br />
|-<br />
| [[Blog articles]]<br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
| [[Example code]] <br />
|-<br />
|}<br />
<br />
== Libraries ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [http://hackage.haskell.org Hackage library database]<br />
|-<br />
| [[Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
|}<br />
<br />
<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and active projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
|[[Future projects]]<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [[User groups]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [[The Monad.Reader]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Consultants]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] [[Ru/Haskell | ru]]<br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
<br />
* Haskell.org is a mentoring organisation in the [http://code.google.com/soc 2007 Google Summer of Code]. 9 students have been funded by Google to work on infrastructure projects for Haskell.<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
* The [http://www.haskell.org/communities November 2006] Haskell Communities and Activities report is now out, documenting projects in the Haskell community.<br />
<br />
* Haskell, for the third year running, was used by [http://googleresearch.blogspot.com/2006/09/and-awards-go-to.html the winning team] in the [http://www.boundvariable.org/scoreboard.shtml ICFP Programming Contest].<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=11984Haskell2007-03-15T15:44:56Z<p>Malcolm: summer of code</p>
<hr />
<div><p style="text-align:center"><br />
Haskell is a general purpose, purely functional programming language featuring static typing, higher order functions, polymorphism, type classes, and monadic effects. Haskell compilers are freely available for almost any computer.<br />
</p><br />
__NOTOC__<br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History_of_Haskell|History]]<br />
|-<br />
| [[Future]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/ghc GHC]<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/nhc98 nhc98]<br />
: [[Yhc]]<br />
<br />
== Getting started ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]]<br />
|-<br />
| [[Blog articles]]<br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
| [[Example code]] <br />
|-<br />
|}<br />
<br />
== Libraries ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [http://hackage.haskell.org Hackage library database]<br />
|-<br />
| [[Libraries and tools|Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
|}<br />
<br />
<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Consultants]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] <br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
<br />
* Haskell.org has been accepted as a mentoring organisation in the [http://code.google.com/soc 2007 Google Summer of Code]. Students are invited to read our [http://hackage.haskell.org/trac/summer-of-code project suggestions] and then apply to Google for funding.<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
* The [http://www.haskell.org/communities November 2006] Haskell Communities and Activities report is now out, documenting projects in the Haskell community.<br />
<br />
* Haskell, for the third year running, was used by [http://googleresearch.blogspot.com/2006/09/and-awards-go-to.html the winning team] in the [http://www.boundvariable.org/scoreboard.shtml ICFP Programming Contest].<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
|}</div>Malcolmhttps://wiki.haskell.org/index.php?title=Cabal-make&diff=11418Cabal-make2007-02-19T17:28:54Z<p>Malcolm: need a recent version of hscolour</p>
<hr />
<div>== Abstract ==<br />
<br />
Cabal-make is an include file for [http://www.gnu.org/software/make GNU make] files to be used with [[Cabal]] in sharing Haskell packages. It is intended mainly for package authors. People who just build & install packages software can do so entirely with [[Cabal]] commands. In particular, it's a bit hairy to get the best results from [[Haddock]] & [[hscolour]].<br />
<br />
== Features ==<br />
<br />
* Web-based, cross-package links in [[Haddock]] docs (documentation generated by [[Haddock]]).<br />
* Syntax coloring via [[hscolour]], with per-project CSS.<br />
* Links from the [[Haddock]] docs to [[hscolour]]'d code (per-module, and per-entity).<br />
* Links from [[Haddock]] docs to wiki-based user comment pages (per-project and per-module), with automatic subscription (for email notification).<br />
* Set up with [[darcs]] repositories on http://darcs.haskell.org.<br />
* Make distribution tarballs and install on server.<br />
* Automated download and build in a fresh local temp directory for testing.<br />
* Copy [[Haddock]] docs to server<br />
* Generate editor tags files (via [[hasktags]]).<br />
* Convert source files between dos-style and unix-style line endings.<br />
* Customizable.<br />
<br />
== Example use ==<br />
<br />
On my Windows system, I've placed cabal-make at <code>c:\Haskell\cabal-make</code>, and I like to install Haskell packages under <code>c:\Haskell\packages</code>. I might write a <code>Makefile</code> for the package [[TV]] as follows:<br />
<br />
{| class="wikitable"<br />
| style="padding:0px 20px 0px 20px;" |<br />
<pre><br />
user = conal<br />
configure-dirs=--prefix=c:/Haskell/packages --datadir=c:/Haskell/packages<br />
haddock_interfaces=\<br />
http://haskell.org/ghc/docs/latest/html/libraries/base,c:/ghc/ghc-6.6/doc/html/libraries/base/base.haddock \<br />
http://haskell.org/ghc/docs/latest/html/libraries/mtl,c:/ghc/ghc-6.6/doc/html/libraries/mtl/mtl.haddock \<br />
http://darcs.haskell.org/packages/DeepArrow/doc/html,c:/Haskell/packages/DeepArrow-0.0.1/doc/html/DeepArrow.haddock<br />
<br />
include c:/Haskell/cabal-make/cabal-make.inc<br />
</pre><br />
|}<br />
<br />
I don't like wiring the interface paths (especially with version numbers) into my makefile, but I don't know how to avoid it. Suggestions, please.<br />
<br />
To build [[TV]], I run "<code>make</code>" with targets like "<code>configure</code>", "<code>build</code>", "<code>doc</code>", and "<code>install</code>". Or "<code>all</code>" (default) for all of these targets.<br />
<br />
[[Darcs]]-related targets: <br />
* <code>darcs-repo</code>: makes a repository at http://darcs.haskell.org/packages/TV<br />
* <code>darcs-tag</code>: do "<code>darcs tag</code>" using current version (extracted from project [[Cabal]] file)<br />
* <code>darcs-dist</code>: make a tarball and copy to server<br />
* <code>web-doc</code>: copy docs & colored sources to the server<br />
* <code>test-get-build</code>: Test by doing "<code>darcs get</code>", configure, and build in a fresh temp directory<br />
<br />
The target "<code>watch-comments</code>" sets up a subscription to the Haskell wiki talk pages that correspond to the package's modules (for the user comment links inserted in the [[Haddock]] docs.)<br />
<br />
There are a few other targets as well. See the source.<br />
<br />
== Specializing ==<br />
<br />
I use a trick for collecting my favorite setting to be saved across my own<br />
packages. The file is called "<code>my-cabal-make.inc</code>":<br />
<br />
{| class="wikitable"<br />
| style="padding:0px 20px 0px 20px;" |<br />
<pre><br />
user = conal<br />
cabal-make = c:/Haskell/cabal-make<br />
configure-dirs = --prefix=c:/Haskell/packages --datadir=c:/Haskell/packages<br />
hscolour-css = $(cabal-make)/hscolour.css<br />
<br />
include $(cabal-make)/cabal-make.inc<br />
</pre><br />
|}<br />
<br />
Then I just have to define <code>haddock_interfaces</code> and include <code>my-cabal-make</code>. My [[TV]] <code>Makefile</code> is really<br />
<br />
{| class="wikitable"<br />
| style="padding:0px 20px 0px 20px;" |<br />
<pre><br />
haddock_interfaces=\<br />
http://haskell.org/ghc/docs/latest/html/libraries/base,c:/ghc/ghc-6.6/doc/html/libraries/base/base.haddock \<br />
http://haskell.org/ghc/docs/latest/html/libraries/mtl,c:/ghc/ghc-6.6/doc/html/libraries/mtl/mtl.haddock \<br />
http://darcs.haskell.org/packages/DeepArrow/doc/html,c:/Haskell/packages/DeepArrow-0.0.1/doc/html/DeepArrow.haddock<br />
<br />
include ../my-cabal-make.inc<br />
</pre><br />
|}<br />
<br />
== Dependencies ==<br />
<br />
* Recent [[Cabal]] (1.1.8 or better, or get the latest from [http://darcs.haskell.org/cabal Cabal darcs repo])<br />
* Recent [[Haddock]] (0.8.1 or better, or latest from [http://darcs.haskell.org/haddock Haddock darcs repo])<br />
* Recent [[hscolour]] (1.7 or newer, or latest from [http://www.cs.york.ac.uk/fp/darcs/hscolour hscolour darcs repo])<br />
* [http://www.gnu.org/software/make GNU make]<br />
<br />
== Use guidelines ==<br />
<br />
* In order for cabal-make to work, you have to list each of your source modules on a line by itself, ''including'' the first one in the list (instead of placing it aside the Cabal directive). You can use "<code>make show-modules</code>" to see if your list of source modules is extracted correctly.<br />
* Cabal-make assumes your source code to be under <code>src</code>.<br />
<br />
== Get it ==<br />
<br />
<blockquote><br />
<tt>darcs get --partial http://darcs.haskell.org/cabal-make</tt><br />
</blockquote><br />
<br />
== Customization ==<br />
<br />
There are several customization variables defined in cabal-make that can be overriden. Simply define these variables in your makefile before "<code>cabal-make.inc</code>". See the "Settings" section of the source.<br />
<br />
== To do ==<br />
<br />
* Eliminate hard-wiring the interface paths into my makefile.<br />
* Eliminate the restrictions/assumptions listed in [[#Use guidelines]].<br />
<br />
[[Category:Tools]]<br />
[[Category:Cabal]]<br />
[[Category:Libraries]]<br />
[[Category:Packages]]</div>Malcolmhttps://wiki.haskell.org/index.php?title=Haskell&diff=11302Haskell2007-02-14T13:45:32Z<p>Malcolm: </p>
<hr />
<div>[[Image:Haskelllogo-small.jpg|center|Haskell - A purely functional language]]<br />
<br />
<center><br />
Haskell is a general purpose, purely functional programming language. Haskell compilers are freely available for almost any computer.<br />
</center><br />
__NOTOC__<br />
<center><br />
{| border=0 cellspacing=5 cellpadding=15<br />
| valign=top bgcolor=#F0F0F0 style="text-align:left" |<br />
== About ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Introduction]]<br />
|-<br />
| [[Language and library specification|Language definition]]<br />
|-<br />
| [[History_of_Haskell|History]]<br />
|-<br />
| [[Future]]<br />
|-<br />
| [[Implementations]]<br />
|-<br />
|}<br />
: [http://haskell.org/hugs Hugs]<br />
: [http://haskell.org/ghc GHC]<br />
: [[Yhc]] <br />
: [http://haskell.org/nhc98 nhc98]<br />
<br />
== Getting started ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Haskell in 5 steps]]<br />
|-<br />
| [[Learning Haskell]]<br />
|-<br />
| [[Books and tutorials]]<br />
|-<br />
| [[Research papers]]<br />
|-<br />
|}<br />
<br />
== Documentation ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/ghc/docs/latest/html/libraries/ Standard libraries]<br />
|-<br />
| [[Libraries and tools|Applications and libraries]]<br />
|-<br />
| [http://haskell.org/hoogle Hoogle: library search]<br />
|-<br />
| [[:Category:Haskell|Wiki articles]] <br />
|-<br />
| [http://en.wikibooks.org/wiki/Haskell Wikibook]<br />
|-<br />
| [[Example code]]<br />
|-<br />
|}<br />
<br />
== Community ==<br />
<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [http://haskell.org/communities/ Communities and projects]<br />
|}<br />
: [[Haskell_in_education|Education]]<br />
: [[Haskell in industry|Industry]]<br />
: [[Haskell_in_research|Research]]<br />
: [[Haskell_and_mathematics|Mathematics]]<br />
{| border="0" cellspacing="0" cellpadding="2" style="text-align:left"<br />
|-<br />
| [[Mailing lists]]<br />
|-<br />
| [[IRC channel]]<br />
|-<br />
| [http://planet.haskell.org/ Planet Haskell]<br />
|-<br />
| [[Haskell Weekly News]]<br />
|-<br />
| [http://sequence.complete.org The Haskell Sequence]<br />
|-<br />
| [http://hpaste.org/ Haskell pastebin]<br />
|-<br />
| [[Conferences]]<br />
|-<br />
| [[Programming contests|Contests]]<br />
|-<br />
| [[Jobs]]<br />
|-<br />
| [[Consultants]]<br />
|-<br />
| [[Humor]]<br />
|-<br />
| [[Merchandise]]<br />
|-<br />
| [[Haskell.org|haskell.org]]<br />
|-<br />
| [[HaskellWiki:Contributing|Contributing to this site]]<br />
|-<br />
| Languages: [[Haskell|en]] [[Es/Haskell|es]] [[Ro/Haskell|ro]] [[Pt/Haskell|pt]] [[Fr/Haskell|fr]] <br />
|-<br />
|}<br />
<br />
|valign=top bgcolor=#F0F0F0 width=65% style="text-align:left"|<br />
<br />
== Events ==<br />
{{:Events}}<br />
<br />
<br />
== Headlines ==<br />
<br />
* The [http://hackage.haskell.org/trac/haskell-prime Haskell-prime] committee has started work on defining the next minor revision of the language specification.<br />
<br />
* The [http://www.haskell.org/communities November 2006] Haskell Communities and Activities report is now out, documenting projects in the Haskell community.<br />
<br />
* Haskell, for the third year running, was used by [http://googleresearch.blogspot.com/2006/09/and-awards-go-to.html the winning team] in the [http://www.boundvariable.org/scoreboard.shtml ICFP Programming Contest].<br />
<br />
== News ==<br />
{{:News}}<br />
<br />
* 31 of january 2007: The first romanian book of Haskell, "Introducere in Haskell 98 prin exemple" (eng: An introduction in Haskell by examples) by Dan Popa was published by [http://www.edusoft.ro/detalii.php?id=81 EduSoft], with a foreword by Simon Peyton-Jones. Details on the [[Ro/Haskell|ro]] page. The book is dedicated to the Haskell community. Thank you !<br />
|}<br />
<br />
</center></div>Malcolmhttps://wiki.haskell.org/index.php?title=Yhc/Introduction&diff=11070Yhc/Introduction2007-02-06T12:04:17Z<p>Malcolm: </p>
<hr />
<div>{{Yhc}}<br />
<br />
== Prerequisites ==<br />
To build yhc from source, you will require:<br />
* GHC<br />
* any C compiler<br />
* python<br />
* scons<br />
* darcs<br />
* svn<br />
<br />
== Downloading Yhc ==<br />
<br />
The current development version is available online. Please note that yhc is still not finished, so don't expect a full polished compiler yet!<br />
<br />
darcs get --partial http://darcs.haskell.org/yhc<br />
<br />
== Contacts ==<br />
<br />
There is a [http://haskell.org/mailman/listinfo/yhc mailing list] for general discussion, bug reports etc.<br />
<br />
There is also a [http://yhc06.blogspot.com/ blog], where development style posts are made. This is probably better for getting a feel of the project.<br />
<br />
There is also a [http://code.google.com/p/yhc/issues/list bug reporting] place.<br />
<br />
== Ports ==<br />
<br />
The following ports have been done, and should work straight from the darcs repo, without additional modifications. If your platform is not on this list see [[Yhc/Porting|the Yhc porting guide]], its usually about 10 minutes work!<br />
<br />
* Linux/x86 - Tom Shackell<br />
* Linux/x86-64 - Tom Shackell + Andrew Wilkinson<br />
* Windows/x86 - [[User:NeilMitchell|Neil Mitchell]]<br />
* Mac OS X/PPC - Tom Davie<br />
* OpenBSD/x86 - Donald Bruce Stewart<br />
* Irix/mips64 - Donald Bruce Stewart<br />
* Solaris - IurieCn / phys_rules<br />
* Plan 9 - vegai [in progress]<br />
* PalmOS - stepcut [in progress]<br />
<br />
== License & Copyright ==<br />
<br />
[[Yhc]] is (C) 1996-2005 its contributors, which include Tom Shackell, [[User:NeilMitchell|Neil Mitchell]], Andrew Wilkinson, Mike Dodds, Tom Davie and more.<br />
<br />
Yhc is substantially based on [[nhc98]], which is (C) Niklas Röjemo, 1991-1998. Many parts of the nhc98 compiler, libraries, and build system were contributed or modified by Malcolm Wallace, Jan Sparud, David Wakeling, Colin Runciman, Phil Hassall, Olaf Chitil, and Thomas Nordin, and are copyright to them, their respective institutions, or funding bodies, (C) 1996-2004.<br />
<br />
Yhc is released under the the [http://haskell.org/nhc98/copyright.html same license as nhc], and additionally under the GPL, but programs compiled with Yhc are free from additional copyright restrictions. All contributions are assumed to be under the above license.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Yhc/FAQ&diff=11069Yhc/FAQ2007-02-06T11:59:34Z<p>Malcolm: </p>
<hr />
<div>{{Yhc}}<br />
== In relation to [[nhc98]] ==<br />
<br />
'''Q) What did you think needed changing from nhc98?'''<br />
<br />
'''A)''' nhc98's backend had several problems (not portable to Windows, high memory bug).<br />
<br />
'''Q) nhc98 had a small size and a simple implementation, what about yhc?'''<br />
<br />
'''A)''' Yhc has simpler bytecodes (not by much, but by a bit) and is designed to have a simpler implementation. Yhc needs fewer bytecodes to encode a program, and executes each bytecode slightly faster.<br />
<br />
'''Q) I was interested in nhc, should I now be more interested in yhc?'''<br />
<br />
'''A)''' Good question. Unfortunately there isn't a good answer yet - try them both and see which one you like. nhc98 has a better build system, with fewer external dependencies, and will generally just work if your machine is supported. yhc is in theory more portable, but you will need to spend longer working out how to get it up and running, and you will have to install lots of other software first.<br />
<br />
'''Q) Does the Yhc back-end support everything that the current nhc98 back-end does?'''<br />
<br />
'''A)''' Not yet. Nhc98 supports heap and time profiling whereas this hasn't been implemented yet, more<br />
crucially the FFI support in yhc is also not ready yet. However, in terms of simple Haskell 98, yhc does everything nhc98<br />
does.<br />
<br />
== Portability ==<br />
<br />
'''Q) How portable is Yhc itself?'''<br />
<br />
'''A)''' If your platform already has GHC, plus a C compiler that at least looks slightly ANSI C compliant, plus a Python installation, plus a darcs installation, plus a scons installation, plus a svn installation, it could be a 10 minute port. Most of this time will be spent fighting with the build system rather than the source code. It should certainly be possible to bootstrap yhc and we intend to provide makefiles for doing this soon, however until that time GHC is a dependancy.<br />
<br />
'''Q) Why does it fail to build on my platform?'''<br />
<br />
'''A)''' On MacOS X, you need to install libgmp somewhere that scons can see it. E.g. if you have GHC, copy its libgmp.a and libgmp.la into /usr/lib, and gmp.h into /usr/include.<br />
<br />
'''Q) What about programs compiled by Yhc?'''<br />
<br />
'''A)''' If you use sensible libraries - i.e. don't build up filepaths by ++, then you should be fine. If you use the FFI you will need to compile the FFI bits separate for every platform you support.<br />
<br />
== Others ==<br />
<br />
'''Q) Does it support Unicode?'''<br />
<br />
'''A)''' Internally all characters are stored as 32 bit integers, so that bit doesn't have a problem. However, currently there is no library support to access the full unicode range. All source files are also assumed to be ASCII. Adding Unicode support is probably not very hard, volunteers welcome!</div>Malcolmhttps://wiki.haskell.org/index.php?title=Yhc/FAQ&diff=11068Yhc/FAQ2007-02-06T11:24:20Z<p>Malcolm: </p>
<hr />
<div>{{Yhc}}<br />
== In relation to [[nhc98]] ==<br />
<br />
'''Q) What did you think needed changing from nhc98?'''<br />
<br />
'''A)''' nhc98's backend had several problems (not portable to Windows, high memory bug).<br />
<br />
'''Q) nhc98 had a small size and a simple implementation, what about yhc?'''<br />
<br />
'''A)''' Yhc has simpler bytecodes (not by much, but by a bit) and is designed to have a simpler implementation. Yhc needs fewer bytecodes to encode a program, and executes each bytecode slightly faster.<br />
<br />
'''Q) I was interested in nhc, should I now be more interested in yhc?'''<br />
<br />
'''A)''' Good question. Unfortunately there isn't a good answer yet - try them both and see which one you like. nhc98 has a better build system, and will generally just work if your machine is supported. yhc is in theory more portable, but you will need to spend longer working out how to get it up and running.<br />
<br />
'''Q) Does the Yhc back-end support everything that the current nhc98 back-end does?'''<br />
<br />
'''A)''' Not yet. Nhc98 supports heap and time profiling whereas this hasn't been implemented yet, more<br />
crucially the FFI support in yhc is also not ready yet. However, in terms of simple Haskell 98, yhc does everything nhc98<br />
does.<br />
<br />
== Portability ==<br />
<br />
'''Q) How portable is Yhc itself?'''<br />
<br />
'''A)''' If your architecture already has GHC, plus a C compiler that at least looks slightly ANSI C compliant, plus a Python installation, plus a scons installation, it could be a 10 minute port. Most of this time will be spent fighting with the build system rather than the source code. It should certainly be possible to bootstrap yhc and we intend to provide makefiles for doing this soon, however until that time GHC is a dependancy.<br />
<br />
'''Q) Why does it fail to build on my platform?'''<br />
<br />
'''A)''' On MacOS X, you need to install libgmp somewhere that scons can see it. (Unfortunately I don't know how to do that.)<br />
<br />
<br />
'''Q) What about programs compiled by Yhc?'''<br />
<br />
'''A)''' If you use sensible libraries - i.e. don't build up filepaths by ++, then you should be fine. If you use the FFI you will need to compile the FFI bits separate for every platform you support.<br />
<br />
== Others ==<br />
<br />
'''Q) Does it support Unicode?'''<br />
<br />
'''A)''' Internally all characters are stored as 32 bit integers, so that bit doesn't have a problem. However, currently there is no library support to access the full unicode range. All source files are also assumed to be ASCII. Adding Unicode support is probably not very hard, volunteers welcome!</div>Malcolmhttps://wiki.haskell.org/index.php?title=Polyparse&diff=10673Polyparse2007-01-23T16:32:24Z<p>Malcolm: </p>
<hr />
<div>== Download ==<br />
Software distribution webpage: http://www.cs.york.ac.uk/fp/polyparse<br />
<br />
== Useful information ==<br />
'''polyparse''' is a collection of alternative parser combinator libraries.<br />
Please edit this page to add any useful information you can think of.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Polyparse&diff=10672Polyparse2007-01-23T16:31:17Z<p>Malcolm: </p>
<hr />
<div>= polyparse =<br />
Software distribution webpage: http://www.cs.york.ac.uk/fp/polyparse<br />
<br />
'''polyparse''' is a collection of alternative parser combinator libraries.<br />
Please edit this page to add any useful information you can think of.</div>Malcolmhttps://wiki.haskell.org/index.php?title=Talk:SantaClausProblemV2&diff=10100Talk:SantaClausProblemV22007-01-11T16:07:12Z<p>Malcolm: </p>
<hr />
<div>= Beautiful concurrency =<br />
<br />
I am writing a chapter for a book called "Beautiful code", edited by Greg Wilson. The chapter is a tutorial about Software Transactional Memory in Haskell.<br />
<br />
After a lot of useful feedback, I have now completed [http://research.microsoft.com/~simonpj/papers/stm/beautiful.ps Version 2] of the paper. The [http://research.microsoft.com/~simonpj/papers/stm/Santa.hs.gz Haskell code] is also available.<br />
<br />
I would welcome any comments or questions you have on the paper, or constructive suggestions for improving it; the more concrete the better. You can see what people said about version 1 on the version 1 talk page: [[Talk:SantaClausProblem ]].<br />
<br />
The book is aimed at a general audience of programmers, <em>not</em> Haskell geeks, so I have tried to explain everything necessary as I go along. So if you are not a Haskell expert, your input would be particularly valuable to me.<br />
<br />
You can email me directly (simonpj@microsoft.com), or add Wiki talk notes below.<br />
<br />
If you give your real name somewhere in your text (or email it to me), I'll add you to the acknowledgements at the end of the chapter. Notably, I'd like to acknowledge Steven807, Tibbe, Fanf, Garious, Rycee, Brecknell, Mvanier, Gaal, Fernando, Gknauth, EngineerScotty, BoAdler.<br />
<br />
----------<br />
<br />
[[User:Simonpj|Simonpj]] 14:26, 22 December 2006 (UTC) To add a note, begin with four tilde signs <nowiki>~~~~</nowiki>; the Wiki will fill in your user name and date.<br />
<br />
[[User:Brecknell|Brecknell]] 13:38, 11 January 2007 (UTC) In Figure 1, retry should be STM a, not STM ().<br />
<br />
[[User:Schmitz|Sylvain]] 13:45, 11 January 2007 (UTC) small points: since you go through explaining that the do-notation is overloaded and works for STM as well as IO (page 8), you might want to tell the same for return on page 11 (return being given with a type a -> IO a on page 5). There is also a double "Here is the code" at the bottom of page 17.<br />
<br />
[[User:Brecknell|Brecknell]] 13:59, 11 January 2007 (UTC) The rewrite of the paragraph at top of page 17 has left behind a fragment that I think just needs to be deleted: "just runs each of the actions in sequence".<br />
<br />
[[User:Brecknell|Brecknell]] 14:15, 11 January 2007 (UTC) Last sentence of page 18: "Here is another way approach that..." Delete either "way" or "approach".<br />
<br />
[[User:ArthurVanLeeuwen|ArthurVanLeeuwen]] 14:27, 11 January 2007 (UTC) minor stuff, really: <br />
* page 2, middle of page: syncrhonized -> synchronized<br />
* page 5, top of page: For example, here are two Haskell functions -> For example, here are the type signatures for two Haskell functions (the functions themselves may be primitives, after all)<br />
* page 5, second paragraph: do the parentheses around hPutStr serve more than to confuse? Especially given their absence for hEchoLine...<br />
* page 5, footnote 3: comma after effects<br />
* page 6: make discarding the return value of forkIO in the second example main more explicit, e.g. with a footnote<br />
* page 7, after Atomicity: This ensured -> This ensures<br />
<br />
[[User:Brecknell|Brecknell]] 14:32, 11 January 2007 (UTC) I like the way you build up to the definition of "choose" in this new revision. I think this helps to convey how STM and actions as first-class values can improve modularity and composability in concurrent applications. So, if you like, you can consider my lsat comment on the previous revision "done", as well.<br />
<br />
[[User:Maeder|Maeder]] 14:38, 11 January 2007 (UTC) <br />
* page 11, use subtract (+ -> -) in limitedWithDraw<br />
* page 22 (2nd line), the the -> the<br />
<br />
[[User:Genneth|Genneth]] 15:07, 11 January 2007 (UTC) p4: make analogy between () and void to help non-haskellers<br />
<br />
[[User:ArthurVanLeeuwen|ArthurVanLeeuwen]] 15:10, 11 January 2007 (UTC) The bottom of page 17 has 'Here is his code:' in duplicate.<br />
<br />
[[User:ArthurVanLeeuwen|ArthurVanLeeuwen]] 15:19, 11 January 2007 (UTC) The note 'The code for choose is brief, but a little mind-bending:' on page 19 is very short, for such a leap in required understanding. In just one single block of 7 lines you introduce both the concept of IO actions encapsulated inside STM actions as well as the concept of list comprehension. For a non-haskeller this is quite a lot.<br />
<br />
[[User:Maeder|Maeder]] 15:25, 11 January 2007 (UTC) maybe generalize nTimes on page 7 to type: Int -> (Int -> IO ()) -> IO ()<br />
and use nTimes on page 16 instead of sequence_ and list comprehensions. (The function choose on page 19 is also higher order.)<br />
<br />
[[User:Malcolm|Malcolm]] 15:27, 11 January 2007 (UTC)<br />
* Intro, para 2, "Sadly, parallel program[s] are" - missing plural<br />
* sec 2.1, para 3, "if two thread[s] call" - missing plural<br />
* sec 3.2, Atomicity, "This ensured that" -> "This ensures that"<br />
<br />
[[User:Maeder|Maeder]] 15:35, 11 January 2007 (UTC) maybe use putStrLn (hPutStrLn) instead of \n in the strings<br />
<br />
[[User:Malcolm|Malcolm]] 16:07, 11 January 2007 (UTC)<br />
* page 11, limitedWithdraw2 in type signature, is called simply withdraw2 in definition<br />
* sec 4.2 "remaining capactity" -> "remaining capacity" (x3)<br />
* sec 4.3 "newGate makes [a] new Gate" - missing article<br />
* top of page 17, orphan (non-)sentence ". just runs each of the actions in sequence."<br />
* sec 4.4, "futher" -> "further"<br />
* sec 4.4 "another way approach" -> "another approach"<br />
* sec 6 "exectued" -> "executed"<br />
* sec 6 "the the treatment" -> "the treatment"</div>Malcolmhttps://wiki.haskell.org/index.php?title=Talk:SantaClausProblemV2&diff=10090Talk:SantaClausProblemV22007-01-11T15:27:33Z<p>Malcolm: </p>
<hr />
<div>= Beautiful concurrency =<br />
<br />
I am writing a chapter for a book called "Beautiful code", edited by Greg Wilson. The chapter is a tutorial about Software Transactional Memory in Haskell.<br />
<br />
After a lot of useful feedback, I have now completed [http://research.microsoft.com/~simonpj/papers/stm/beautiful.ps Version 2] of the paper. The [http://research.microsoft.com/~simonpj/papers/stm/Santa.hs.gz Haskell code] is also available.<br />
<br />
I would welcome any comments or questions you have on the paper, or constructive suggestions for improving it; the more concrete the better. You can see what people said about version 1 on the version 1 talk page: [[Talk:SantaClausProblem ]].<br />
<br />
The book is aimed at a general audience of programmers, <em>not</em> Haskell geeks, so I have tried to explain everything necessary as I go along. So if you are not a Haskell expert, your input would be particularly valuable to me.<br />
<br />
You can email me directly (simonpj@microsoft.com), or add Wiki talk notes below.<br />
<br />
If you give your real name somewhere in your text (or email it to me), I'll add you to the acknowledgements at the end of the chapter. Notably, I'd like to acknowledge Steven807, Tibbe, Fanf, Garious, Rycee, Brecknell, Mvanier, Gaal, Fernando, Gknauth, EngineerScotty, BoAdler.<br />
<br />
----------<br />
<br />
[[User:Simonpj|Simonpj]] 14:26, 22 December 2006 (UTC) To add a note, begin with four tilde signs <nowiki>~~~~</nowiki>; the Wiki will fill in your user name and date.<br />
<br />
[[User:Brecknell|Brecknell]] 13:38, 11 January 2007 (UTC) In Figure 1, retry should be STM a, not STM ().<br />
<br />
[[User:Schmitz|Sylvain]] 13:45, 11 January 2007 (UTC) small points: since you go through explaining that the do-notation is overloaded and works for STM as well as IO (page 8), you might want to tell the same for return on page 11 (return being given with a type a -> IO a on page 5). There is also a double "Here is the code" at the bottom of page 17.<br />
<br />
[[User:Brecknell|Brecknell]] 13:59, 11 January 2007 (UTC) The rewrite of the paragraph at top of page 17 has left behind a fragment that I think just needs to be deleted: "just runs each of the actions in sequence".<br />
<br />
[[User:Brecknell|Brecknell]] 14:15, 11 January 2007 (UTC) Last sentence of page 18: "Here is another way approach that..." Delete either "way" or "approach".<br />
<br />
[[User:ArthurVanLeeuwen|ArthurVanLeeuwen]] 14:27, 11 January 2007 (UTC) minor stuff, really: <br />
* page 2, middle of page: syncrhonized -> synchronized<br />
* page 5, top of page: For example, here are two Haskell functions -> For example, here are the type signatures for two Haskell functions (the functions themselves may be primitives, after all)<br />
* page 5, second paragraph: do the parentheses around hPutStr serve more than to confuse? Especially given their absence for hEchoLine...<br />
* page 5, footnote 3: comma after effects<br />
* page 6: make discarding the return value of forkIO in the second example main more explicit, e.g. with a footnote<br />
* page 7, after Atomicity: This ensured -> This ensures<br />
<br />
[[User:Brecknell|Brecknell]] 14:32, 11 January 2007 (UTC) I like the way you build up to the definition of "choose" in this new revision. I think this helps to convey how STM and actions as first-class values can improve modularity and composability in concurrent applications. So, if you like, you can consider my lsat comment on the previous revision "done", as well.<br />
<br />
[[User:Maeder|Maeder]] 14:38, 11 January 2007 (UTC) <br />
* page 11, use subtract (+ -> -) in limitedWithDraw<br />
* page 22 (2nd line), the the -> the<br />
<br />
[[User:Genneth|Genneth]] 15:07, 11 January 2007 (UTC) p4: make analogy between () and void to help non-haskellers<br />
<br />
[[User:ArthurVanLeeuwen|ArthurVanLeeuwen]] 15:10, 11 January 2007 (UTC) The bottom of page 17 has 'Here is his code:' in duplicate.<br />
<br />
<br />
[[User:ArthurVanLeeuwen|ArthurVanLeeuwen]] 15:19, 11 January 2007 (UTC) The note 'The code for choose is brief, but a little mind-bending:' on page 19 is very short, for such a leap in required understanding. In just one single block of 7 lines you introduce both the concept of IO actions encapsulated inside STM actions as well as the concept of list comprehension. For a non-haskeller this is quite a lot.<br />
<br />
[[User:Maeder|Maeder]] 15:25, 11 January 2007 (UTC) maybe generalize nTimes on page 7 to type: Int -> (Int -> IO ()) -> IO ()<br />
and use nTimes on page 16 instead of sequence_ and list comprehensions. (The function choose on page 19 is also higher order.)<br />
<br />
[[User:Malcolm|Malcolm]] 15:27, 11 January 2007 (UTC)<br />
* Intro, para 2, "Sadly, parallel program[s] are" - missing plural<br />
* sec 2.1, para 3, "if two thread[s] call" - missing plural<br />
* sec 3.2, Atomicity, "This ensured that" -> "This ensures that"</div>Malcolm