https://wiki.haskell.org/api.php?action=feedcontributions&user=LennartKolmodin&feedformat=atomHaskellWiki - User contributions [en]2024-03-19T12:36:42ZUser contributionsMediaWiki 1.35.5https://wiki.haskell.org/index.php?title=HaskellImplementorsWorkshop/2012&diff=53732HaskellImplementorsWorkshop/20122012-09-19T10:36:49Z<p>LennartKolmodin: Add links to some authors G+ pages</p>
<hr />
<div>The Haskell Implementors Workshop is an informal affair, aimed at bringing together people behind the Haskell infrastructure. It provides a forum where people working on compilers, tools, or libraries for Haskell development can bat around ideas, share experiences and ask for feedback from fellow experts. There are no proceedings, just a mixture of short talks, longer talks, discussion and demos.<br />
<br />
The Haskell Implementors Workshop will run again this year, co-located with [http://www.icfpconference.org/icfp2012/ ICFP 2012]. <br />
<br />
== Links ==<br />
<br />
* [http://www.haskell.org/haskellwiki/HaskellImplementorsWorkshop/2012/Call_for_Talks Call for Talks]<br />
<br />
== Important Dates ==<br />
<br />
* '''Tuesday 10th July''': Proposal Deadline<br />
* '''Friday 27th July''': Notification<br />
* '''Friday 14th September''': Workshop<br />
<br />
== Programme ==<br />
<br />
9:00-10:30 Session 1<br />
* '''GHC Status Update''' (Simon Peyton-Jones) [http://www.haskell.org/wikiupload/1/19/Hiw2012-simon-peyton-jones.pdf Slides], [http://www.youtube.com/watch?v=2Pucbf8_hGQ Video]<br />
* '''[[HaskellImplementorsWorkshop/2012/Schilling|A Trace-based Just-in-time Compiler for Haskell]]''' ([https://plus.google.com/u/1/105505259233112524428/posts Thomas Schilling]) [http://www.haskell.org/wikiupload/a/a2/Hiw2012-thomas-schilling.pdf Slides], [http://www.youtube.com/watch?v=PtEcLs2t9Ws Video]<br />
* First Lightning Talks Session<br />
** '''HdpH''' (Philip W Trinder) [http://www.haskell.org/wikiupload/5/53/Hiw2012-philip-trinder.pdf Slides], [http://www.youtube.com/watch?v=w6BYyL5XQgM Video]<br />
** '''dup -- explicit unsharing''' (Joachim Breitner) [http://www.haskell.org/wikiupload/a/a2/Hiw2012-joachim-breitner.pdf Slides], [http://www.youtube.com/watch?v=DGsVX7Qqv-0 Video]<br />
** '''Core diving''' (Peter Wortmann) [http://www.haskell.org/wikiupload/9/92/Hiw2012-peter-wortmann.pdf Slides], [http://www.youtube.com/watch?v=kBm1sW3hNck Video]<br />
<br />
10:30-11:00: Break<br />
<br />
11:00-12:30: Session 2<br />
* '''[[HaskellImplementorsWorkshop/2012/Newton|Bringing Atomic Memory Operations to a Lazy Language]]''' (Ryan Newton) [http://www.youtube.com/watch?v=xiPrpWQN7m0 Video]<br />
* '''[[HaskellImplementorsWorkshop/2012/deVries|Cloud Haskell 2.0]]''' (Duncan Coutts and Edsko de Vries) [http://www.haskell.org/wikiupload/4/46/Hiw2012-duncan-coutts.pdf Slides], [http://www.youtube.com/watch?v=1jJ2paFuErM Video]<br />
* '''[[HaskellImplementorsWorkshop/2012/Marlow|Why can't I get a stack trace?]]''' ([https://plus.google.com/u/1/107890464054636586545/posts Simon Marlow]) [http://www.haskell.org/wikiupload/6/6c/Hiw2012-simon-marlow.pdf Slides], [http://www.youtube.com/watch?v=J0c4L-AURDQ Video]<br />
<br />
12:30-14:00: Lunch Break<br />
<br />
14:00-15:30: Session 3<br />
* '''[[HaskellImplementorsWorkshop/2012/Diatchki|Implementing Type-Level Literals in GHC]]''' (Iavor S. Diatchki) [http://www.haskell.org/wikiupload/1/11/Hiw2012-iavor-diatchki.pdf Slides], [http://www.youtube.com/watch?v=C4D96LVtRMo Video]<br />
* '''[[HaskellImplementorsWorkshop/2012/Lentczner|Haskell Platform: Field Report and Future Goals]]''' ([https://plus.google.com/u/1/110093032685461606610/posts Mark Lentczner]) [http://www.haskell.org/wikiupload/9/98/Hiw2012-mark-lentczner.pdf Slides], [http://www.youtube.com/watch?v=st22QE-g0uo Video]<br />
* Second Lightning Talks Session<br />
** '''Splittable random number generators''' (Michal Palka) [http://www.haskell.org/wikiupload/7/74/Hiw2012-michal-palka.pdf Slides], [http://www.youtube.com/watch?v=ZU4qWn9QfEM Video]<br />
** '''zoom-cache''' ([https://plus.google.com/u/1/101555949501667191720/posts Conrad Parker]) [http://www.haskell.org/wikiupload/5/50/Hiw2012-conrad-parker.pdf Slides], [http://www.youtube.com/watch?v=h9zxDWt8hAU Video]<br />
** '''Indentation Sensitive Parsing''' (Michael D. Adams) [http://www.haskell.org/wikiupload/f/f6/Hiw2012-michael-d-adams.pdf Slides], [http://www.youtube.com/watch?v=3F6XbrsjLsk Video]<br />
** '''Optimisation of Generic Programs through Inlining''' (José Pedro Magalhães) [http://www.haskell.org/wikiupload/4/42/Hiw2012-jose-pedro-magalhaes.pdf Slides], [http://www.youtube.com/watch?v=m-ZU6rwm3Ow Video]<br />
<br />
15:30-16:00: Cake Break<br />
<br />
16:00-18:00: Session 4<br />
* '''[[HaskellImplementorsWorkshop/2012/Stutterheim|Web browser programming with UHC's JavaScript backend]]''' (Atze Dijkstra) [http://www.haskell.org/wikiupload/5/5f/Hiw2012-atze-dijkstra.pdf Slides], [http://www.youtube.com/watch?v=L1eGX1lYOBY Video]<br />
* '''[[HaskellImplementorsWorkshop/2012/Schuster|Making cabal-install non-destructive]]''' (Philipp Schuster) [http://www.haskell.org/wikiupload/5/50/Hiw2012-philipp-schuster.pdf Slides], [http://www.youtube.com/watch?v=h4QmkyN28Qs Video]<br />
* '''[[HaskellImplementorsWorkshop/2012/Broberg|haskell-suite]]''' ([https://plus.google.com/u/1/108274216271926634309/posts Niklas Broberg]) [http://www.haskell.org/wikiupload/9/94/Hiw2012-niklas-broberg-haskell-suite.pdf Slides], [http://www.youtube.com/watch?v=bQP4wldPX4c Video]<br />
* Third Lightning Talks Session and Beyond Haskell Discussion<br />
** '''GUMSMP''' (Malak Aljabri) [http://www.haskell.org/wikiupload/c/cf/Hiw2012-malak-aljabri.pdf Slides]<br />
** '''HERMIT for Haskell Impl.''' (Andy Gill) [http://www.haskell.org/wikiupload/f/ff/Hiw2012-andy-gill.pdf Slides], [http://www.youtube.com/watch?v=PBp-K2NyZvE Video]<br />
** '''API update tool''' (Roman Cheplyaka) [http://www.haskell.org/wikiupload/b/bb/Hiw2012-roman-cheplyaka.pdf Slides], [http://www.youtube.com/watch?v=Ae-6uIMQPmU Video]<br />
** '''Hmm...''' ([https://plus.google.com/u/1/108274216271926634309/posts Niklas Broberg]) [http://www.haskell.org/wikiupload/e/e0/Hiw2012-niklas-broberg-hmm.pdf Slides], [http://www.youtube.com/watch?v=MoxqBGaTmWQ Video]<br />
<br />
== Organisers ==<br />
<br />
* [http://augustss.blogspot.com/ Lennart Augustsson] (Standard Chartered Bank)<br />
* [http://www.cse.unsw.edu.au/~chak/ Manuel M T Chakravarty] (University of New South Wales)<br />
* [http://gregorycollins.net/ Gregory Collins] - co-chair (Google)<br />
* [http://research.microsoft.com/en-us/people/simonmar/ Simon Marlow] (Microsoft Research)<br />
* [http://www.scs.stanford.edu/~davidt/ David Terei] (Stanford University)<br />
* [http://www.johantibell.com/ Johan Tibell] - co-chair (Google)<br />
<br />
<br />
[[Category:Community]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Video_presentations&diff=53731Video presentations2012-09-19T10:26:18Z<p>LennartKolmodin: Add 2012 to HIW</p>
<hr />
<div>[[Category:Tutorials]]<br />
Collected videos of Haskell tutorials and conference presentations, sorted by topic.<br />
<br />
For more recent videos, check:<br />
<br />
* '''[http://vimeo.com/channels/haskell The Haskell Vimeo Channel]'''<br />
* '''[http://vimeo.com/channels/galois The Galois Tech Talk Vimeo Channel]'''<br />
* '''[http://channel9.msdn.com/tags/Haskell/ Haskell videos on MSDN Channel 9]'''<br />
<br />
Maintained by the community.<br />
<br />
== Introductions to Haskell ==<br />
;<br />
http://panther2.video.blip.tv/OSCON-OSCON2007SimonPeytonJonesATasteOfHaskellPartI551-440.jpg<br />
A Taste of Haskell<br />
:[http://blip.tv/file/324976 Part 1] ([http://blip.tv/file/get/OSCON-OSCON2007SimonPeytonJonesATasteOfHaskellPartI455.flv Download])<br />
:[http://blip.tv/file/325646 Part 2] ([http://blip.tv/file/get/OSCON-OSCON2007SimonPeytonJonesATasteOfHaskellPartII749.flv Download])<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/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/ Functional Programming Fundamentals - Erik Meijer]<br />
:Erik's 13 part lecture series on Haskell, using [http://www.amazon.com/Programming-Haskell-Graham-Hutton/dp/0521692695/ref=sr_1_1?ie=UTF8&qid=1287780326&sr=8-1 Programming in Haskell] by Graham Hutton.<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://yow.eventer.com/events/1004/talks/1054 Escape From the Ivory Tower: The Haskell Journey, From 1990 to 2011]<br />
:Simon Peyton-Jones, Yow, December 2011<br />
<br />
;[http://ulf.wiger.net/weblog/2008/02/29/peyton-jones-taming-effects-the-next-big-challenge/ Taming Effects - The Next Big Challenge]<br />
:Simon Peyton-Jones at Ericsson, February 2008.<br />
<br />
;[http://video.google.com/videoplay?docid=-4167170843018186532 Faith, Evolution, and Programming Languages]<br />
:Phil Wadler, April 2007. Slides are [http://homepages.inf.ed.ac.uk/wadler/topics/gj.html#oopsla here]<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 />
;[http://www.dotnetrocks.com/default.aspx?ShowNum=310 Simon Peyton Jones on Functional Programming and Haskell (Audio)]<br />
:Simon explains laziness, purity, parallelism, side effects, monads, software transactional memory<br />
<br />
;[http://ulf.wiger.net/weblog/2008/02/29/john-launchbury-high-assurance-software/ High-Assurance Software] <br />
:John Launchbury at Ericsson, 21 February 2008.<br />
<br />
== Haskell Implementors Workshop 2009,2010,2011,2012 ==<br />
[[HaskellImplementorsWorkshop]]<br />
<br />
== Haskell Symposium 2008 ==<br />
<br />
[[/Haskell Symposium 2008]] videos. <br />
<br />
== ICFP 2007 and 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 in functional programming ==<br />
<br />
;[http://video.google.com/videoplay?docid=-4991530385753299192 Type-driven testing in Haskell]<br />
:Simon Peyton Jones talks about QuickCheck and SmallCheck<br />
<br />
;[http://www.youtube.com/user/TheCatsters The Catsters on YouTube]<br />
:Various interesting lectures on category theory, including monads, adjunctions, limits, and a variety of other topics.<br />
<br />
;[http://iba-cg.de/haskell.html Generic Programming in Haskell].<br />
:Johan Jeuring, July 2007.<br />
<br />
;[http://video.google.com/videoplay?docid=-4851250372422374791 Parametric Polymorphism and the Girard-Reynolds Isomorphism]<br />
:Phil Gossett, April 2007.<br />
:(link broken as of 2012-02-07)<br />
<br />
;[http://channel9.msdn.com/ShowPost.aspx?PostID=358968#358968 Don't fear the monads]<br />
:Brian Beckman introducing monads<br />
<br />
== Concurrency and parallelism ==<br />
<br />
;[http://www.bayfp.org/blog/?p=25 Concurrent and multicore programming in Haskell] [http://blip.tv/file/913860 (alternate link, just video)]<br />
:[http://www.serpentine.com/blog/ Bryan O’Sullivan] at [http://bayfp.org Bay Area Functional Programmers], 8 May 2008<br />
<br />
;[http://ulf.wiger.net/weblog/2008/02/29/satnam-singh-declarative-programming-techniques-for-many-core-architectures/ Declarative Programming Techniques for Many-Core Architectures] <br />
:Satnam Singh at Ericsson, 21 February 2008<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 />
;[http://uk.youtube.com/watch?v=uziCn2SBbxs Data parallel physics engine]<br />
:2008, Hpysics' visulization code now performs double buffering<br />
<br />
;[http://uk.youtube.com/watch?v=mwge13bX9W8 Yampa Space Invaders]<br />
:Space Invaders, using functional reactive programming.<br />
<br />
;[http://uk.youtube.com/watch?v=zqFgQiPKtOI Monadius]<br />
:A 2D space game<br />
<br />
;[http://uk.youtube.com/watch?v=gVLFGQGRsDw Super 'Nario' Bros]<br />
:Super 'Nario' Brothers in Haskell<br />
<br />
;[http://uk.youtube.com/watch?v=0jYdu2u8gAU Frag]<br />
: Frag<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://www.youtube.com/watch?v=045422s6xik Data Driven Programming in Haskell]<br />
: Uses the unscripted, “real-world” toy project of performing character recognition on an image that many other OCR tools fail on due to very low resolution.<br />
<br />
[[Category:Music]]<br />
<br />
;[http://video.google.de/videoplay?docid=-6594267962912965757&q=hal2+july+2007&total=7&start=0&num=50&so=0&type=search&plindex=3 Music and Sound generation]<br />
:Henning Thielemann July 2007 in Leipzig about Music and Sound using SuperCollider, CSound, MIDI and pure Haskell (German)<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 />
== Commercial users ==<br />
<br />
;[http://www.londonhug.net/2008/08/11/video-paradise-a-dsel-for-derivatives-pricing/ Paradise]<br />
:An EDSL in Haskell developed by Credit Suisse for Derivatives Pricing<br />
<br />
== Haskell applications ==<br />
<br />
;[http://www.youtube.com/watch?v=oYdkrOMhFWU Emacs Flymake]<br />
:Daisuke IKEGAMI, a demo of editing Haskell program on Emacs with on-the-fly syntax and type checking using flymake-mode (see also [http://www.emacswiki.org/cgi-bin/emacs/FlymakeHaskell EmacsWiki:FlymakeHaskell] for details), 11 November 2007<br />
<br />
;[http://video.google.de/videosearch?q=hal2+july+2007 HAL2]<br />
:HAL2 meeting in July 2007 in Leipzig, presenting talks about Generic Programming (English), Eclipse for Haskell (German), Grapefruit GUI (German) and Music+Sound generation (German)<br />
<br />
;[http://ftp.belnet.be/mirrors/FOSDEM/2006/FOSDEM2006-darcs.avi GADTs for darcs]<br />
:David Roundy, FOSDEM, 2006<br />
<br />
;[http://www.londonhug.net/2008/02/02/video-darcs-and-gadts/ Darcs and Generalised Algebraic Data Types]<br />
:Ganesh Sittampalamhs talk on Darcs and GADTs<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 />
;[http://www.youtube.com/watch?v=faJ8N0giqzw Tangible Functional Programming]<br />
:Conal Eliott's Google Tech Talk<br />
<br />
;[http://ulf.wiger.net/weblog/2008/02/29/john-hughes-testing-with-quickcheck/ Testing with QuickCheck]<br />
:John Hughes at Ericsson, 21 February 2008<br />
<br />
;[http://ulf.wiger.net/weblog/2008/02/29/simon-peyton-jones-composing-contracts-an-adventure-in-financial-engineering/ Composing Contracts - An Adventure in Financial Engineering] <br />
:Simon Peyton Jones at Ericsson, 21 February 2008.<br />
<br />
;[http://www.ludd.ltu.se/~pj/hw2007/xmonad.mov xmonad]<br />
: Don Stewart at the Haskell Workshop, 2007.<br />
<br />
;[http://www.youtube.com/watch?v=yHd0u6zuWdw Coconut: COde CONstructing User Tool]<br />
:Haskell DSL to produce high performance SIMD-Parallel code<br />
<br />
;[http://covector.blogspot.com/2007/10/functional-augmented-reality.html Augmented reality using Haskell computer vision]<br />
:Functional augmented reality, Alberto Ruiz<br />
<br />
;[http://www.vimeo.com/1983774 Understanding HaskellDB trailer]<br />
<br />
== Other ==<br />
<br />
;[http://www.youtube.com/watch?v=faJ8N0giqzw Tangible Functional Programming: a modern marriage of usability and composability]<br />
:Conal Elliott. Google TechTalk, November 2007</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=How_to_write_a_Haskell_program&diff=41887How to write a Haskell program2011-09-02T02:58:49Z<p>LennartKolmodin: Fix broken link</p>
<hr />
<div>A developers' guide to creating a new Haskell project or program, and working in the Haskell developer ecosystem.<br />
<br />
''Note: for learning the Haskell language itself we recommend [http://haskell.org/haskellwiki/Tutorials#Introductions_to_Haskell these resources].''<br />
<br />
== Recommended tools ==<br />
<br />
Almost all new Haskell projects use the following tools. Each is<br />
intrinsically useful, but using a set of common tools also helps<br />
everyone by increasing productivity, and you're more likely to get<br />
patches.<br />
<br />
=== Revision control ===<br />
<br />
Use [http://git-scm.com/ git] or [http://darcs.net darcs] unless you have a specific reason not to. Both are lightweight distributed revision control systems (and darcs is written in Haskell). Both have massive market share in the Haskell world, if you want to encourage contributions from other Haskell hackers git or darcs are the best. Darcs hosting is available on [http://code.haskell.org code.haskell.org] and [http://patch-tag.com patch-tag]. [http://github.com/ github] for git is very popular.<br />
<br />
=== Build system ===<br />
<br />
[[Image:Cabal-With-Text-small.png|frame|Built with Cabal]]<br />
<br />
Use [http://haskell.org/cabal/ Cabal].<br />
You should read at least the start of section 2 of the [http://www.haskell.org/cabal/users-guide/ Cabal User's Guide].<br />
<br />
You should use [http://haskell.org/cabal/download.html cabal-install] as a front-end for installing your Cabal library. Cabal-install provides commands not only for building libraries but also for installing them from, and uploading them to, Hackage. As a bonus, for almost all programs, it's faster than using Setup.hs scripts directly, since no time is wasted compiling the scripts. (This does not apply for programs that use custom Setup.hs scripts, since those need to be compiled even when using cabal-install.)<br />
<br />
cabal-install is widely available, as part of the [http://haskell.org/platform Haskell Platform], so you can probably assume your users will have it too.<br />
<br />
=== Documentation ===<br />
<br />
For libraries, use [http://haskell.org/haddock/ Haddock]. We recommend<br />
using the version of Haddock that ships with the Haskell Platform. Haddock generates [http://hackage.haskell.org/packages/archive/base/4.3.1.0/doc/html/Prelude.html nice markup], with links to source.<br />
<br />
=== Testing ===<br />
<br />
You can use [http://www.md.chalmers.se/~rjmh/QuickCheck/ QuickCheck] or [http://www.mail-archive.com/haskell@haskell.org/msg19215.html SmallCheck] to test pure code. To test impure code, use [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HUnit HUnit]. <br />
<br />
To get started, try [[Introduction to QuickCheck]]. For a slightly more advanced introduction, [http://blog.codersbase.com/2006/09/simple-unit-testing-in-haskell.html Simple Unit Testing in Haskell] is a blog article about creating a testing framework for QuickCheck using some Template Haskell. For HUnit, see [[HUnit 1.0 User's Guide]]<br />
<br />
=== Distribution ===<br />
<br />
The standard mechanism for distributing Haskell libraries and<br />
applications is [http://hackage.haskell.org/packages/hackage.html Hackage]. Hackage can<br />
host your cabalised tarball releases, and link to any library<br />
dependencies your code has. Users will find and install your packages via "cabal install", and your package will be integrated into Haskell search engines, like [http://www.haskell.org/hoogle/ hoogle]<br />
<br />
=== Target Environment ===<br />
<br />
If at all possible, depend on libraries that are provided by the [http://haskell.org/platform Haskell Platform], and libraries that in turn build against the Haskell Platform. This set of libraries is designed to be widely available, so your end users will be able to build your software.<br />
<br />
== Structure of a simple project ==<br />
<br />
The basic structure of a new Haskell project can be adopted from<br />
[http://semantic.org/hnop/ HNop], the minimal Haskell project. It<br />
consists of the following files, for the mythical project "haq".<br />
<br />
* Haq.hs -- the main haskell source file<br />
* haq.cabal -- the cabal build description<br />
* Setup.hs -- build script itself<br />
* _darcs -- revision control<br />
* README -- info<br />
* LICENSE -- license<br />
<br />
Of course, you can elaborate on this, with subdirectories and multiple<br />
modules. See [[Structure of a Haskell project]] for an example of a larger project's directory structure.<br />
<br />
Here is a transcript that shows how you'd create a minimal darcs and cabalised<br />
Haskell project for the cool new Haskell program "haq", build it,<br />
install it and release.<br />
<br />
''Note'': The new tool "cabal init" automates all this for you, but you should<br />
understand all the parts even so. <br />
<br />
We will now walk through the creation of the infrastructure for a simple<br />
Haskell executable. Advice for libraries follows after.<br />
<br />
=== Create a directory ===<br />
<br />
Create somewhere for the source:<br />
<br />
<code><br />
$ mkdir haq<br />
$ cd haq<br />
</code><br />
<br />
=== Write some Haskell source ===<br />
<br />
Write your program:<br />
<br />
<haskell><br />
$ cat > Haq.hs<br />
--<br />
-- Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons/<br />
-- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)<br />
--<br />
import System.Environment<br />
<br />
-- | 'main' runs the main program<br />
main :: IO ()<br />
main = getArgs >>= print . haqify . head<br />
<br />
haqify s = "Haq! " ++ s<br />
</haskell><br />
<br />
=== Stick it in darcs ===<br />
<br />
Place the source under revision control (you may need to enter your e-mail address first, to identify you as maintainer of this source):<br />
<br />
<code><br />
$ darcs init<br />
$ darcs add Haq.hs <br />
$ darcs record<br />
addfile ./Haq.hs<br />
Shall I record this change? (1/?) [ynWsfqadjkc], or ? for help: y<br />
hunk ./Haq.hs 1<br />
+--<br />
+-- Copyright (c) 2006 Don Stewart - http://www.cse.unsw.edu.au/~dons/<br />
+-- GPL version 2 or later (see http://www.gnu.org/copyleft/gpl.html)<br />
+--<br />
+import System.Environment<br />
+<br />
+-- | 'main' runs the main program<br />
+main :: IO ()<br />
+main = getArgs >>= print . haqify . head<br />
+<br />
+haqify s = "Haq! " ++ s<br />
Shall I record this change? (2/?) [ynWsfqadjkc], or ? for help: y<br />
What is the patch name? Import haq source<br />
Do you want to add a long comment? [yn]n<br />
Finished recording patch 'Import haq source'<br />
</code><br />
<br />
And we can see that darcs is now running the show:<br />
<br />
<code><br />
$ ls<br />
Haq.hs _darcs<br />
</code><br />
<br />
=== Add a build system ===<br />
<br />
Create a .cabal file describing how to build your project:<br />
<br />
<code><br />
$ cat > haq.cabal<br />
Name: haq<br />
Version: 0.0<br />
Description: Super cool mega lambdas<br />
License: GPL<br />
License-file: LICENSE<br />
Author: Don Stewart<br />
Maintainer: dons@cse.unsw.edu.au<br />
Build-Type: Simple<br />
Cabal-Version: >=1.2<br />
<br />
Executable haq<br />
Main-is: Haq.hs<br />
Build-Depends: base >= 3 && < 5<br />
</code><br />
<br />
(If your package uses other packages, e.g. <tt>haskell98</tt>, you'll need to add them to the <tt>Build-Depends:</tt> field as a comma separated list.)<br />
Add a <tt>Setup.hs</tt> that will actually do the building:<br />
<br />
<haskell><br />
$ cat > Setup.hs<br />
import Distribution.Simple<br />
main = defaultMain<br />
</haskell><br />
Cabal allows either <tt>Setup.hs</tt> or <tt>Setup.lhs</tt>.<br />
<br />
Now would also be a good time to add a LICENSE file and a README file. Examples are in the tarball for HNop.<br />
<br />
Record your changes:<br />
<br />
<code><br />
$ darcs add haq.cabal Setup.hs LICENSE README<br />
$ darcs record --all<br />
What is the patch name? Add a build system<br />
Do you want to add a long comment? [yn]n<br />
Finished recording patch 'Add a build system'<br />
</code><br />
<br />
=== Build your project ===<br />
<br />
Now build it! There are two methods of accessing Cabal functionality: through your Setup.hs script or through cabal-install. In most cases, cabal-install is now the preferred method.<br />
<br />
Building using cabal-install:<br />
<br />
<code><br />
$ cabal install --prefix=$HOME --user<br />
</code><br />
<br />
Building using the traditional Setup.hs method:<br />
<br />
<code><br />
$ runhaskell Setup configure --prefix=$HOME --user<br />
$ runhaskell Setup build<br />
$ runhaskell Setup install<br />
</code><br />
<br />
This will install your newly minted haq program in $HOME/bin.<br />
<br />
=== Run it ===<br />
<br />
And now you can run your cool project:<br />
<code><br />
$ haq me<br />
"Haq! me"<br />
</code><br />
<br />
You can also run it in-place, even if you skip the install phase:<br />
<code><br />
$ dist/build/haq/haq you<br />
"Haq! you"<br />
</code><br />
<br />
=== Build some haddock documentation ===<br />
<br />
Generate some API documentation into dist/doc/*<br />
<br />
Using cabal install:<br />
<code><br />
$ cabal haddock<br />
</code><br />
<br />
Traditional method:<br />
<code><br />
$ runhaskell Setup haddock<br />
</code><br />
<br />
which generates files in dist/doc/ including:<br />
<br />
<code><br />
$ w3m -dump dist/doc/html/haq/Main.html<br />
haq Contents Index<br />
Main<br />
<br />
Synopsis<br />
main :: IO ()<br />
<br />
Documentation<br />
<br />
main :: IO ()<br />
main runs the main program<br />
<br />
Produced by Haddock version 0.7<br />
</code><br />
<br />
No output? Make sure you have actually installed haddock. It is a separate program, not something that comes with Cabal. Note that the stylized comment in the source gets picked up by Haddock.<br />
<br />
=== (Optional) Improve your code: HLint ===<br />
<br />
[http://hackage.haskell.org/package/hlint HLint] can be a valuable tool for improving your coding style, particularly if you're new to Haskell. Let's run it now.<br />
<br />
<code><br />
$ hlint .<br />
./Haq.hs:11:1: Warning: Eta reduce<br />
Found:<br />
haqify s = "Haq! " ++ s<br />
Why not:<br />
haqify = ("Haq! " ++)<br />
</code><br />
<br />
The existing code will work, but let's follow that suggestion. Open Haq.hs in your favourite editor and change the line:<br />
<br />
<haskell><br />
where haqify s = "Haq! " ++ s<br />
</haskell><br />
<br />
to:<br />
<br />
<haskell><br />
where haqify = ("Haq! " ++)<br />
</haskell><br />
<br />
=== Add some automated testing: QuickCheck ===<br />
<br />
==== QuickCheck v1 ====<br />
<br />
We'll use QuickCheck to specify a simple property of our Haq.hs code. Create a tests module, Tests.hs, with some QuickCheck boilerplate:<br />
<br />
<haskell><br />
$ cat > Tests.hs<br />
import Char<br />
import List<br />
import Test.QuickCheck<br />
import Text.Printf<br />
<br />
main = mapM_ (\(s,a) -> printf "%-25s: " s >> a) tests<br />
<br />
instance Arbitrary Char where<br />
arbitrary = choose ('\0', '\128')<br />
coarbitrary c = variant (ord c `rem` 4)<br />
</haskell><br />
<br />
Now let's write a simple property:<br />
<br />
<haskell><br />
$ cat >> Tests.hs <br />
-- reversing twice a finite list, is the same as identity<br />
prop_reversereverse s = (reverse . reverse) s == id s<br />
where _ = s :: [Int]<br />
<br />
-- and add this to the tests list<br />
tests = [("reverse.reverse/id", test prop_reversereverse)]<br />
</haskell><br />
<br />
We can now run this test, and have QuickCheck generate the test data:<br />
<br />
<code><br />
$ runhaskell Tests.hs<br />
reverse.reverse/id : OK, passed 100 tests.<br />
</code><br />
<br />
Let's add a test for the 'haqify' function:<br />
<br />
<haskell><br />
-- Dropping the "Haq! " string is the same as identity<br />
prop_haq s = drop (length "Haq! ") (haqify s) == id s<br />
where haqify s = "Haq! " ++ s<br />
<br />
tests = [("reverse.reverse/id", test prop_reversereverse)<br />
,("drop.haq/id", test prop_haq)]<br />
</haskell><br />
<br />
and let's test that:<br />
<br />
<code><br />
$ runhaskell Tests.hs<br />
reverse.reverse/id : OK, passed 100 tests.<br />
drop.haq/id : OK, passed 100 tests.<br />
</code><br />
<br />
Great!<br />
<br />
==== QuickCheck v2 ====<br />
<br />
If you're using version 2 of QuickCheck, the code in the previous section needs some minor modifications:<br />
<br />
<haskell><br />
$ cat > Tests.hs<br />
import Char<br />
import List<br />
import Test.QuickCheck<br />
import Text.Printf<br />
<br />
main = mapM_ (\(s,a) -> printf "%-25s: " s >> a) tests<br />
<br />
-- reversing twice a finite list, is the same as identity<br />
prop_reversereverse s = (reverse . reverse) s == id s<br />
where _ = s :: [Int]<br />
<br />
-- Dropping the "Haq! " string is the same as identity<br />
prop_haq s = drop (length "Haq! ") (haqify s) == id s<br />
where haqify s = "Haq! " ++ s<br />
<br />
tests = [("reverse.reverse/id", quickCheck prop_reversereverse)<br />
,("drop.haq/id", quickCheck prop_haq)]<br />
</haskell><br />
<br />
To run the test:<br />
<br />
<code><br />
$ runhaskell Tests.hs<br />
reverse.reverse/id : +++ OK, passed 100 tests.<br />
drop.haq/id : +++ OK, passed 100 tests.<br />
</code><br />
<br />
Success!<br />
<br />
=== Running the test suite from darcs ===<br />
<br />
We can arrange for darcs to run the test suite on every commit that is run with the flag --test:<br />
<br />
<code><br />
$ darcs setpref test "runhaskell Tests.hs"<br />
Changing value of test from '' to 'runhaskell Tests.hs'<br />
</code><br />
<br />
will run the full set of QuickChecks.<br />
If your test requires it, you may need to ensure other things are built too -- for example:<code>darcs setpref test "alex Tokens.x;happy Grammar.y;runhaskell Tests.hs"</code>.<br />
You will encounter that this way a darcs patch is also accepted if a QuickCheck test fails.<br />
You have two choices to [http://www.haskell.org/pipermail/haskell-cafe/2007-October/033834.html work around] this:<br />
* Use <hask>quickCheck'</hask> from the package QuickCheck-2 and call <hask>exitWithFailure</hask> if it return <hask>False</hask>.<br />
* Keep the test program as it is, and implement the failure on the shell level:<br />
: <code>runhaskell Tests.hs | tee test.log && if grep Falsifiable test.log >/dev/null; then exit 1; fi</code><br />
<br />
Let's commit a new patch:<br />
<br />
<code><br />
$ darcs add Tests.hs<br />
$ darcs record --all --test<br />
What is the patch name? Add testsuite<br />
Do you want to add a long comment? [yn]n<br />
Running test...<br />
reverse.reverse/id : OK, passed 100 tests.<br />
drop.haq/id : OK, passed 100 tests.<br />
Test ran successfully.<br />
Looks like a good patch.<br />
Finished recording patch 'Add testsuite'<br />
</code><br />
<br />
Excellent: now, patches must pass the test suite before they can be committed provided the --test flag is passed.<br />
<br />
=== Tag the stable version, create a tarball, and sell it! ===<br />
<br />
Tag the stable version:<br />
<br />
<code><br />
$ darcs tag<br />
What is the version name? 0.0<br />
Finished tagging patch 'TAG 0.0'<br />
</code><br />
<br />
==== Create a tarball ====<br />
You can do this using either Cabal or darcs, or even an explicit <tt>tar</tt> command.<br />
<br />
===== Using Cabal =====<br />
<br />
Since the code is cabalised, we can create a tarball with cabal-install<br />
directly (you can also use <tt>runhaskell Setup.hs sdist</tt>, but you need <tt>tar</tt> on your system [http://thread.gmane.org/gmane.comp.lang.haskell.cafe/60617/focus=60653]):<br />
<br />
<code><br />
$ cabal sdist<br />
Building source dist for haq-0.0...<br />
Source tarball created: dist/haq-0.0.tar.gz<br />
</code><br />
This has the advantage that Cabal will do a bit more checking, and<br />
ensure that the tarball has the structure that HackageDB expects. <br />
Note that it does require the LICENSE file to exist.<br />
It packages up the files needed to build the project; to include other files (such as <tt>Test.hs</tt> in the above example, and our README), we need to add:<br />
<br />
<code><br />
extra-source-files: Tests.hs README<br />
</code><br />
<br />
to the .cabal file to have everything included.<br />
<br />
===== Using darcs =====<br />
<br />
Alternatively, you can use darcs:<br />
<code><br />
$ darcs dist -d haq-0.0<br />
Created dist as haq-0.0.tar.gz<br />
</code><br />
<br />
And you're all set up!<br />
<br />
==== Check that your source package is complete ====<br />
<br />
Just to make sure everything works, try building the source package in some temporary directory:<br />
<code><br />
$ tar xzf haq-0.0.tar.gz<br />
$ cd haq-0.0<br />
$ cabal configure<br />
$ cabal build<br />
</code><br />
and for packages containing libraries,<br />
<code><br />
$ cabal haddock<br />
</code><br />
<br />
==== Upload your package to Hackage ====<br />
<br />
Whichever of the above methods you've used to create your package, you can upload it to the Hackage package collection via a [http://hackage.haskell.org/packages/upload.html web interface].<br />
You may wish to use the package checking interface there first, and fix things it warns about, before uploading your package.<br />
<br />
=== Summary ===<br />
<br />
The following files were created:<br />
<br />
$ ls<br />
Haq.hs Tests.hs dist haq.cabal<br />
Setup.hs _darcs haq-0.0.tar.gz<br />
<br />
== Libraries ==<br />
<br />
The process for creating a Haskell library is almost identical. The differences<br />
are as follows, for the hypothetical "ltree" library:<br />
<br />
=== Hierarchical source ===<br />
<br />
The source should live under a directory path that fits into the<br />
existing [[Hierarchical module names|module layout guide]].<br />
So we would create the following directory structure, for the module<br />
Data.LTree:<br />
<br />
$ mkdir Data<br />
$ cat > Data/LTree.hs <br />
module Data.LTree where<br />
<br />
So our Data.LTree module lives in Data/LTree.hs<br />
<br />
=== The Cabal file ===<br />
<br />
Cabal files for libraries list the publically visible modules, and have<br />
no executable section:<br />
<br />
$ cat > ltree.cabal <br />
Name: ltree<br />
Version: 0.1<br />
Description: Lambda tree implementation<br />
License: BSD3<br />
License-file: LICENSE<br />
Author: Don Stewart<br />
Maintainer: dons@cse.unsw.edu.au<br />
Build-Type: Simple<br />
Cabal-Version: >=1.2<br />
<br />
Library<br />
Build-Depends: base >= 3 && < 5<br />
Exposed-modules: Data.LTree<br />
ghc-options: -Wall<br />
<br />
We can thus build our library:<br />
<br />
$ cabal configure --prefix=$HOME --user<br />
$ cabal build <br />
Preprocessing library ltree-0.1...<br />
Building ltree-0.1...<br />
[1 of 1] Compiling Data.LTree ( Data/LTree.hs, dist/build/Data/LTree.o )<br />
/usr/bin/ar: creating dist/build/libHSltree-0.1.a<br />
<br />
and our library has been created as a object archive. Now install it:<br />
<br />
$ cabal install<br />
Installing: /home/dons/lib/ltree-0.1/ghc-6.6 & /home/dons/bin ltree-0.1...<br />
Registering ltree-0.1...<br />
Reading package info from ".installed-pkg-config" ... done.<br />
Saving old package config file... done.<br />
Writing new package config file... done.<br />
<br />
And we're done!<br />
To try it out, first make sure that your working directory is anything but the source directory of your library:<br />
<br />
$ cd ..<br />
<br />
And then use your new library from, for example, ghci:<br />
<br />
$ ghci -package ltree<br />
Prelude> :m + Data.LTree<br />
Prelude Data.LTree> <br />
<br />
The new library is in scope, and ready to go.<br />
<br />
=== More complex build systems ===<br />
<br />
For larger projects, you may want to store source trees in subdirectories. This can be done simply by creating a directory -- for example, "src" -- into which you will put your src tree.<br />
<br />
To have Cabal find this code, you add the following line to your Cabal<br />
file:<br />
<br />
hs-source-dirs: src<br />
<br />
You can also set up Cabal to run configure scripts, among other features. For more information consult the<br />
[http://www.haskell.org/ghc/docs/latest/html/Cabal/index.html Cabal documentation].<br />
<br />
== Automation ==<br />
<br />
A tool to automatically populate a new cabal project is available:<br />
<br />
cabal init<br />
<br />
Usage is:<br />
<br />
<code><br />
$ cabal init<br />
Package name [default "haq"]? <br />
Package version [default "0.1"]? <br />
Please choose a license:<br />
1) GPL<br />
2) GPL-2<br />
3) GPL-3<br />
4) LGPL<br />
5) LGPL-2.1<br />
6) LGPL-3<br />
* 7) BSD3<br />
8) BSD4<br />
9) MIT<br />
10) PublicDomain<br />
11) AllRightsReserved<br />
12) OtherLicense<br />
13) Other (specify)<br />
Your choice [default "BSD3"]? <br />
Author name? Henry Laxen<br />
Maintainer email? nadine.and.henry@pobox.com<br />
Project homepage/repo URL? http://somewhere.com/haq/<br />
Project synopsis? A wonderful little module<br />
Project category:<br />
1) Codec<br />
2) Concurrency<br />
3) Control<br />
4) Data<br />
5) Database<br />
6) Development<br />
7) Distribution<br />
8) Game<br />
9) Graphics<br />
10) Language<br />
11) Math<br />
12) Network<br />
13) Sound<br />
14) System<br />
15) Testing<br />
16) Text<br />
17) Web<br />
18) Other (specify)<br />
Your choice? 3<br />
What does the package build:<br />
1) Library<br />
2) Executable<br />
Your choice? 1<br />
Generating LICENSE...<br />
Generating Setup.hs...<br />
Generating haq.cabal...<br />
<br />
You may want to edit the .cabal file and add a Description field.<br />
</code><br />
<br />
== Licenses ==<br />
<br />
Code for the common base library package must be BSD licensed. Otherwise, it<br />
is entirely up to you as the author.<br />
Choose a licence (inspired by [http://www.dina.dk/~abraham/rants/license.html this]).<br />
Check the licences of things you use (both other Haskell packages and C<br />
libraries), since these may impose conditions you must follow.<br />
Use the same licence as related projects, where possible. The Haskell community is<br />
split into 2 camps, roughly: those who release everything under BSD, and<br />
(L)GPLers. Some Haskellers recommend avoiding LGPL, due to cross-module optimisation<br />
issues. Like many licensing questions, this advice is controversial. Several Haskell projects<br />
(wxHaskell, HaXml, etc) use the LGPL with an extra permissive clause which gets round the<br />
cross-module optimisation problem.<br />
<br />
== Releases ==<br />
<br />
It's important to release your code as stable, tagged tarballs. Don't<br />
just [http://awayrepl.blogspot.com/2006/11/we-dont-do-releases.html rely on darcs for distribution].<br />
<br />
* '''darcs dist''' generates tarballs directly from a darcs repository<br />
<br />
For example:<br />
<br />
$ cd fps<br />
$ ls <br />
Data LICENSE README Setup.hs TODO _darcs cbits dist fps.cabal tests<br />
$ darcs dist -d fps-0.8<br />
Created dist as fps-0.8.tar.gz<br />
<br />
You can now just post your fps-0.8.tar.gz<br />
<br />
You can also have darcs do the equivalent of 'daily snapshots' for you by using a post-hook.<br />
<br />
put the following in _darcs/prefs/defaults:<br />
apply posthook darcs dist<br />
apply run-posthook<br />
<br />
Advice:<br />
* Tag each release using '''darcs tag'''. For example:<br />
<br />
$ darcs tag 0.8<br />
Finished tagging patch 'TAG 0.8'<br />
<br />
Then people can <tt>darcs pull --partial -t 0.8</tt>, to get just the tagged version (and not the entire history).<br />
<br />
== Hosting ==<br />
<br />
Hosting for repos is available from the Haskell community server:<br />
<br />
http://community.haskell.org/<br />
<br />
A Darcs repository can be published simply by making it available from a<br />
web page.<br />
<br />
== Web page ==<br />
<br />
Create a web page documenting your project! An easy way to do this is to<br />
add a project specific page to [[Haskell|the Haskell wiki]]<br />
<br />
== The user experience ==<br />
<br />
When developing a new Haskell library, it is important to remember how the user expects to be able to build and use a library.<br />
<br />
=== Introductory information and build guide ===<br />
<br />
A typical library user expects to:<br />
<br />
# Visit [[Haskell|Haskell.org]]<br />
# Find the library/program they are looking for:<br />
## if not found, try mailing list; <br />
## if it is hidden, try improving the documentation on haskell.org;<br />
## if it does not exist, try contributing code and documentation) <br />
# Download<br />
# Build and install<br />
# Enjoy<br />
<br />
Each of these steps can pose potential road blocks, and code authors can<br />
do a lot to help code users avoid such blocks. Steps 1..2 may be easy enough, and many coders and users are mainly concerned with step 5. Steps 3..4 are the ones that often get in the way. In particular, the<br />
following questions should have clear answers:<br />
<br />
* Which is the latest version? <br />
* What state is it in? <br />
* What are its aims? <br />
* Where is the documentation?<br />
* Which is the right version for given OS and Haskell implementation?<br />
* How is it packaged, and what tools are needed to get and unpack it?<br />
* How is it installed, and what tools are needed to install it?<br />
* How do we handle dependencies?<br />
* How do we provide/acquire the knowledge and tool-chains needed?<br />
<br />
The best place to answer these questions is a README file,<br />
distributed with the library or application, and often accompanied with<br />
similar text on a more extensive web page.<br />
<br />
=== Tutorials ===<br />
<br />
Generated haddock documentation is usually not enough to help new<br />
programmers learn how to use a library. You must also provide accompanying examples, and even tutorials about the library.<br />
<br />
Please consider providing example code for your library or application. The code should be type-correct and well-commented.<br />
<br />
== Program structure ==<br />
<br />
Monad transformers are very useful for programming in the large,<br />
encapsulating state, and controlling side effects. To learn more about this approach, try [http://user.cs.tu-berlin.de/~magr/pub/Transformers.en.html Monad Transformers Step by Step].<br />
<br />
== Publicity ==<br />
<br />
The best code in the world is meaningless if nobody knows about it. The<br />
process to follow once you've tagged and released your code is:<br />
<br />
=== Join the community ===<br />
<br />
If you haven't already, join the community. The best way to do this is to [http://haskell.org/haskellwiki/Mailing_lists subscribe] to at least haskell-cafe@ and haskell@ mailing lists. Joining the [[IRC_channel|#haskell IRC channel]] is also an excellent idea.<br />
<br />
=== Announce your project on haskell@ ===<br />
<br />
Most important: announce your project releases to the haskell@haskell.org mailing list. Tag your email subject line with "ANNOUNCE: ...". This ensure it will then make it into the [http://haskell.org/haskellwiki/HWN Haskell Weekly News]. To be doubly sure, you can email the release text to the [[HWN|HWN editor]].<br />
<br />
=== Add your code to the public collections ===<br />
<br />
* Add your library or application to the [[Libraries and tools]] page, under the relevant category, so people can find it.<br />
<br />
* If your release is a Cabal package, add it to the [http://hackage.haskell.org/packages/hackage.html Hackage database] (Haskell's CPAN wanna-be).<br />
<br />
=== Blog about it ===<br />
<br />
Blog about it! Blog about your new code on [http://planet.haskell.org Planet Haskell].<br />
Write about your project in your blog, then email the [http://planet.haskell.org/ Planet Haskell] maintainer (ibid on [[IRC channel|#haskell]]) the RSS feed url for your blog<br />
<br />
== Example ==<br />
<br />
[http://cgi.cse.unsw.edu.au/~dons/blog/2006/12/11#release-a-library-today A complete example] of writing, packaging and releasing a new Haskell library under this process has been documented.<br />
<br />
[[Category:Community]]<br />
[[Category:Tutorials]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=CamHac&diff=40317CamHac2011-06-01T19:52:21Z<p>LennartKolmodin: Add myself</p>
<hr />
<div>Haskell Hackaton in Cambridge, UK, '''August 12-14, 2011'''<br />
<br />
== About ==<br />
<br />
Come and spend a weekend in Cambridge hacking Haskell code in great surroundings with fantastic company! Haskell Hackathons are a tradition where everyone is welcome; we get together, work on projects with others or just do your own thing, the overall goal being to improve the Haskell ecosystem.<br />
<br />
CamHac will be held from 12-14 August 2011, at [http://www.homertonconference.com/ Homerton College] in Cambridge. As with previous Hackathons, all are welcome -- you do not have to be a Haskell guru. 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 food, and, of course, fun! <br />
<br />
* Organiser: [mailto:marlowsd@gmail.com Simon Marlow] (<tt>JaffaCake</tt> on IRC)<br />
* Mailing list: [http://www.haskell.org/mailman/listinfo/hackathon hackathon@haskell.org]<br />
* IRC channel: #ghc on FreeNode<br />
<br />
Many thanks to [http://research.microsoft.com/en-us/labs/cambridge/default.aspx Microsoft Research Cambridge] for agreeing to sponsor the event.<br />
<br />
== Registration ==<br />
<br />
'''Registration deadline''': Friday 15th July 2011<br />
<br />
Registration is free. To register, please email [mailto:msrcevnt@microsoft.com msrcevnt@microsoft.com] stating that you would like to register for the "Haskell Hackathon", with the following information<br />
<br />
Full name:<br />
Which days you are attending on:<br />
day 1: yes/no<br />
day 2: yes/no<br />
day 3: yes/no<br />
Dietary requirements:<br />
<br />
The venue is '''limited to 50 (edit: now 72!) people''', and registration is first-come first-served, so register quickly to reserve your place! (but only register if you definitely intend to come, and please let us know if you find you cannot make it for any reason after you have registered, so we can re-allocate your place).<br />
<br />
Some people will probably want to travel on Friday morning and join us later on that day - that's absolutely fine.<br />
<br />
== Venue ==<br />
<br />
We're in the [http://www.homertonconference.com/Leah-Manning.html Leah Manning Room] of [http://www.homertonconference.com/ Homerton Conference Centre]. It is about [http://www.google.co.uk/maps?f=d&source=s_d&saddr=United+Kingdom+(Cambridge,+Railway+Station+(Stop+B))&daddr=CB2+8PH&hl=en&geocode=FehrHAMdjhUCACHpLU_p7S-CNg%3BFc5LHAMdNhMCACmn-uB8eXrYRzFlrDhff7fJ9A&mra=iwd&dirflg=w&sll=52.190667,0.134583&sspn=0.021547,0.040598&ie=UTF8&z=16 15 minutes walk from the train station], and Cambridge town centre is about 30 minutes walk.<br />
<br />
'''Times''': we have the room booked all day for the three days, and we'll probably start around 10am and finish around 6pm. Exact time details to be confirmed later. <br />
<br />
There will be WiFi access.<br />
<br />
There will be a projector for giving talks/demos. We will probably reserve a part of the time for talks and demos.<br />
<br />
== Food ==<br />
<br />
Tea and coffee will be supplied. We will have to go out to find lunch, but there are various places to eat and buy food at the [http://www.cambridge-x.co.uk Cambridge Leisure Park] a few minutes walk towards Cambridge town centre. In the evening we will probably head towards the town where there are plenty of good restaurants.<br />
<br />
== Local arrangements ==<br />
<br />
=== Getting to Cambridge ===<br />
<br />
==== By Plane ====<br />
<br />
* [http://www.stanstedairport.com/ Stansted Airport]: Stansted is the nearest of the London-area airports to Cambridge. It is mostly served by flights to and from mainland Europe, Ireland, and elsewhere in the UK. <br />
<br />
* [http://www.heathrowairport.com/ Heathrow Airport]: Heathrow is the principal London-area airport and one of the busiest in Europe with a wide range of national, European, and international services. <br />
<br />
* [http://www.gatwickairport.com/ Gatwick Airport]: Gatwick is the second "London" airport with a wide range of national, European and international services. <br />
<br />
* Other airports: [http://www.london-luton.co.uk/ Luton Airport], [http://www.norwichairport.co.uk/ Norwich airport], and [http://www.southendairport.com/ Southend airport] are other regional airports in the East Anglia region. If you use these, car or taxi is the best option for travel to Cambridge. <br />
<br />
==== Trains from London ====<br />
<br />
London has two train lines into Cambridge, London Kings Cross and London Liverpool Street. There is a regular service on both lines and duration is under an hour on the direct trains. Go to [http://www.nationalrail.co.uk National Rail] to check train times<br />
<br />
=== Getting to the venue ===<br />
<br />
[http://www.google.co.uk/maps?f=d&source=s_d&saddr=United+Kingdom+(Cambridge,+Railway+Station+(Stop+B))&daddr=CB2+8PH&hl=en&geocode=FehrHAMdjhUCACHpLU_p7S-CNg%3BFc5LHAMdNhMCACmn-uB8eXrYRzFlrDhff7fJ9A&mra=iwd&dirflg=w&sll=52.190667,0.134583&sspn=0.021547,0.040598&ie=UTF8&z=16 Walk from the train station] (about 15 minutes)<br />
<br />
[http://www.homertonconference.com/How-to-find-us.html How to find the venue]<br />
<br />
'''Local Taxis''': Panther Taxis 01223 715715<br />
<br />
=== Accommodation ===<br />
<br />
[http://www.visitcambridge.org/VisitCambridge/WhereToStay.aspx VisitCambridge: Where to Stay in Cambridge]<br />
<br />
The nearest hotels to the venue seem to be:<br />
<br />
* [http://www2.travelodge.co.uk/ Travelodge] (Cambridge Central) is just a few minutes walk from the venue. It is currently charging £65.80 per night for 11-14 August.<br />
* [http://www.helenhotel.co.uk/index.htm Helen Hotel]<br />
* [http://www.bandbincambridgeshire.co.uk/ Bridge Guest House]<br />
* [http://www.cheapguesthouses.com/ Fairways Guest House]<br />
* [http://www.abbeyfieldguesthouse.com/ Abbeyfield Guest House]<br />
* [http://rockviewguesthouse.co.uk/default.aspx Rock View Guest House]<br />
* [http://alingtonhouse.com/default.aspx Alington House Guest House]<br />
* [http://www.yha.org.uk/find-accommodation/east-of-england/hostels/cambridge/index.aspx Cambridge Youth Hostel]<br />
* [http://www.cambridgerooms.co.uk/ Stay in Cambridge Colleges]<br />
<br />
If you contact any of the above and find they're booked up, please remove them from the list.<br />
<br />
Microsoft Research recommends the following hotels to visitors, these are closer to the city centre but are probably a lot more expensive than those above:<br />
<br />
* [http://www.hilton.co.uk/cambridgegardenhouse Double Tree by Hilton Garden House Cambridge]<br />
* [http://www.ichotelsgroup.com/h/d/cp/1/en/hotel/cbguk Crowne Plaza Cambridge]<br />
* [http://www.devere.co.uk/our-locations/university-arms.html De Vere University Arms]<br />
<br />
== Projects ==<br />
<br />
Use this space to list projects you are interested in working on, and add your name to projects you are interested in helping with.<br />
<br />
* General hacking away at Snap Framework (exact goals TBD), perhaps adding/improving documentation/tutorials at the same time. (Jurriën Stutterheim)<br />
* Darcs<br />
* Something games/3d related? (Stephen L)<br />
<br />
== Attendees ==<br />
<br />
# Simon Marlow<br />
# Jurriën Stutterheim<br />
# Neil Mitchell<br />
# Jasper Van der Jeugt<br />
# Max Bolingbroke<br />
# Ben Millwood<br />
# Roman Leshchinskiy<br />
# Gregory Collins<br />
# Martijn van Steenbergen<br />
# Sjoerd Visscher<br />
# Sebastiaan Visser<br />
# Tom Lokhorst<br />
# Erik Hesselink<br />
# Jeff Foster<br />
# Sebastian Korten<br />
# Alessandro Vermeulen<br />
# Vlad Hanciuta<br />
# Ganesh Sittampalam<br />
# Eric Kow<br />
# Alexander Njemz<br />
# Mikolaj Konarski<br />
# Ian Lynagh<br />
# Andres Löh<br />
# Jeroen Janssen<br />
# Nicolas Wu<br />
# Duncan Coutts<br />
# Dominic Orchard<br />
# Jacek Generowicz<br />
# Owen Stephens<br />
# Benedict Eastaugh<br />
# Stephen Lavelle<br />
# Sam Martin<br />
# Alex Horsman<br />
# Andy Georges<br />
# Niklas Larsson<br />
# Raeez Lorgat<br />
# Maryna Strelchuk<br />
# Vincent Hanquez<br />
# Chris Done<br />
# Tomas Petricek<br />
# Thomas Schilling<br />
# Dragos Ionita<br />
# Simon Meier<br />
# Will Thompson<br />
# Sergii Strelchuk<br />
# Lennart Kolmodin<br />
<br />
* Add your name here, once registered...</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Why_Haskell_matters&diff=39242Why Haskell matters2011-03-29T13:41:04Z<p>LennartKolmodin: Fix link to Hughes "Why Functional Programming Matters"</p>
<hr />
<div>==What are functional programming languages?==<br />
Programming languages such as C/C++/Java/Python are called imperative programming languages because they consist of sequences of actions. The programmer quite explicitly tells the computer how to perform a task, step-by-step.<br />
Functional programming languages work differently. Rather than performing actions in a sequence, they evaluate expressions.<br />
<br />
=== The level of abstraction ===<br />
There are two areas that are fundamental to programming a computer - resource management and sequencing. Resource management (allocating registers and memory) has been the target of vast abstraction, most new languages (imperative as well as functional) have implemented garbage collection to remove resource management from the problem, and lets the programmer focus on the algorithm instead of the book-keeping task of allocating memory.<br />
Sequencing has also undergone some abstraction, although not nearly to the same extent. Imperative languages have done so by introducing new keywords and standard libraries. For example, most imperative languages have special syntax for constructing several slightly different loops, you no longer have to do all the tasks of managing these loops yourself.<br />
But imperative languages are based upon the notion of sequencing - they can never escape it completely. The only way to raise the level of abstraction in the sequencing area for an imperative language is to introduce more keywords or standard functions, thus cluttering up the language.<br />
This close relationship between imperative languages and the task of sequencing commands for the processor to execute means that imperative languages can never rise above the task of sequencing, and as such can never reach the same level of abstraction that functional programming languages can.<br />
<br />
In Haskell, the sequencing task is removed. You only care what the program is to compute not how or when it is computed. This makes Haskell a more flexible and easy to use language. Haskell tends to be part of the solution for a problem, not a part of the problem itself.<br />
<br />
=== Functions and side-effects in functional languages ===<br />
Functions play an important role in functional programming languages. Functions are considered to be values just like integers or strings. A function can return another function, it can take a function as a parameter, and it can even be constructed by composing functions.<br />
This offers a stronger "glue" to combine the modules of your program. A function that evaluates some expression can take part of the computation as an argument for instance, thus making the function more modular.<br />
You could also have a function construct another function. For instance, you could define a function "differentiate" that will differentiate a given function numerically. So if you then have a function "f" you could define "f' = differentiate f", and use it like you would normally in a mathematical context.<br />
These types of functions are called ''higher order functions''.<br />
<br />
Here is a short Haskell example of a function numOf that counts the number of elements in a list that satisfy a certain property.<br />
<br />
<haskell>numOf p xs = length (filter p xs)</haskell><br />
<br />
We will discuss Haskell syntax later, but what this line says is just "To get the result, filter the list xs by the test p and compute the length of the result".<br />
Now p is a function that takes an element and returns True or False determining whether the element passes or fails the test. So numOf is a higher order function, some of the functionality is passed to it as an argument. Notice that filter is also a higher order function, it takes the "test function" as an argument.<br />
Let's play with this function and define some more specialized functions from it.<br />
<br />
<haskell>numOfEven xs = numOf even xs</haskell><br />
<br />
Here we define the function numOfEven which counts the number of even elements in a list. Note that we do not need to explicitly declare xs as a parameter. We could just as well write numOfEven = numOf even. A very clear definition indeed. But we'll explicitly type out the parameters for now.<br />
<br />
Let's define a function which counts the number of elements that are greater or equal to 5 :<br />
<br />
<haskell>numOfGE5 xs = numOf (>=5) xs</haskell><br />
<br />
Here the test function is just ">=5" which is passed to numOf to give us the functionality we need.<br />
<br />
Hopefully you should now see that the modularity of functional programming allows us to define a generic functions where some of the functionality is passed as an argument, which we can later use to define shorthands for any specialized functions.<br />
This small example is somewhat trivial, it wouldn't be too hard to re-write the function definition for all the functions above, but for more complex functions this comes in handy.<br />
You can, for instance, write only one function for traversing an auto-balancing binary tree and have it take some of the functionality as a parameter (for instance the comparison function). This would allow you to traverse the tree for any data type by simply providing the relevant comparison function for your needs. Thus you can expend some effort in making sure the general function is correct, and then all the specialized functions will also be correct. Not to mention you wouldn't have to copy and paste code all over your project.<br />
This concept is possible in some imperative languages as well. In some object oriented languages you often have to provide a "Comparator object" for trees and other standard data structures. The difference is that the Haskell way is a lot more intuitive and elegant (creating a separate type just for comparing two other types and then passing an object of this type is hardly an elegant way of doing it), so it's more likely to be used frequently (and not just in the standard libraries).<br />
<br />
A central concept in functional languages is that the result of a function is determined by its input, and only by its input. There are no side-effects! This extends to variables as well - ''variables in Haskell do not vary''. This may sound strange if you're used to imperative programming (where ''most'' of the code consists of changing the "contents" of a variable), but it's really quite natural. A variable in Haskell is a name that is bound to some value, rather than an abstraction of some low-level concept of a memory cell like in imperative languages. When variables are thought of as short-hands for values (just like they are in mathematics), it makes perfect sense that variable updates are not allowed. You wouldn't expect "4 = 5" to be a valid assignment in ''any'' language, so it's really quite strange that "x = 4; x = 5" is.<br />
This is often hard to grasp for programmers who are very used to imperative languages, but it isn't as strange as it first seems. So when you start thinking things like "This is too weird, I'm going back to C++!", try to force yourself to continue learning Haskell - you'll be glad you did.<br />
<br />
Removing side-effects from the equation allows expressions to be evaluated in any order. A function will always return the same result if passed the same input - no exceptions.<br />
This determinism removes a whole class of bugs found in imperative programs. In fact, you could even argue that ''most'' bugs in large systems can be traced back to side-effects - if not directly caused by them, then caused by a flawed design that relies on side-effects.<br />
This means that functional programs tend to have far fewer bugs than imperative ones.<br />
<br />
=== Conclusion ===<br />
Because functional languages are more intuitive and offer more and easier ways to get the job done, functional programs tend to be shorter (usually between 2 to 10 times shorter). The semantics are most often a lot closer to the problem than an imperative version, which makes it easier to verify that a function is correct. Furthermore Haskell doesn't allow side-effects, which leads to less bugs. Thus Haskell programs are easier to write, more robust, and easier to maintain.<br />
<br />
== What can Haskell offer the programmer? ==<br />
Haskell is a modern general purpose language developed to incorporate the collective wisdom of the functional programming community into one elegant, powerful and general language.<br />
<br />
===Purity===<br />
Unlike some other functional programming languages Haskell is pure. It doesn't allow ''any'' side-effects. This is probably the most important feature of Haskell. We've already briefly discussed the benefits of pure, side-effect free, programming - and there's not much more we can say about that. You'll need to experience it yourself.<br />
<br />
===Laziness===<br />
Another feature of Haskell is that it is lazy (technically speaking, it's "non-strict"). This means that nothing is evaluated until it has to be evaluated. You could, for instance, define an infinite list of primes without ending up in infinite recursion. Only the elements of this list that are actually used will be computed. This allows for some very elegant solutions to many problems. A typical pattern of solving a problem would be to define a list of all possible solutions and then filtering away the illegal ones. The remaining list will then only contain legal solutions. Lazy evaluation makes this operation very clean. If you only need one solution you can simply extract the first element of the resulting list - lazy evaluation will make sure that nothing is needlessly computed.<br />
<br />
===Strong typing===<br />
Furthermore Haskell is strongly typed, this means just what it sounds like. It's impossible to inadvertently convert a Double to an Int, or follow a null pointer. This also leads to less bugs. It might be a pain in the neck in the rare cases where you need to convert an Int to a Double explicitly before performing some operation, but in practice this doesn't happen often enough to become a nuisance. In fact, forcing each conversion to be explicit often helps to highlight problem code.<br />
In other languages where these conversions are invisible, problems often arise when the compiler treats a double like an integer or, even worse, an integer like a pointer.<br />
<br />
Unlike other strongly typed languages types in Haskell are automatically inferred. This means that you very rarely have to declare the types of your functions, except as a means of code documentation. Haskell will look at how you use the variables and figure out from there what type the variable should be - then it will all be type-checked to ensure there are no type-mismatches. <br />
Python has the notion of "duck typing", meaning "If it walks and talks like a duck, it's a duck!". You could argue that Haskell has a much better form of duck typing. If a value walks and talks like a duck, then it will be considered a duck through type inference, but unlike Python the compiler will also catch errors if later on it tries to bray like a donkey!<br />
So you get the benefits of strong typing (bugs are caught at compile-time, rather than run-time) without the hassle that comes with it in other languages.<br />
Furthermore Haskell will always infer the most general type on a variable. So if you write, say, a sorting function without a type declaration, Haskell will make sure the function will work for all values that can be sorted.<br />
<br />
Compare how you would do this in certain object oriented languages. To gain polymorphism you would have to use some base class, and then declare your variables as instances of subclasses to this base class. It all amounts to tons of extra work and ridiculously complex declarations just to proclaim the existence of a variable. Furthermore you would have to perform tons of type conversions via explicit casts - definitely not a particularly elegant solution.<br />
If you want to write a polymorphic function in these object oriented languages you would probably declare the parameters as an object of a global base class (like "Object" in Java), which essentially allows the programmer to send anything into the function, even objects which can't logically be passed to the function. The end result is that most functions you write in these languages are not general, they only work on a single data type. You're also moving the error checking from compile-time to run-time. In large systems where some of the functionality is rarely used, these bugs might never be caught until they cause a fatal crash at the worst possible time.<br />
<br />
Haskell provides an elegant, concise and safe way to write your programs. Programs will not crash unexpectedly, nor produce strangely garbled output.<br />
<br />
===Elegance===<br />
Another property of Haskell that is very important to the programmer, even though it doesn't mean as much in terms of stability or performance, is the elegance of Haskell. To put it simply: stuff just works like you'd expect it to.<br />
<br />
To highlight the elegance of Haskell we shall now take a look at a small example. We choose QuickSort because it's a simple algorithm that is actually useful. We will look at two versions - one written in C++, an imperative language, and one written in Haskell.<br />
Both versions use only the functionality available to the programmer without importing any extra modules (otherwise we could just call "sort" in each language's standard library and be done with it!). Thus, we use the standard sequence primitives of each language (a "list" in Haskell and an "array" in C++). Both versions must also be polymorphic (which is done "automatically" in Haskell, and with templates in C++). Both versions must use the same recursive algorithm.<br />
<br />
Please note that this is ''not'' intended as a definite comparison between the two languages. It's intended to show the elegance of Haskell, the C++ version is only included for comparison (and would be coded quite differently if you used the Standard Template Libraries, for example).<br />
<br />
template <typename T><br />
void qsort (T *result, T *list, int n)<br />
{<br />
if (n == 0) return;<br />
T *smallerList, *largerList;<br />
smallerList = new T[n];<br />
largerList = new T[n]; <br />
T pivot = list[0];<br />
int numSmaller=0, numLarger=0; <br />
for (int i = 1; i < n; i++)<br />
if (list[i] < pivot)<br />
smallerList[numSmaller++] = list[i];<br />
else <br />
largerList[numLarger++] = list[i];<br />
<br />
qsort(smallerList,smallerList,numSmaller); <br />
qsort(largerList,largerList,numLarger);<br />
<br />
int pos = 0; <br />
for ( int i = 0; i < numSmaller; i++)<br />
result[pos++] = smallerList[i];<br />
<br />
result[pos++] = pivot;<br />
<br />
for ( int i = 0; i < numLarger; i++)<br />
result[pos++] = largerList[i];<br />
<br />
delete [] smallerList;<br />
delete [] largerList;<br />
};<br />
<br />
We will not explain this code further, just note how complex and difficult it is to understand at a glance, largely due to the programmer having to deal with low-level details which have nothing to do with the task at hand.<br />
Now, let's take a look at a Haskell version of QuickSort, which might look a something like this.<br />
<br />
<haskell><br />
qsort [] = []<br />
qsort (x:xs) = qsort less ++ [x] ++ qsort more<br />
where less = filter (<x) xs<br />
more = filter (>=x) xs<br />
</haskell><br />
<br />
Let's dissect this code in detail, since it uses quite a lot of Haskell syntax that you might not be familiar with.<br />
The function is called qsort and takes a list as a parameter. We define a function in Haskell like so: funcname a b c = expr, where funcname is the name of the function, a, b, and, c are the parameters and expr is the expression to be evaluated (most often using the parameters). Functions are called by simply putting the function name first and then the parameter(s). Haskell doesn't use parenthesis for function application. Functions simply bind more tightly than anything else, so "f 5 * 2", for instance, would apply f to 5 and then multiply by 2, if we wanted the multiplication to occur before the function application then we would use parenthesis like so "f (5*2)".<br />
<br />
Let's get back to QuickSort.<br />
First we see that we have two definitions of the functions. This is called pattern matching and we can briefly say that it will test the argument passed to the function top-to-bottom and use the first one that matches.<br />
The first definition matches against [] which in Haskell is the empty list (a list of 1,2 and 3 is [1,2,3] so it makes sense that an empty list is just two brackets).<br />
So when we try to sort an empty list, the result will be an empty list. Sounds reasonable enough, doesn't it?<br />
The second definition pattern matches against a list with at least one element. It does this by using (x:xs) for its argument. The "cons" operator is (:) and it simply puts an element in front of a list, so that 0 : [1,2,3] returns [0,1,2,3]. Pattern matching against (x:xs) is a match against the list with the head x and the tail xs (which may or may not be the empty list). In other words, (x:xs) is a list of at least one element.<br />
So since we will need to use the head of the list later, we can actually extract this very elegantly by using pattern matching. You can think of it as naming the contents of the list. This can be done on any data construct, not just a list. It is possible to pattern match against an arbitrary variable name and then use the head function on that to retrieve the head of the list.<br />
Now if we have a non empty list, the sorted list is produced by sorting all elements that are smaller than x and putting that in front of x, then we sort all elements larger than x and put those at the end. We do this by using the list concatenation operator ++. Notice that x is not a list so the ++ operator won't work on it alone, which is why we make it a singleton-list by putting it inside brackets.<br />
So the function reads "To sort the list, sandwich the head between the sorted list of all elements smaller than the head, and the sorted list of all elements larger than the head". Which could very well be the original algorithm description. This is very common in Haskell. A function definition usually resembles the informal description of the function very closely. This is why I say that Haskell has a smaller semantic gap than other languages.<br />
<br />
But wait, we're not done yet! How is the list less and more computed? Well, remember that we don't care about sequencing in Haskell, so we've defined them below the function using the where notation (which allows any definitions to use the parameters of the function to which they belong). We use the standard prelude function filter, I won't elaborate too much on this now, but the line less = filter (<x) xs will use filter (<x) xs to filter the list xs. You can see that we actually pass the function which will be used to filter the list to filter, an example of higher order functions.<br />
The function (<x) should be read out "the function 'less than x'" and will return True if an element passed to it is less than x (notice how easy it was to construct a function on the fly, we put the expression "<x", "less than x", in parenthesis and sent it off to the function - functions really are just another value!).<br />
All elements that pass the test are output from the filter function and put inside less. In a same way (>=x) is used to filter the list for all elements larger than or equal to x.<br />
<br />
Now that you've had the syntax explained to you, read the function definition again. Notice how little time it takes to get an understanding about what the function does. The function definitions in Haskell explain what it computes, not how.<br />
<br />
If you've already forgotten the syntax outlined above, don't worry! We'll go through it more thoroughly and at a slower pace in the tutorials. The important thing to get from this code example is that Haskell code is elegant and intuitive.<br />
<br />
===Haskell and bugs===<br />
We have several times stated that various features of Haskell help fight the occurrence of bugs. Let's recap these.<br />
<br />
Haskell programs have less bugs because Haskell is:<br />
<br />
* '''Pure'''. There are no side effects.<br />
<br />
* '''Strongly typed'''. There can be no dubious use of types. And No Core Dumps!<br />
<br />
* '''Concise'''. Programs are shorter which make it easier to look at a function and "take it all in" at once, convincing yourself that it's correct.<br />
<br />
* '''High level'''. Haskell programs most often reads out almost exactly like the algorithm description. Which makes it easier to verify that the function does what the algorithm states. By coding at a higher level of abstraction, leaving the details to the compiler, there is less room for bugs to sneak in.<br />
<br />
* '''Memory managed'''. There's no worrying about dangling pointers, the Garbage Collector takes care of all that. The programmer can worry about implementing the algorithm, not book-keeping of the memory.<br />
<br />
* '''Modular'''. Haskell offers stronger and more "glue" to compose your program from already developed modules. Thus Haskell programs can be more modular. Often used modular functions can thus be proven correct by induction. Combining two functions that are proven to be correct, will also give the correct result (assuming the combination is correct).<br />
<br />
Furthermore most people agree that you just think differently when solving problems in a functional language. You subdivide the problem into smaller and smaller functions and then you write these small (and "almost-guaranteed-to-be-correct") functions, which are composed in various ways to the final result. There just isn't any room for bugs!<br />
<br />
<br />
== Haskell vs OOP ==<br />
The great benefit of Object Oriented Programming is rarely that you group your data with the functions that act upon it together into an object - it's that it allows for great data encapsulation (separating the interface from implementation) and polymorphism (letting a whole set of data types behave the same way). However:<br />
<br />
''Data encapsulation and polymorphism are not exclusive to OOP!''<br />
<br />
Haskell has tools for abstracting data. We can't really get into it without first going through the module system and how abstract data types (ADT) work in Haskell, something which is well beyond the scope of this essay. We will therefore settle for a short description of how ADTs and polymorphism works in Haskell.<br />
<br />
Data encapsulation is done in Haskell by declaring each data type in a separate module, from this module you only export the interface. Internally there might be a host of functions that touch the actual data, but the interface is all that's visible from outside of the module.<br />
Note that the data type and the functions that act upon the data type are not grouped into an "object", but they are (typically) grouped into the same module, so you can choose to only export certain functions (and not the constructors for the data type) thus making these functions the only way to manipulate the data type - "hiding" the implementation from the interface.<br />
<br />
Polymorphism is done by using something called type classes. Now, if you come from a C++ or Java background you might associate classes with something resembling a template for how to construct an object, but that's not what they mean in Haskell. A type class in Haskell is really just what it sounds like. It's a set of rules for determining whether a type is an instance of that class.<br />
So Haskell separates the class instantiation and the construction of the data type. You might declare a type "Porsche", to be an instance of the "Car" type class, say. All functions that can be applied onto any other member of the Car type class can then be applied to a Porsche as well.<br />
A class that's included with Haskell is the Show type class, for which a type can be instantiated by providing a show function, which converts the data type to a String. Consequently almost all types in Haskell can be printed onto the screen by applying show on them to convert them to a String, and then using the relevant IO action (more on IO in the tutorials).<br />
Note how similar this is to the the object notion in OOP when it comes to the polymorphism aspect.<br />
The Haskell system is a more intuitive system for handling polymorphism. You won't have to worry about inheriting in the correct hierarchical order or to make sure that the inheritance is even sensible. A class is just a class, and types that are instances of this class really doesn't have to share some parent-child inheritance relationship. If your data type fulfills the requirements of a class, then it can be instantiated in that class. Simple, isn't it?<br />
Remember the QuickSort example? Remember that I said it was polymorphic? The secret behind the polymorphism in qsort is that it is defined to work on any type in the Ord type class (for "Ordered"). Ord has a set of functions defined, among them is "<" and ">=" which are sufficient for our needs because we only need to know whether an element is smaller than x or not. So if we were to define the Ord functions for our Porsche type (it's sufficient to implement, say, <= and ==, Haskell will figure out the rest from those) in an instantiation of the Ord type class, we could then use qsort to sort lists of Porsches (even though sorting Porsches might not make sense).<br />
Note that we never say anything about which classes the elements of the list must be defined for, Haskell will infer this automatically from just looking at which functions we have used (in the qsort example, only "<" and ">=" are relevant).<br />
<br />
So to summarize: Haskell does include mechanisms for data encapsulation that match or surpass those of OOP languages. The only thing Haskell does not provide is a way to group functions and data together into a single "object" (aside from creating a data type which includes a function - remember, functions are data!). This is, however, a very minor problem. To apply a function to an object you would write "func obj a b c" instead of something like "obj.func a b c".<br />
<br />
<br />
== Modularity ==<br />
A central concept in computing is modularity. A popular analogy is this: say you wanted to construct a wooden chair. If you construct the parts of it separately, and then glue them together, the task is solved easily. But if you were to carve the whole thing out of a solid piece of wood, it would prove to be quite a bit harder. John Hughes had this to say on the topic in his paper [http://www.cse.chalmers.se/~rjmh/Papers/whyfp.html Why Functional Programming Matters]<br />
<br />
''"Languages which aim to improve productivity must support modular programming well. But new scope rules and mechanisms for separate compilation are not enough - modularity means more than modules. Our ability to decompose a problem into parts depends directly on our ability to glue solutions together. To assist modular programming, a language must provide good glue.''<br />
<br />
''Functional programming languages provide two new kinds of glue - higher-order functions and lazy evaluation."''<br />
<br />
<br />
==The speed of Haskell ==<br />
Let me first state clearly that the following only applies to the general case in which speed isn't absolutely critical, where you can accept a few percent longer execution time for the benefit of reducing development time greatly. There are cases when speed is the primary concern, and then the following section will not apply to the same extent.<br />
<br />
Now, some C++ programmers might claim that the C++ version of QuickSort above is probably a bit faster than the Haskell version. And this might be true. For most applications, though, the difference in speed is so small that it's utterly irrelevant. For instance, take a look at the [http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=all Computer Language Shootout], where Haskell compares favorably to most of the so called "fast" languages.<br />
Now, these benchmarks don't prove all that much about real-world performance, but they do show that Haskell isn't as slow as some people think. At the time of writing it's in 4th position, only slightly behind C and C++.<br />
<br />
Almost all programs in use today have a fairly even spread of processing time among its functions. The most notable exceptions are applications like MPEG encoders, and artificial benchmarks, which spend a large portion of their execution time within a small portion of the code. If you ''really'' need speed at all costs, consider using C instead of Haskell.<br />
<br />
There's an old rule in computer programming called the "80/20 rule". It states that 80% of the time is spent in 20% of the code. The consequence of this is that any given function in your system will likely be of minimal importance when it comes to optimizations for speed. There may be only a handful of functions important enough to optimize. These important functions could be written in C (using the excellent foreign function interface in Haskell). The role of C could, and probably will, take over the role of assembler programming - you use it for the really time-critical bits of your system, but not for the whole system itself.<br />
<br />
We should continue to move to higher levels of abstraction, just like we've done before. We should trade application speed for increased productivity, stability and maintainability. Programmer time is almost always more expensive than CPU time.<br />
We aren't writing applications in assembler anymore for the same reason we shouldn't be writing applications in C anymore.<br />
<br />
Finally remember that algorithmic optimization can give much better results than code optimization. For theoretical examples when factors such as development times and stability doesn't matter, then sure C is often faster than Haskell. But in the real world development times ''do'' matter, this isn't the case. If you can develop your Haskell application in one tenth the time it would take to develop it in C (from experience, this is not at all uncommon) you will have lots of time to profile and implement new algorithims. So in the "real world" where we don't have infinite amounts of time to program our applications, Haskell programs can often be much faster than C programs.<br />
<br />
<br />
== Epilogue ==<br />
So if Haskell is so great, how come it isn't "mainstream"? Well, one reason is that the operating system is probably written in C or some other imperative language, so if your application mainly interacts with the internals of the OS, you may have an easier time using imperative languages. Another reason for the lack of Haskell, and other functional languages, in mainstream use is that programming languages are rarely thought of as tools (even though they are). To most people their favorite programming language is much more like religion - it just seems unlikely that any other language exists that can get the job done better and faster.<br />
<br />
There is a essay by Paul Graham called [http://www.paulgraham.com/avg.html Beating the Averages] describing his experience using Common Lisp, another functional language, for an upstart company. In it he uses an analogy which he calls "The Blub Paradox".<br />
<br />
It goes a little something like this:<br />
If a programmer's favorite language is Blub, which is positioned somewhere in the middle of the "power spectrum", he can most often only identify languages that are lower down in the spectrum. He can look at COBOL and say "How can anyone get anything done in that language, it doesn't have feature x", x being a feature in Blub.<br />
<br />
However, this Blub programmer has a harder time looking the other way in the spectrum. If he examines languages that are higher up in the power spectrum, they will just seem "weird" because the Blub programmer is "thinking in Blub" and can not possibly see the uses for various features of more powerful languages. It goes without saying that this inductively leads to the conclusion that to be able to compare all languages you'll need to position yourself at the top of the power spectrum. It is my belief that functional languages, almost by definition, are closer to the top of the power spectrum than imperative ones.<br />
So languages can actually limit a programmers frame of thought. If all you've ever programmed is Blub, you may not see the limitations of Blub - you may only do that by switching to another level which is more powerful.<br />
<br />
One of the reasons the mainstream doesn't use Haskell is because people feel that "their" language does "everything they need". And of course it does, because they are thinking in Blub! Languages aren't just technology, it's a way of thinking. And if you're not thinking in Haskell, it is very hard to see the use of Haskell - even if Haskell would allow you to write better applications in a shorter amount of time!<br />
<br />
Hopefully this article has helped you break out of the Blub paradox. Even though you may not yet "think in Haskell", it is my hope that you are at least aware of any limitations in your frame of thought imposed by your current "favorite" language, and that you now have more motivation to expand it by learning something new.<br />
<br />
If you are committed to learn a functional language, to get a better view of the power spectrum, then Haskell is an excellent candidate.<br />
<br />
[[Category:Tutorials]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Gentoo&diff=38460Gentoo2011-02-05T02:29:31Z<p>LennartKolmodin: Update repo address -> github</p>
<hr />
<div>==Packages==<br />
[http://gentoo.org/ Gentoo Linux] has fairly good support for Haskell.<br />
<br />
There are packages for [[GHC]] and more than 60 other Haskell libraries and tools. There are also packages for other Haskell implementations like [[Hugs|Hugs98]] and [[Helium]].<br />
<br />
You can check the currently available versions of packages:<br />
<br />
* [http://packages.gentoo.org/category/dev-haskell libraries and tools]<br />
* [http://packages.gentoo.org/package/dev-lang/ghc ghc]<br />
* [http://packages.gentoo.org/package/dev-lang/hugs98 hugs98]<br />
* [http://packages.gentoo.org/package/dev-util/darcs darcs]<br />
* [http://packages.gentoo.org/package/x11-wm/xmonad xmonad]<br />
<br />
There is support for most packages on several architectures: ''x86'', ''amd64'', ''sparc'' and ''ppc''.<br />
There is support for some packages on ''ppc64'', ''alpha'', ''ia64'' and ''hppa''.<br />
<br />
==Gentoo Haskell Overlay==<br />
If you want the most up to date (but also most untested) packages you can use the Gentoo Haskell Overlay. "Overlays" are package trees for Portage. They contain additional ebuilds for Gentoo. They are maintained by Gentoo developers, but are distributed separately from the main Portage tree. Haskell has [https://github.com/gentoo-haskell/gentoo-haskell its own] dedicated overlay containing lots of haskell projects. See the [http://www.gentoo.org/proj/en/overlays/userguide.xml Gentoo Overlays: Users' Guide] for how to use overlays. However, don't forget that like with all overlays, you use the ebuilds there at your own risk. '''Do not report errors in overlay ebuilds to the Gentoo Bugzilla!'''<br />
<br />
==Support and bugs==<br />
* Bugs found in ebuilds within the official tree should be reported in the [http://bugs.gentoo.org Gentoo bugzilla]. Bugs found in the overlay should be reported in the IRC channel.<br />
* There is a #gentoo-haskell [[IRC channel]] on freenode.net for people interested in developing and testing haskell-related ebuilds.<br />
<br />
Filing bugs can also be used to ask for new packages or new versions of existing packages. We would like to encourage users to suggest any packages they feel are useful but are currently not included in portage. Though note that we generally only package released versions of software where there are tarballs available and where there is an expectation that the software will be maintained. We also greatly prefer packages that are distributed via [http://hackage.haskell.org/ Hackage] as it allows us to use automated tools.<br />
<br />
==haskell-updater==<br />
<br />
Work is currently progressing on ''haskell-updater'', the replacement for ghc-updater currently installed with dev-lang/ghc. There are four main advantages:<br />
<br />
* Now supports pkgcore and paludis, not just portage. This can easily be extended if anyone decides to create Yet Another Gentoo Package Manager.<br />
* Will also rebuild Haskell libraries that have had their dependencies changed (ala revdep-rebuild/reconcilio/etc.). That is, it will rebuild packages corresponding to the libraries listed by "ghc-pkg check".<br />
* It will be shipped separately to GHC, which means we can update it (ghc-updater has been frozen due to not wanting to cause problems with versions already installed, etc.).<br />
* It's written in our favourite language (Haskell, of course) rather than a weird conglomeration of bash and Python. This means it's faster (presumably), more flexible, and we're more likely to maintain it since it's in a language we prefer and are more used to.<br />
<br />
The darcs repository is available at [http://code.haskell.org/gentoo/haskell-updater/ here]. There are ebuilds available both in portage and the [[#Gentoo Haskell Overlay]]. For more information, feel free to visit us at #gentoo-haskell [[IRC channel]].<br />
<br />
==Haskell Platform==<br />
<br />
The [http://hackage.haskell.org/platform/ Haskell Platform] is a blessed library and tool suite for Haskell distilled from [http://hackage.haskell.org/packages/hackage.html Hackage]. Naturally Gentoo supports it. Find out how to install it on your Gentoo box at [[Gentoo/HaskellPlatform]].<br />
<br />
[[Category:OS]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=ZuriHac2010/Accommodations&diff=34197ZuriHac2010/Accommodations2010-03-19T15:32:37Z<p>LennartKolmodin: Added myself</p>
<hr />
<div>This is the accomodation page for [[ZuriHac]]. Please refer to the [[ZuriHac|main page]] for more information.<br />
<br />
Please use this page to organize where you are going to stay. '''Don't forget to specify the room!'''<br />
<br />
{| class="wikitable"<br />
! Names<br />
! Staying At<br />
! Further Information<br />
|-<br />
| Joachim Breitner, Martin Kiefel<br />
| City Backpacker<br />
| Looking for up to four people to share a room.<br />
|-<br />
| Benedikt Huber, David Markvica<br />
| City Backpacker<br />
| Room 201<br />
|- <br />
| Roman Cheplyaka<br />
| City Backpacker<br />
| Room 204<br />
|- <br />
| Florent Becker, Guillaume Hoffmann, Eric Kow, Reinier Lamers, Ganesh Sittampalam<br />
| City Backpacker<br />
| Room 403<br />
|- <br />
| Jasper Van der Jeugt<br />
| City Backpacker<br />
| Room 404<br />
|-<br />
| Lennart Kolmodin<br />
| City Backpacker<br />
| Room 404<br />
|-<br />
| Sergey Astanin<br />
| City Backpacker<br />
|<br />
|-<br />
| Marc A. Ziegert<br />
| Youth Hostel<br />
|<br />
|-<br />
| Tom Harper, Jim Whitehead <br />
| City Backpacker<br />
|<br />
|-<br />
| Oliver Mueller <br />
| City Backpacker<br />
|<br />
|-<br />
| Erik, Chris, Sjoerd, Sebas, Tom, Martijn<br />
| City Backpacker<br />
| Room 203<br />
|-<br />
| Sean, Atze, Jeroen<br />
| City Backpacker<br />
| <br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=ZuriHac2010/Projects&diff=34195ZuriHac2010/Projects2010-03-19T14:27:57Z<p>LennartKolmodin: Added info about previous work of binary</p>
<hr />
<div>== Generic information ==<br />
<br />
You can apply for an account and a project using<br />
[http://community.haskell.org/admin/ the community server].<br />
<br />
Once you have an account and/or a project, you upload a Darcs repository as follows. First, initialize your repository on the server:<br />
<br />
$ ssh community.haskell.org<br />
you@haskell:~$ cd /srv/code/yourproject<br />
you@haskell:/srv/code/yourproject$ darcs init<br />
<br />
Then, log out and push your repository:<br />
<br />
$ darcs push community.haskell.org:/srv/code/yourproject<br />
<br />
== Projects ==<br />
<br />
If you have a project that you want to work on at the Hackathon, please describe it here.<br />
<br />
Since Hackathons are great for teamwork, consider joining one of the projects mentioned below. If you're interested in one of these projects, add your name to the list of hackers under that project.<br />
<!-- Copy this template<br />
=== Project name ===<br />
<br />
I am a project. Love me.<br />
<br />
Hackers: Hacker 1, Hacker 2<br />
--><br />
<br />
=== Darcs ===<br />
<br />
A large chunk of the Darcs team will be at ZuriHac. We would be delighted for you to join in and do some hacking with us. To help you get started, we have a big list of ProbablyEasy bugs to chew on. See our [http://wiki.darcs.net/Sprints/2010-03 sprint page] for more details!<br />
<br />
Hackers: Florent Becker, Guillaume Hoffmann, Eric Kow, Reinier Lamers, Petr Rockai, Ganesh Sittampalam and more...<br />
<br />
=== DPM (Darcs Patch Manager) ===<br />
<br />
The Darcs Patch Manager (DPM for short) is a tool that simplifies working with darcs. It is most effective when used in an environment where developers do not push their patches directly to the main repository but where patches undergo a reviewing process before they are actually applied. See http://www.factisresearch.com/2010/03/dpm/ for a short tutorial.<br />
<br />
At the hackathon, we would like to add support for detecting conflicts between patches to the DPM. Some help from the darcs hackers on ideas how this feature could be realized would be great! Also, the integration with darcs is quite fragile, so we would also appreciate feedback from darcs hackers here.<br />
<br />
Here are some ideas:<br />
<br />
* Track conflicts. DPM should be aware of conflicts between two patches and between a patch and the current state of the repo.<br />
* Diff between two patches in the same patch group.<br />
* Improved apply command. DPM should select automatically the patch to apply instead of relying on darcs' interactive apply command<br />
* Proper configuration file. At the moment, DPM relies exclusively on commandline arguments for customization.<br />
* Some more patch states could be useful: DISCUSSION (similar to UNDECIDED but already reviewed and awaiting feedback from the patch developer), UNAPPLICABLE, ACCEPTED (ready to be applied but still unapplied). We should discuss which of these states are really needed and which can already be represented through the existing states + comments + the reviewed flag.<br />
* The review command should offer the possibility to apply the patch directly to the repo. Something dialog like this would be cool:<br />
<br />
What should I do with this patch?<br />
a) accept<br />
r) reject<br />
d) discard<br />
w) wait<br />
s) send review to author and wait<br />
<br />
* Support for transitive dependencies<br />
* Readline support<br />
* Cleanup command (remove closed patch groups from the DB)<br />
* Automatize interactive tests. DPM is lacking a good test suite. Often, I test DPM interactively by executing a series of shell commands and checking that the output is correct. It would be nice if we could record the shell commands and their output (the script tool could be useful here), so that we could replay them later.<br />
* Bounce patch via email.<br />
* Webfrontend for 'dpm list'<br />
<br />
Hackers: Stefan Wehr<br />
<br />
=== Need for speed ===<br />
<br />
In 2006 the Python community had a [http://wiki.python.org/moin/NeedForSpeed NeedForSpeed sprint]. Some Haskell libraries, like the containers library, could use some benchmarks (using e.g. [http://hackage.haskell.org/package/criterion Criterion]) and hopefully some performance improvements.<br />
<br />
=== event ===<br />
<br />
The [http://github.com/tibbe/event event library] will hopefully replace GHC's I/O manager with a more scalable implementation, based on better data structures and more efficient system calls (e.g. epoll/kqueue).<br />
<br />
The project is nearing completion, but more testing and benchmarking is needed. The code also needs to be merged into GHC.<br />
<br />
Hackers: Johan Tibell<br />
<br />
=== Data.Binary on continuations ===<br />
<br />
The [http://code.haskell.org/binary/ Data.Binary library] provides blazing fast reading/writing of binary data. There are a few things I'd like to see improved, hopefully before inclusion in the [http://hackage.haskell.org/platform/ Haskell Platform]:<br />
<br />
* It's not possible to use the library on large inputs without resorting to lazy I/O. By changing the underlying implementation to use continuations and expose a continuations based API we can process large inputs without resorting to unsafe operations. This needs to be done while still offering good performance.<br />
* The library lacks error handling. The above implementation would naturally support communicating errors to the user. There are however other ways to achieve the same result.<br />
* The library currently includes two separate features in one package, low-level binary parsing of simple types (e.g. Ints and Words) and a data format (the Binary typeclass). Arguably the library should be split in two.<br />
* The binary data format should be documented and it should be clear which types are guaranteed to have the same encoding for the foreseeable future.<br />
<br />
Hackers: Johan Tibell, Christophe Poucet, Marc A. Ziegert, Lennart Kolmodin<br />
<br />
Comment by Jürgen "Jutaro" Nicklisch: I've hacked an addition package to binary: [http://hackage.haskell.org/package/binary-shared binary-shared], which gives sharing of data for serialization and deserialization. For my app this gives a huge saving of space and time and I think it would be reasonable to integrate this into the binary package. <br />
<br />
Comment by David Anderson: A good place to start for switching to CPS might be Attoparsec. The internals are very fast, and could probably make it into Binary.Get easily.<br />
<br />
Comment by Lennart Kolmodin: I've got a CPS based version of binary working at <br />
http://haskell.org/~kolmodin/code/binary-push/ The Data.Binary.Get has been rewritten, some functions are still missing from the original API.<br />
<br />
=== Adaptable containers ===<br />
<br />
Scala's collection library was [http://www.scala-lang.org/node/2060 completely overhauled] in 2.8. The [http://hackage.haskell.org/package/containers containers library] is a bit dated. There are several things that could be done:<br />
<br />
* Write a new library based on associate data types, yielding performance improvements.<br />
* Write more tests and add some [http://hackage.haskell.org/package/criterion Criterion] benchmarks.<br />
* Consolidate API naming, exported functions, etc.<br />
<br />
Hackers: Christophe Poucet <br />
<br />
=== Leksah ===<br />
<br />
I will work on Leksah and help is needed and welcome<br />
<br />
* Packaging for Debian/Ubuntu<br />
* Editor for Cabal files with configurations<br />
* Concept for Plugins/Extensions<br />
* Fixing bugs<br />
* ...<br />
<br />
Hackers: Jürgen Nicklisch<br />
<br />
=== arbtt ===<br />
<br />
The automatic rule based time tracker needs some love. Possible projects are <br />
<br />
* Graphical statistics<br />
* Export to hamster db (they have nice statistics)<br />
* More powerful date/time manipulation rules (including type inference and good error messages)<br />
* Performance improvements<br />
* ...<br />
<br />
Hackers: Joachim “nomeata” Breitner, Martin Kiefel<br />
<br />
=== loker ===<br />
<br />
Loker is:<br />
* library for parsing (POSIX) UNIX Shell scripts<br />
* program for static analysis of Shell scripts<br />
* compiler for Shell scripts<br />
* whatever you can imagine related to Shell scripts.<br />
<br />
Currently the parser part is almost done. See [http://github.com/feuerbach/loker githug repository].<br />
<br />
I am happy to see anyone interested in the project, please contact [http://ro-che.info/ me].<br />
<br />
Hackers: Roman Cheplyaka<br />
<br />
=== JPEG-decoder ===<br />
<br />
Package stb-image contains a JPEG-decoding function, but it is a wrapper around a C function. Obviously, it is not the Haskell spirit to let C do the dirty work!<br />
<br />
I once wrote a JPEG-decoder purely in Haskell. It is optimized for readability rather than speed.<br />
During the Hackathon, I want to: <br />
* package it under Cabal<br />
* try and optimize it (using bytestreams (or bitstreams?))<br />
* see whether it competes with the C implementation...<br />
Help of hackers who know bytestreams is appreciated (you don't need knowledge of JPEG to participate in this project).<br />
<br />
Hackers: Jeroen Fokker.<br />
<br />
=== hledger ===<br />
[http://hledger.org/ Hledger] is a personal finance manager. Hackers are welcome! Hledger's author Simon Michael will be (remotely) with us.<br />
<br />
Tasks:<br />
# Readline-like interface in "hledger add", perhaps using shellac <br />
# Embedded calculator into "hledger add"<br />
# Exporting data to R<br />
# Improve hledger as a library. Design good API<br />
# Also see ideas [http://groups.google.com/group/hledger/msg/9827288df3e5bf51 here]; feel free to add them to this list if you are going to hack on them<br />
<br />
Hackers: Roman Cheplyaka<br />
<br />
=== BlazeHtml ===<br />
There are several HTML combinator libraries on hackage, but we still need one that is *really* fast. This is attempt to tackle the problem [http://hackage.haskell.org/trac/summer-of-code/ticket/1580 described here]. A simple API proposal can be found [http://gist.github.com/332603 here], and the corresponding github repo [http://github.com/jaspervdj/BlazeHtml is here]. Everyone is welcome to hack on this (new) project, if you're interested please contact [http://jaspervdj.be/contact.html me].<br />
<br />
Hackers: Jasper Van der Jeugt, Simon Meier, Christopher Done(?)<br />
<br />
* I'm interested in this -- I've forked your github gist. Do you want to start a proper project that we can fork? I'll try to come up with some Criterion tests and QuickCheck properties. I'm interested in adding a type-safe layer which may require some newtypes. Criterion will help determine how detrimental this is to speed and space. ---- [[User:Chrisdone|Chrisdone]] 22:17, 15 March 2010 (UTC)<br />
<br />
=== Pesto ===<br />
I will be working on the Pesto web framework. Rather than a regular framework, it is a collection of orthogonal modules for the model, view and controller part. I will try to release the [http://github.com/chriseidhof/regular-web regular-web] package and possibly work on the [http://github.com/chriseidhof/Basil Basil] library.<br />
<br />
Hackers: Chris Eidhof, Christopher Done(?)<br />
<br />
===Sirenial===<br />
[http://code.google.com/p/sirenial/ Sirenial] is a type-safe SQL wrapper. Compared to HaskellDB it uses simpler types and is able to automatically and transparently merge similar SELECT queries. During the Hackathon I will aim to bring the project to a usable state and release a first version on Hackage.<br />
<br />
Hackers: Martijn van Steenbergen<br />
<br />
=== UHC ===<br />
We will work on library support (Cabal, FFI) for UHC.<br />
There are many other projects, work in progress, etc, so just ask us if you want<br />
to work on a UHC related project or just are interested to know a bit more about its internals.<br />
<br />
Hackers: Atze Dijkstra, Andres L&ouml;h, Jeroen Fokker<br />
<br />
=== Testable Documentation ===<br />
I'll work on testable documentation. There is still some work to be done on [http://hackage.haskell.org/package/DocTest DocTest] (e. g. integration with Haddock, support for QuickCheck properties). An other idea is to define some format for tutorials, that allows us to verify that given Examples do actually work. Please drop me some lines (simon hengel at wiktory org), if you are interested in the topic.<br />
<br />
'''Update:''' I plan to finish DocTest integration with Haddock and then spend the rest of the weekend on Cabal. If you are interested in testable documentation or if you have any ideas, I would still like to chat with you;)<br />
<br />
Hackers: Simon Hengel<br />
<br />
=== Histories on data types ===<br />
I'm going to be working on a seamlessly extending ADTs with histories and lifting functions on those ADTs to properly extend the histories. Things I'll probably spend time on: trying to find a clean SYB formulation for this, and extending the Diff library on Hackage to work on ByteString and Text.<br />
<br />
Hackers: Fred Ross<br />
<br />
=== Haskell eval/type-checker/smallchecker as a RESTful service ===<br />
Considering hacking more on the libraries behind TryHaskell as a service for checking small chunks of code -- similar to CodePad but as a RESTful service callable from JavaScript. This could be used on tutorials and online books such as Learn You A Haskell for testing code samples and interactive exercises (e.g. using smallcheck to check correctness of exercise answers). I envisage blog posts showing snippets that one can run in-page. It's currently on my home computer but I have set a Linode VPS for this purpose (it could also work with multiple hosts although I'm not too up on how to do that). Let me know if you're interesting in using or hacking on this idea. Also thinking about how to utilise CodePad if possible.<br />
<br />
Hackers: Christopher Done<br />
<br />
===Cabal===<br />
[http://hackage.haskell.org/trac/hackage/wiki Cabal] just recently i had to implement a minimal packaging system for my work. for some of the tasks it was convenient to reuse some of the cabal features. so i just stumbled across a post from duncan from last year ([http://www.haskell.org/pipermail/cabal-devel/2009-January/004548.html post from duncan]) trying to find developers interested in helping with cabal. don't know if anybody wants to do some work on that but if there is i'd be up for it.<br />
<br />
Hackers: Oliver Mueller, Simon Hengel<br />
<br />
===symhs===<br />
[http://code.google.com/p/sympy/ sympy] is a very good and easy to use symbolic math package for python. We would like to create something similar in Haskell. Of course the time will be limited, so we will try to concentrate on something minimal which is already useful.<br />
<br />
Hackers: Mihaly Barasz, Gergely Risko<br />
<br />
=== Tunskell ===<br />
<br />
[http://bitbucket.org/danderson/tunskell A VPN mesh daemon] written in Haskell. Among other things, it implements an IP routing engine, the BGP dynamic routing protocol, and the results so far show that it's smoking fast at what it does.<br />
<br />
The code is still under heavy construction. The goal for the hackathon is to finish the BGP portion of the code, hooking up a routing table using that BGP code, and get multiple routers communicating and routing between each other, with some QuickCheck and Criterion thrown in. Other possible tasks are adding transport security (authentication + crypto between peers), peer management (disconnect/reconnect handling), handling network timeouts, and figuring out how to do configuration and hot configuration reloading.<br />
<br />
Since the aim is partially to dispel the myth that Haskell can't be used for I/O heavy real world code, help on improving the performance of the code is most welcome.<br />
<br />
Hackers: David Anderson<br />
<br />
=== HOC ===<br />
<br />
The [http://code.google.com/p/hoc/ Haskell Objective C-Bridge] (HOC) currently does not work out-of-the box on latest ghc/cabal. We want to fix this, work on [http://hackage.haskell.org/trac/hackage/ticket/188 cabal support for building Objective C modules], and eventually see if it is possible to get HOC on hackage.<br />
<br />
Hackers: Benedikt Huber, David Markvica<br />
<br />
=== Haskell Platform ===<br />
<br />
Time to release the [http://haskell.org/platform/Haskell Platform]<br />
<br />
Hackers: Don<br />
<br />
=== Email ===<br />
<br />
A library for sending emails via SMTP or `sendmail`. In the future the email library should be extended to include parsing and generating of emails, reading mboxes and maildirs or connecting to IMAP and POP servers.<br />
<br />
Hackers: Gero Kriependorf, Dirk Spöri, Johannes Weiss, <br />
<br />
== Experience ==<br />
<br />
Please list projects with which you are familiar. This way, people know whom to contact for more information or guidance on a particular project.<br />
<br />
{| class="wikitable"<br />
! Name<br />
! Projects<br />
|-<br />
| tibbe<br />
| [http://github.com/tibbe/event event], [http://github.com/tibbe/hyena Hyena], and general networking/HTTP<br />
|-<br />
| chrisdone<br />
| Hacked on/worked on: libgd, hsql, fast/cgi, formlets, json, fdo-notify, mueval, lambdabot, wordcloud, goa, tryhaskell<br />
|-<br />
| coeus<br />
| Network.Socket, binary+cereal; NFSv3 protocol, RS-Codes, have been working with multiple different interacting threads (i.e. combined with single-threaded GUIs, NFS-proxy)<br />
|-<br />
|chriseidhof<br />
| formlets, sphinx, Basil, regular-web, regular, fclabels.<br />
|-<br />
|JedBrown<br />
| distributed memory parallelism, numerical analysis, [http://hackage.haskell.org/package/fft fft]<br />
|-<br />
|SebastiaanVisser<br />
| salvia: websockets, inter-process sessions, more flexible user managent, http-ranges, more abstract api and more. [http://github.com/sebastiaanvisser/salvia-extras (github)]<br />
|-<br />
|DavidAnderson<br />
| Used: FFI, Network, STM; modest hacking on Attoparsec.<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=ZuriHac2010/Projects&diff=34008ZuriHac2010/Projects2010-03-11T09:25:14Z<p>LennartKolmodin: Add myself to hacker list of binary</p>
<hr />
<div>== Generic information ==<br />
<br />
You can apply for an account and a project using<br />
[http://community.haskell.org/admin/ the community server].<br />
<br />
Once you have an account and/or a project, you upload a Darcs repository as follows. First, initialize your repository on the server:<br />
<br />
$ ssh community.haskell.org<br />
you@haskell:~$ cd /srv/code/yourproject<br />
you@haskell:/srv/code/yourproject$ darcs init<br />
<br />
Then, log out and push your repository:<br />
<br />
$ darcs push community.haskell.org:/srv/code/yourproject<br />
<br />
== Projects ==<br />
<br />
If you have a project that you want to work on at the Hackathon, please describe it here.<br />
<br />
Since Hackathons are great for teamwork, consider joining one of the projects mentioned below. If you're interested in one of these projects, add your name to the list of hackers under that project.<br />
<!-- Copy this template<br />
=== Project name ===<br />
<br />
I am a project. Love me.<br />
<br />
Hackers: Hacker 1, Hacker 2<br />
--><br />
<br />
=== Darcs ===<br />
<br />
A large chunk of the Darcs team will be at ZuriHac. We would be delighted for you to join in and do some hacking with us. To help you get started, we have a big list of ProbablyEasy bugs to chew on. See our [http://wiki.darcs.net/Sprints/2010-03 sprint page] for more details!<br />
<br />
Hackers: Florent Becker, Guillaume Hoffmann, Eric Kow, Reinier Lamers, Petr Rockai, Ganesh Sittampalam and more...<br />
<br />
=== Need for speed ===<br />
<br />
In 2006 the Python community had a [http://wiki.python.org/moin/NeedForSpeed NeedForSpeed sprint]. Some Haskell libraries, like the containers library, could use some benchmarks (using e.g. [http://hackage.haskell.org/package/criterion Criterion]) and hopefully some performance improvements.<br />
<br />
=== event ===<br />
<br />
The [http://github.com/tibbe/event event library] will hopefully replace GHC's I/O manager with a more scalable implementation, based on better data structures and more efficient system calls (e.g. epoll/kqueue).<br />
<br />
The project is nearing completion, but more testing and benchmarking is needed. The code also needs to be merged into GHC.<br />
<br />
Hackers: Johan Tibell<br />
<br />
=== Data.Binary on continuations ===<br />
<br />
The [http://code.haskell.org/binary/ Data.Binary library] provides blazing fast reading/writing of binary data. There are a few things I'd like to see improved, hopefully before inclusion in the [http://hackage.haskell.org/platform/ Haskell Platform]:<br />
<br />
* It's not possible to use the library on large inputs without resorting to lazy I/O. By changing the underlying implementation to use continuations and expose a continuations based API we can process large inputs without resorting to unsafe operations. This needs to be done while still offering good performance.<br />
* The library lacks error handling. The above implementation would naturally support communicating errors to the user. There are however other ways to achieve the same result.<br />
* The library currently includes two separate features in one package, low-level binary parsing of simple types (e.g. Ints and Words) and a data format (the Binary typeclass). Arguably the library should be split in two.<br />
* The binary data format should be documented and it should be clear which types are guaranteed to have the same encoding for the foreseeable future.<br />
<br />
Hackers: Johan Tibell, Christophe Poucet, Marc A. Ziegert, Lennart Kolmodin<br />
<br />
Comment by Jürgen "Jutaro" Nicklisch: I've hacked an addition package to binary: [http://hackage.haskell.org/package/binary-shared binary-shared], which gives sharing of data for serialization and deserialization. For my app this gives a huge saving of space and time and I think it would be reasonable to integrate this into the binary package. <br />
<br />
<br />
=== Adaptable containers ===<br />
<br />
Scala's collection library was [http://www.scala-lang.org/node/2060 completely overhauled] in 2.8. The [http://hackage.haskell.org/package/containers containers library] is a bit dated. There are several things that could be done:<br />
<br />
* Write a new library based on associate data types, yielding performance improvements.<br />
* Write more tests and add some [http://hackage.haskell.org/package/criterion Criterion] benchmarks.<br />
* Consolidate API naming, exported functions, etc.<br />
<br />
Hackers: Christophe Poucet <br />
<br />
=== Leksah ===<br />
<br />
I will work on Leksah and help is needed and welcome<br />
<br />
* Packaging for Debian/Ubuntu<br />
* Editor for Cabal files with configurations<br />
* Concept for Plugins/Extensions<br />
* Fixing bugs<br />
* ...<br />
<br />
Hackers: Jürgen Nicklisch<br />
<br />
=== arbtt ===<br />
<br />
The automatic rule based time tracker needs some love. Possible projects are <br />
<br />
* Graphical statistics<br />
* Export to hamster db (they have nice statistics)<br />
* More powerful date/time manipulation rules (including type inference and good error messages)<br />
* Performance improvements<br />
* ...<br />
<br />
Hackers: Joachim “nomeata” Breitner<br />
<br />
=== loker ===<br />
<br />
Loker is:<br />
* library for parsing (POSIX) UNIX Shell scripts<br />
* program for static analysis of Shell scripts<br />
* compiler for Shell scripts<br />
* whatever you can imagine related to Shell scripts.<br />
<br />
Currently the parser part is almost done. See [http://github.com/feuerbach/loker githug repository].<br />
<br />
I am happy to see anyone interested in the project, please contact [http://ro-che.info/ me].<br />
<br />
Hackers: Roman Cheplyaka<br />
<br />
== Experience ==<br />
<br />
Please list projects with which you are familiar. This way, people know whom to contact for more information or guidance on a particular project.<br />
<br />
{| class="wikitable"<br />
! Name<br />
! Projects<br />
|-<br />
| tibbe<br />
| [http://github.com/tibbe/event event], [http://github.com/tibbe/hyena Hyena], and general networking/HTTP<br />
|-<br />
| chrisdone<br />
| Hacked on/worked on: libgd, hsql, fast/cgi, formlets, json, fdo-notify, mueval, lambdabot, wordcloud, goa, tryhaskell<br />
|-<br />
| coeus<br />
| Network.Socket, binary+cereal; NFSv3 protocol, RS-Codes, have been working with multiple different interacting threads (i.e. combined with single-threaded GUIs, NFS-proxy)<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=ZuriHac2010/Attendees&diff=31591ZuriHac2010/Attendees2009-11-15T15:05:24Z<p>LennartKolmodin: Added myself</p>
<hr />
<div>This is the attendee list for [[ZuriHac]]. Please refer to the [[ZuriHac|main page]] for more information.<br />
<br />
= Attendees =<br />
<br />
Once you've [[ZuriHac/Register|registered]], please add your name to the following table:<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
|-<br />
| coeus<br />
| Marc A. Ziegert<br />
| University of Paderborn<br />
| +49 17 5 6000 700<br />
| <br />
| <br />
| <br />
|-<br />
| Heffalump<br />
| Ganesh Sittampalam<br />
| Credit Suisse<br />
| +447968253467<br />
| <br />
| <br />
| <br />
|-<br />
| tibbe<br />
| Johan Tibell<br />
| Google<br />
| +41787978230<br />
| <br />
| <br />
| <br />
|-<br />
| <br />
| Keith Lomax<br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| sioraiocht<br />
| Tom Harper<br />
| Oxford University Computing Laboratory<br />
| +44 7533 998 591<br />
|<br />
|<br />
|<br />
|-<br />
| poucet<br />
| Christophe Poucet<br />
| Google<br />
| +41796691013<br />
| <br />
| <br />
| <br />
|-<br />
| zeuxis<br />
| Harald Holtmann<br />
| <br />
| +49 176 22053266<br />
| <br />
| <br />
| <br />
|-<br />
| rmies<br />
| Michel Rijnders<br />
| TTY (Amsterdam)<br />
| +31646442127<br />
|<br />
|<br />
|<br />
|-<br />
| <br />
| Simon Meier<br />
| ETH Zurich<br />
| <br />
|<br />
|<br />
|<br />
|-<br />
| Gh_<br />
| Guillaume Hoffmann<br />
|<br />
|<br />
| 19 morning<br />
| 21 afternoon<br />
|<br />
|-<br />
| vvv<br />
| Valery V. Vorotyntsev<br />
| Infopulse Ukraine<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| jnwhiteh<br />
| Jim Whitehead<br />
| Oxford University Computing Laboratory<br />
| +44 7846 257 133<br />
| <br />
| <br />
|-<br />
| kolmodin<br />
| Lennart Kolmodin<br />
| Västra Götalandsregionen<br />
| +46 73 6223606<br />
| <br />
|<br />
| <br />
|}<br />
<br />
= Additional Comments =<br />
<br />
Please use this section to leave comments for other attendees, e.g. for organizing accommodation.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=ZuriHac&diff=31590ZuriHac2009-11-15T15:02:48Z<p>LennartKolmodin: Added myself to possible attendees</p>
<hr />
<div>'''March 2010'''<br />
<br />
Zurich, Switzerland<br />
<br />
== 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 />
ZuriHac will be held in March at the Google office in Zurich. 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, some talks, good food, and, of course, fun! <br />
<br />
* Mailing list: [http://www.haskell.org/mailman/listinfo/hackathon hackathon@haskell.org]<br />
<br />
== News ==<br />
<br />
* Nov 6: [[/Register|registration]] is now open!<br />
<br />
== Registration ==<br />
<br />
If you will be attending, please [[/Register|register]]. If you like, you can also [[/Attendees|list yourself as an attendee]].<br />
<br />
== When ==<br />
<br />
March 19-21, 2010, from 2:30-6:30pm Friday, 10am-6pm Saturday, and 10am-6pm Sunday.<br />
<br />
== Where ==<br />
<br />
We will be in the TechTalk area of the [http://maps.google.com/maps?q=Brandschenkestrasse+110,+8002+Z%C3%BCrich,+Switzerland+(Google)&ie=UTF8&t=h&hq=&hnear=Brandschenkestrasse+110,+8002+Zurich,+Switzerland&z=16&iwloc=A Google office].<br />
<br />
== Equipment ==<br />
<br />
You should bring a laptop with wireless (802.11). The room has whiteboards and a projector for any discussions or should anyone wish to give a talk. <br />
<br />
== Travel ==<br />
<br />
Online timetables for travel within Zurich can be found at [http://www.zvv.ch/en/ ZVV]. For trains within Switzerland and to neighboring countries go to [http://www.sbb.ch/en/index.htm SBB].<br />
<br />
=== Getting to Zurich ===<br />
<br />
There are direct flight to Zurich airport (code: ZRH) from most major European cities. Switzerland also has excellent and reasonably priced train connections with the rest of Europe.<br />
<br />
=== Getting to the Google Office ===<br />
<br />
The train and tram stop closest to the Google office is [http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=Bahnhof+Enge+station&sll=47.36554,8.524864&sspn=0.012484,0.018497&ie=UTF8&hq=&hnear=Z%C3%BCrich+Enge&ll=47.364903,8.527515&spn=0.012485,0.018497&t=h&z=16&iwloc=A Bahnhof Enge]. You can take tram 5, 6, 7, 13, or S-Bahn S2 to get there. It takes about seven minutes by tram from the main train station (Zurich HB) to Bahnhof Enge and another five minutes to walk to the office.<br />
<br />
==== From the Airport ====<br />
<br />
Take S-Bahn S2 directly to Bahnhof Enge and walk from there. Alternatively, take any S-Bahn that goes to the main train station (Zurich HB) and take tram 6, 7, or 13 to Bahnhof Enge.<br />
<br />
== Preparations ==<br />
<br />
=== What to bring ===<br />
<br />
* A laptop<br />
* Wireless card if necessary. There will be wireless network access. Ethernet access will probably not be available. If you really need ethernet access, please contact the organizers.<br />
* Mobile phone<br />
<br />
== Contact ==<br />
<br />
For any questions or emergencies, you can always call Johan Tibell at +41-787-978230, or Christophe Poucet at +41-79-669-1013.<br />
<br />
== Possible Attendees ==<br />
<br />
Note: this section was just to gauge the level of interest in having a hackathon. To actually register, please visit the [[/Register|registration page]]. <br />
<br />
* Johan Tibell (tibbe)<br />
* Christophe Poucet (poucet)<br />
* Duncan Coutts (dcoutts)<br />
* Ganesh Sittampalam (Heffalump)<br />
* Iustin Pop<br />
* Tom Harper (sioraiocht)<br />
* Simon Meier<br />
* Marc A. Ziegert (coeus)<br />
* Joachim Breitner (nomeata)<br />
* Reinier Lamers (tux_rocker)<br />
* Chris Eidhof (chr1s)<br />
* Ian Lynagh (Igloo)<br />
* Valery V. Vorotyntsev (vvv)<br />
* Eric Kow (kowey)<br />
* Guillaume Hoffmann (gh_: impossible: 5-7)<br />
* Jürgen Nicklisch-Franken (jutaro)<br />
* Eelco Lempsink (eelco)<br />
* Muharem Hrnjadovic (almaisan)<br />
* Andres Löh (kosmikus; impossible: 12-14)<br />
* Clara Löh (smurfpje; impossible: 12-14)<br />
* Mathias Koerner (difficult: 5-7)<br />
* George van den Driessche<br />
* Valentin Wüstholz<br />
* Harald Holtmann<br />
* Lennart Kolmodin (kolmodin)<br />
<br />
<br />
== Organizers ==<br />
<br />
* Johan Tibell (irc: tibbe, e-mail: johan.tibell+zurihac@gmail.com)<br />
* Christophe Poucet (irc: poucet, e-mail: christophe.poucet+zurihac@gmail.com)<br />
<br />
[[Category:Community]]<br />
[[Category:Events]]<br />
[[Category:Hackathon]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac7/Attendees&diff=29673Hac7/Attendees2009-08-20T07:55:16Z<p>LennartKolmodin: Added myself</p>
<hr />
<div>This is the attendee list for [[Hac7]]. Please refer to the [[Hac7|main page]] for more information.<br />
<br />
= Attendees =<br />
<br />
Once you've [[Hac7/Register|registered]], please add your name to the following table:<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accommodation<br />
|-<br />
| <br />
| Matthew Brecknell<br />
| <br />
|<br />
| 29 August<br />
| 29 August (attending Generics Workshop 30th)<br />
|<br />
|-<br />
| <br />
| Andrew Smith<br />
| <br />
|<br />
| 29 August<br />
| 30 August<br />
|<br />
|-<br />
| <br />
| Dougal Stanton<br />
| <br />
|<br />
| 29 August<br />
| 30 August<br />
|<br />
|-<br />
| byorgey<br />
| Brent Yorgey<br />
| University of Pennsylvania<br />
| +12025318646<br />
| 29 August (probably)<br />
| >= 30 August<br />
| Heriot-Watt University<br />
|-<br />
| JaffaCake<br />
| Simon Marlow<br />
| MSR<br />
|<br />
| 29 August (afternoon)<br />
| >= 30 August<br />
|<br />
|-<br />
| Heffalump<br />
| Ganesh Sittampalam<br />
| Credit Suisse<br />
| +447968253467<br />
| 29 August<br />
| 6 September<br />
| Ramada Mount Royal<br />
|-<br />
| kowey<br />
| Eric Kow<br />
| University of Brighton<br />
| +447518728483<br />
| 29 August<br />
| 30 August<br />
| [http://www.edinburghfirst.com/accommodation/selfcateredaccommodation.asp University of Edinburgh - Baird House]<br />
|-<br />
| benl23<br />
| Ben Lippmeier<br />
| Australian National University<br />
| +61421381880<br />
| 29 August (afternoon)<br />
| 6 September<br />
| Heriot-Watt University<br />
|-<br />
| Igloo<br />
| Ian Lynagh<br />
| Well-Typed LLP<br />
| <br />
| Days before the Hackathon<br />
| Days after the Hackathon<br />
| Northumberland Hotel<br />
|-<br />
| ky3<br />
| Kim-Ee Yeoh<br />
| Atamo Technologies<br />
|<br />
| 29 August<br />
| 6 September<br />
|<br />
|-<br />
|<br />
| Sorin Suciu<br />
| JP Morgan<br />
|<br />
| 29 August<br />
| 30 September<br />
|<br />
|-<br />
| kolmodin<br />
| Lennart Kolmodin<br />
| VGR IT<br />
| +46736223606<br />
| 29 August<br />
| 6 September<br />
|<br />
|}<br />
<br />
= Additional Comments =<br />
<br />
Please use this section to leave comments for other attendees, e.g. for organizing accommodation.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Gentoo&diff=29432Gentoo2009-08-05T10:45:38Z<p>LennartKolmodin: Update notes about haskell-updater</p>
<hr />
<div>==Packages==<br />
[http://gentoo.org/ Gentoo Linux] has fairly good support for Haskell.<br />
<br />
There are packages for [[GHC]] and more than 60 other Haskell libraries and tools. There are also packages for other Haskell implementations like [[Hugs|Hugs98]] and [[Helium]].<br />
<br />
You can check the currently available versions of packages:<br />
<br />
* [http://packages.gentoo.org/category/dev-haskell libraries and tools]<br />
* [http://packages.gentoo.org/package/dev-lang/ghc ghc]<br />
* [http://packages.gentoo.org/package/dev-lang/hugs98 hugs98]<br />
* [http://packages.gentoo.org/package/dev-util/darcs darcs]<br />
* [http://packages.gentoo.org/package/x11-wm/xmonad xmonad]<br />
<br />
There is support for most packages on several architectures: ''x86'', ''amd64'', ''sparc'' and ''ppc''.<br />
There is support for some packages on ''ppc64'', ''alpha'', ''ia64'' and ''hppa''.<br />
<br />
==Gentoo Haskell Overlay==<br />
If you want the most up to date (but also most untested) packages you can use the Gentoo Haskell Overlay. "Overlays" are package trees for Portage. They contain additional ebuilds for Gentoo. They are maintained by Gentoo developers, but are distributed separately from the main Portage tree. Haskell has [http://code.haskell.org/gentoo/gentoo-haskell/ its own] dedicated overlay containing lots of haskell projects. See the [http://www.gentoo.org/proj/en/overlays/userguide.xml Gentoo Overlays: Users' Guide] for how to use overlays. However, don't forget that like with all overlays, you use the ebuilds there at your own risk. '''Do not report errors in overlay ebuilds to the Gentoo Bugzilla!'''<br />
<br />
==Support and bugs==<br />
* Bugs found in ebuilds within the official tree should be reported in the [http://bugs.gentoo.org Gentoo bugzilla]. Bugs found in the overlay should be reported in the IRC channel.<br />
* There is a #gentoo-haskell [[IRC channel]] on freenode.net for people interested in developing and testing haskell-related ebuilds.<br />
<br />
Filing bugs can also be used to ask for new packages or new versions of existing packages. We would like to encourage users to suggest any packages they feel are useful but are currently not included in portage. Though note that we generally only package released versions of software where there are tarballs available and where there is an expectation that the software will be maintained. We also greatly prefer packages that are distributed via [http://hackage.haskell.org/ Hackage] as it allows us to use automated tools.<br />
<br />
==haskell-updater==<br />
<br />
Work is currently progressing on ''haskell-updater'', the replacement for ghc-updater currently installed with dev-lang/ghc. There are four main advantages:<br />
<br />
* Now supports pkgcore and paludis, not just portage. This can easily be extended if anyone decides to create Yet Another Gentoo Package Manager.<br />
* Will also rebuild Haskell libraries that have had their dependencies changed (ala revdep-rebuild/reconcilio/etc.). That is, it will rebuild packages corresponding to the libraries listed by "ghc-pkg check".<br />
* It will be shipped separately to GHC, which means we can update it (ghc-updater has been frozen due to not wanting to cause problems with versions already installed, etc.).<br />
* It's written in our favourite language (Haskell, of course) rather than a weird conglomeration of bash and Python. This means it's faster (presumably), more flexible, and we're more likely to maintain it since it's in a language we prefer and are more used to.<br />
<br />
The darcs repository is available at [http://code.haskell.org/gentoo/haskell-updater/ here]. There are ebuilds available both in portage and the [[#Gentoo Haskell Overlay]]. For more information, feel free to visit us at #gentoo-haskell [[IRC channel]].<br />
<br />
==Haskell Platform==<br />
<br />
The [http://hackage.haskell.org/platform/ Haskell Platform] is a blessed library and tool suite for Haskell distilled from [http://hackage.haskell.org/packages/hackage.html Hackage]. Naturally Gentoo supports it. Find out how to install it on your Gentoo box at [[Gentoo/HaskellPlatform]].<br />
<br />
[[Category:OS]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Gentoo/HaskellPlatform&diff=29431Gentoo/HaskellPlatform2009-08-05T09:30:29Z<p>LennartKolmodin: Add a section about feedback</p>
<hr />
<div>Gentoo supports the Haskell Platform!<br />
<br />
==Unmasking GHC 6.10.4 and the Haskell Platform==<br />
<br />
Currently (2009-08-02) GHC 6.10.4 and a few libraries are hard masked, meaning you will have to p.unmask yourself before installing. This is because we're still updating the portage packages to get full GHC 6.10.4 support.<br />
<br />
<code><br />
echo dev-lang/ghc >> /etc/portage/package.unmask<br />
echo dev-haskell/parallel >> /etc/portage/package.unmask<br />
echo dev-haskell/haddock >> /etc/portage/package.unmask<br />
</code><br />
<br />
As the haskell-platform depends on this recent GHC version, you'll need to unmask it too;<br />
<br />
<code><br />
echo dev-haskell/haskell-platform >> /etc/portage/package.unmask<br />
</code><br />
<br />
Don't forget that these packages are also ~keyworded.<br />
<br />
==Install==<br />
<br />
Now, to install, run:<br />
<br />
<code><br />
emerge haskell-platform<br />
</code><br />
<br />
This will pull the GHC compiler, and all the libraries included in HP. If you want haddock documentation, set your <code>USE="doc"</code>. If you also want profiling libraries, set <code>USE="profile"</code>.<br />
<br />
==Feedback==<br />
<br />
Got any feedback for the packages above? Let us know!<br />
<br />
You'll find us in <code>#gentoo-haskell @ freenode</code>, or send your comments to [mailto:haskell@gentoo.org haskell@gentoo.org].</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Gentoo/HaskellPlatform&diff=29403Gentoo/HaskellPlatform2009-08-02T18:58:16Z<p>LennartKolmodin: Write about use flags</p>
<hr />
<div>Gentoo supports the Haskell Platform!<br />
<br />
==Unmasking GHC 6.10.4 and the Haskell Platform==<br />
<br />
Currently (2009-08-02) GHC 6.10.4 and a few libraries are hard masked, meaning you will have to p.unmask yourself before installing. This is because we're still updating the portage packages to get full GHC 6.10.4 support.<br />
<br />
<code><br />
echo dev-lang/ghc >> /etc/portage/package.unmask<br />
echo dev-haskell/parallel >> /etc/portage/package.unmask<br />
echo dev-haskell/haddock >> /etc/portage/package.unmask<br />
</code><br />
<br />
As the haskell-platform depends on this recent GHC version, you'll need to unmask it too;<br />
<br />
<code><br />
echo dev-haskell/haskell-platform >> /etc/portage/package.unmask<br />
</code><br />
<br />
Don't forget that these packages are also ~keyworded.<br />
<br />
==Install==<br />
<br />
Now, to install, run:<br />
<br />
<code><br />
emerge haskell-platform<br />
</code><br />
<br />
This will pull the GHC compiler, and all the libraries included in HP. If you want haddock documentation, set your <code>USE="doc"</code>. If you also want profiling libraries, set <code>USE="profile"</code>.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Gentoo&diff=29402Gentoo2009-08-02T18:55:30Z<p>LennartKolmodin: A few notes about the haskell platform, and a link</p>
<hr />
<div>==Packages==<br />
[http://gentoo.org/ Gentoo Linux] has fairly good support for Haskell.<br />
<br />
There are packages for [[GHC]] and more than 60 other Haskell libraries and tools. There are also packages for other Haskell implementations like [[Hugs|Hugs98]] and [[Helium]].<br />
<br />
You can check the currently available versions of packages:<br />
<br />
* [http://packages.gentoo.org/category/dev-haskell libraries and tools]<br />
* [http://packages.gentoo.org/package/dev-lang/ghc ghc]<br />
* [http://packages.gentoo.org/package/dev-lang/hugs98 hugs98]<br />
* [http://packages.gentoo.org/package/dev-util/darcs darcs]<br />
* [http://packages.gentoo.org/package/x11-wm/xmonad xmonad]<br />
<br />
There is support for most packages on several architectures: ''x86'', ''amd64'', ''sparc'' and ''ppc''.<br />
There is support for some packages on ''ppc64'', ''alpha'', ''ia64'' and ''hppa''.<br />
<br />
==Gentoo Haskell Overlay==<br />
If you want the most up to date (but also most untested) packages you can use the Gentoo Haskell Overlay. "Overlays" are package trees for Portage. They contain additional ebuilds for Gentoo. They are maintained by Gentoo developers, but are distributed separately from the main Portage tree. Haskell has [http://code.haskell.org/gentoo/gentoo-haskell/ its own] dedicated overlay containing lots of haskell projects. See the [http://www.gentoo.org/proj/en/overlays/userguide.xml Gentoo Overlays: Users' Guide] for how to use overlays. However, don't forget that like with all overlays, you use the ebuilds there at your own risk. '''Do not report errors in overlay ebuilds to the Gentoo Bugzilla!'''<br />
<br />
==Support and bugs==<br />
* Bugs found in ebuilds within the official tree should be reported in the [http://bugs.gentoo.org Gentoo bugzilla]. Bugs found in the overlay should be reported in the IRC channel.<br />
* There is a #gentoo-haskell [[IRC channel]] on freenode.net for people interested in developing and testing haskell-related ebuilds.<br />
<br />
Filing bugs can also be used to ask for new packages or new versions of existing packages. We would like to encourage users to suggest any packages they feel are useful but are currently not included in portage. Though note that we generally only package released versions of software where there are tarballs available and where there is an expectation that the software will be maintained. We also greatly prefer packages that are distributed via [http://hackage.haskell.org/ Hackage] as it allows us to use automated tools.<br />
<br />
==haskell-updater==<br />
<br />
Work is currently progressing on ''haskell-updater'', the replacement for ghc-updater currently installed with dev-lang/ghc. There are four main advantages:<br />
<br />
* Now supports pkgcore and paludis, not just portage. This can easily be extended if anyone decides to create Yet Another Gentoo Package Manager.<br />
* Will also rebuild Haskell libraries that have had their dependencies changed (ala revdep-rebuild/reconcilio/etc.). That is, it will rebuild packages corresponding to the libraries listed by "ghc-pkg check".<br />
* It will be shipped separately to GHC, which means we can update it (ghc-updater has been frozen due to not wanting to cause problems with versions already installed, etc.).<br />
* It's written in our favourite language (Haskell, of course) rather than a weird conglomeration of bash and Python. This means it's faster (presumably), more flexible, and we're more likely to maintain it since it's in a language we prefer and are more used to.<br />
<br />
The darcs repository is available at [http://code.haskell.org/gentoo/haskell-updater/ here]. For more information, ping ivanm on the #gentoo-haskell [[IRC channel]].<br />
<br />
==Haskell Platform==<br />
<br />
The [http://hackage.haskell.org/platform/ Haskell Platform] is a blessed library and tool suite for Haskell distilled from [http://hackage.haskell.org/packages/hackage.html Hackage]. Naturally Gentoo supports it. Find out how to install it on your Gentoo box at [[Gentoo/HaskellPlatform]].<br />
<br />
[[Category:OS]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Haskell_Platform&diff=29401Haskell Platform2009-08-02T18:45:12Z<p>LennartKolmodin: Update version to 2009.2.0.2</p>
<hr />
<div><center><br />
= [http://hackage.haskell.org/platform The Haskell Platform 2009.2.0.2] =<br />
<br />
[[Image:Platform.png]]<br />
</center></div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Gentoo/HaskellPlatform&diff=29400Gentoo/HaskellPlatform2009-08-02T18:44:11Z<p>LennartKolmodin: Initial page</p>
<hr />
<div>Gentoo supports the Haskell Platform!<br />
<br />
==Unmask and Install GHC 6.10.4==<br />
<br />
Currently (2009-08-02) GHC 6.10.4 and a few libraries are hard masked, meaning you will have to p.unmask yourself before installing. This is because we're still updating the portage packages to get full GHC 6.10.4 support.<br />
<br />
<code><br />
echo dev-lang/ghc >> /etc/portage/package.unmask<br />
echo dev-haskell/parallel >> /etc/portage/package.unmask<br />
echo dev-haskell/haddock >> /etc/portage/package.unmask<br />
</code><br />
<br />
As the haskell-platform depends on this recent GHC version, you'll need to unmask it too;<br />
<br />
<code><br />
echo dev-haskell/haskell-platform >> /etc/portage/package.unmask<br />
</code><br />
<br />
Don't forget that these packages are also ~keyworded.<br />
<br />
==Haskell Platform==<br />
<br />
Now, to install, run:<br />
<br />
<code><br />
emerge haskell-platform<br />
</code></div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Attendees/Photo&diff=28003Hac5/Attendees/Photo2009-04-24T09:05:34Z<p>LennartKolmodin: Added Daniel Carrera</p>
<hr />
<div>== Hac5: Group photo ==<br />
<br />
A photograph of almost all attendants, taken by Thomas Davie. See also the [[Photo Full Size|full size photo]]. Below is a list of everyone on the photo.<br />
<br />
[[Image:Hac5.jpg]]<br />
<br />
[[Image:Hac5Legend.jpg]]<br />
<br />
{| class="wikitable"<br />
! Number<br />
! Name (nick)<br />
|-<br />
| 1<br />
| Lennart Kolmodin (kolmodin)<br />
|-<br />
| 2<br />
| Benedikt Schmidt (beschmi)<br />
|-<br />
| 3<br />
| Daniel Carrera<br />
|-<br />
| 4<br />
| Erik Hesselink<br />
|-<br />
| 5<br />
| Thomas van Noort<br />
|-<br />
| 6<br />
| -<br />
|-<br />
| 7<br />
| Martijn Schrage<br />
|-<br />
| 8<br />
| Sebastiaan Visser<br />
|-<br />
| 9<br />
| David Waern (waern)<br />
|-<br />
| 10<br />
| Rui Barbosa<br />
|-<br />
| 11<br />
| David Himmelstrup (Lemmih)<br />
|-<br />
| 12<br />
| Alexey Rodriguez<br />
|-<br />
| 13<br />
| Tom Lokhorst<br />
|-<br />
| 14<br />
| Clara Löh (smurfpje)<br />
|-<br />
| 15<br />
| Bas van Dijk<br />
|-<br />
| 16<br />
| Ganesh Sittampalam (Heffalump)<br />
|-<br />
| 17<br />
| Eelco Dolstra<br />
|-<br />
| 18<br />
| Nicolas Pouillard (npouillard, ertai)<br />
|-<br />
| 19<br />
| Arie Middelkoop<br />
|-<br />
| 20<br />
| Atze Dijkstra<br />
|-<br />
| 21<br />
| Reinier Lamers (tux_rocker)<br />
|-<br />
| 22<br />
| Roman Cheplyaka (Feuerbach)<br />
|-<br />
| 23<br />
| Simon Hengel<br />
|-<br />
| 24<br />
| Chris Eidhof<br />
|-<br />
| 25<br />
| -<br />
|-<br />
| 26<br />
| Jeroen Fokker<br />
|-<br />
| 27<br />
| Thomas Davie (beelsebob)<br />
|-<br />
| 28<br />
| Peter Verswyvelen (Chatterbox)<br />
|-<br />
| 29<br />
| Eric Kow (kowey)<br />
|-<br />
| 30<br />
| Don Stewart (dons)<br />
|-<br />
| 31<br />
| Roel van Dijk<br />
|-<br />
| 32<br />
| Martijn van Steenbergen<br />
|-<br />
| 33<br />
| Ben Moseley<br />
|-<br />
| 34<br />
| -<br />
|-<br />
| 35<br />
| Christophe Poucet (vincenz/poucet)<br />
|-<br />
| 36<br />
| Wolfgang Jeltsch (jeltsch)<br />
|-<br />
| 37<br />
| Markus Klinik<br />
|-<br />
| 38<br />
| Ian Lynagh (Igloo)<br />
|-<br />
| 39<br />
| Remi Turk<br />
|-<br />
| 40<br />
| José Pedro Magalhães (dreixel)<br />
|-<br />
| 41<br />
| Duncan Coutts<br />
|-<br />
| 42<br />
| Thomas Schilling<br />
|-<br />
| 43<br />
| Doaitse Swierstra<br />
|-<br />
| 44<br />
| Vincent Zweije<br />
|-<br />
| 45<br />
| Eelco Lempsink<br />
|-<br />
| 46<br />
| Thorkil Naur (thorkilnaur)<br />
|-<br />
| 47<br />
| Andres Löh (kosmikus)<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Attendees/Photo&diff=27843Hac5/Attendees/Photo2009-04-22T21:48:25Z<p>LennartKolmodin: Add waern</p>
<hr />
<div>== Hac5: Group photo ==<br />
<br />
A photograph of almost all attendants, taken by Thomas Davie. See also the [[Photo Full Size|full size photo]]. Below is a list of everyone on the photo.<br />
<br />
[[Image:Hac5.jpg]]<br />
<br />
[[Image:Hac5Legend.jpg]]<br />
<br />
{| class="wikitable"<br />
! Number<br />
! Name (nick)<br />
|-<br />
| 1<br />
| Lennart Kolmodin (kolmodin)<br />
|-<br />
| 2<br />
| Benedikt Schmidt (beschmi)<br />
|-<br />
| 3<br />
| -<br />
|-<br />
| 4<br />
| Erik Hesselink<br />
|-<br />
| 5<br />
| Thomas van Noort<br />
|-<br />
| 6<br />
| -<br />
|-<br />
| 7<br />
| Martijn Schrage<br />
|-<br />
| 8<br />
| Sebastiaan Visser<br />
|-<br />
| 9<br />
| David Waern (waern)<br />
|-<br />
| 10<br />
| Rui Barbosa<br />
|-<br />
| 11<br />
| David Himmelstrup (Lemmih)<br />
|-<br />
| 12<br />
| Alexey Rodriguez<br />
|-<br />
| 13<br />
| Tom Lokhorst<br />
|-<br />
| 14<br />
| Clara Löh (smurfpje)<br />
|-<br />
| 15<br />
| Bas van Dijk<br />
|-<br />
| 16<br />
| Ganesh Sittampalam (Heffalump)<br />
|-<br />
| 17<br />
| Eelco Dolstra<br />
|-<br />
| 18<br />
| Nicolas Pouillard (npouillard, ertai)<br />
|-<br />
| 19<br />
| Arie Middelkoop<br />
|-<br />
| 20<br />
| Atze Dijkstra<br />
|-<br />
| 21<br />
| Reinier Lamers (tux_rocker)<br />
|-<br />
| 22<br />
| Roman Cheplyaka (Feuerbach)<br />
|-<br />
| 23<br />
| Simon Hengel<br />
|-<br />
| 24<br />
| Chris Eidhof<br />
|-<br />
| 25<br />
| -<br />
|-<br />
| 26<br />
| Jeroen Fokker<br />
|-<br />
| 27<br />
| Thomas Davie (beelsebob)<br />
|-<br />
| 28<br />
| Peter Verswyvelen (Chatterbox)<br />
|-<br />
| 29<br />
| Eric Kow (kowey)<br />
|-<br />
| 30<br />
| Don Stewart (dons)<br />
|-<br />
| 31<br />
| -<br />
|-<br />
| 32<br />
| Martijn van Steenbergen<br />
|-<br />
| 33<br />
| Ben Moseley<br />
|-<br />
| 34<br />
| -<br />
|-<br />
| 35<br />
| Christophe Poucet (vincenz/poucet)<br />
|-<br />
| 36<br />
| Wolfgang Jeltsch (jeltsch)<br />
|-<br />
| 37<br />
| Markus Klinik<br />
|-<br />
| 38<br />
| Ian Lynagh (Igloo)<br />
|-<br />
| 39<br />
| Remi Turk<br />
|-<br />
| 40<br />
| José Pedro Magalhães (dreixel)<br />
|-<br />
| 41<br />
| Duncan Coutts<br />
|-<br />
| 42<br />
| Thomas Schilling<br />
|-<br />
| 43<br />
| Doaitse Swierstra<br />
|-<br />
| 44<br />
| Vincent Zweije<br />
|-<br />
| 45<br />
| Eelco Lempsink<br />
|-<br />
| 46<br />
| Thorkil Naur (thorkilnaur)<br />
|-<br />
| 47<br />
| Andres Löh (kosmikus)<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Haskell_Platform&diff=27682Haskell Platform2009-04-19T19:42:14Z<p>LennartKolmodin: Update gentoo status</p>
<hr />
<div>[[Image:Platform.png|300px]]<br />
<br />
__NOTOC__<br />
<br />
The Haskell Platform (HP) is the name of the blessed, core library suite for Haskell. By taking the best libraries from the more than 1200 libraries of [http://hackage.haskell.org Hackage], it provides a comprehensive, stable and mature base for Haskell projects to work from.<br />
<br />
See the [http://trac.haskell.org/haskell-platform/wiki Platform Issue Tracker] for further information.<br />
<br />
== Status ==<br />
<br />
The platform is specified via a Cabal file:<br />
<br />
* '''[http://code.haskell.org/haskell-platform/haskell-platform.cabal The Haskell Platform 2009.0.0] (alpha) '''<br />
<br />
The initial release targets:<br />
<br />
* ghc-6.10.2<br />
* [http://trac.haskell.org/haskell-platform/wiki/Library/VersionMatrix#PlatformPackages Classic Extra Libs]<br />
* haddock, happy and alex<br />
* cabal-install and its dependencies.<br />
<br />
== Distributions ==<br />
<br />
Distros that support the Haskell Platform<br />
<br />
{|<br />
|-<br />
| '''System'''<br />
| '''Status'''<br />
|-<br />
|Arch<br />
| ''To be constructed with cabal2arch''<br />
|-<br />
|Debian<br />
|<br />
|-<br />
|Fedora<br />
|<br />
|-<br />
|Gentoo<br />
| Available in the gentoo haskell overlay, large parts in portage<br />
|-<br />
|Ubuntu<br />
|<br />
|-<br />
| Generic Unix Installer<br />
|<br />
|-<br />
|<br />
|<br />
|-<br />
|Windows Installer<br />
|<br />
|-<br />
| OSX Installer<br />
|<br />
|-<br />
|}<br />
<br />
== Volunteers needed! ==<br />
<br />
We are calling for volunteers for an action group. We need volunteers to<br />
take charge of various platforms and to manage the overall release.<br />
We would like to release a beta at the upcoming [[Hac5|Haskell<br />
Hackathon in Utrecht (April 17-19)]]. However this will '''only''' happen if people volunteer to help build distributions for different platforms.<br />
<br />
In particular we need:<br />
* Release manager / coordinator<br />
* Website with downloads and release notes<br />
* Someone in charge of each platform:<br />
** Windows installer<br />
** OSX installer<br />
** Generic Unix source tarball<br />
** Distribution packages: debian, fedora, gentoo, arch, BSD* etc<br />
<br />
The person in charge of each platform is responsible for building a appropriate native packages / installer and coordinating the effort to test that the stuff installs and works ok.<br />
<br />
If no one volunteers, we simply won't have an Haskell Platform release for that platform.<br />
<br />
Please join the mailing list and volunteer!<br />
<br />
== Resources ==<br />
<br />
* [http://trac.haskell.org/haskell-platform/ Issue tracker and dev wiki]<br />
* [http://code.haskell.org/haskell-platform Darcs repository]: contains the meta-package and scripts for the generic unix tarball<br />
* [[/FAQ]]<br />
* [http://projects.haskell.org/cgi-bin/mailman/listinfo/haskell-platform Mailing list]<br />
* IRC channel: #ghc @ freenode.org<br />
* [http://www.galois.com/blog/2009/03/23/one-million-haskell-downloads/ Download statistics for Haskell Packages]<br />
<br />
== Documentation ==<br />
<br />
* [http://cgi.cse.unsw.edu.au/~dons/blog/2008/07/29#batteries The Haskell Platform Proposal] for the 2008 Haskell Symposium<br />
* [http://blog.well-typed.com/2008/11/haskell-platform-talk-at-the-london-haskell-users-group/ Slides from the Haskell Platform talk]<br />
* [http://blog.well-typed.com/2008/09/hackage-hacking-and-demo/ Haskell Platform discussion]<br />
* Bryan O'Sullivan's [http://www.serpentine.com/blog/2008/09/26/some-notes-on-the-future-of-haskell-and-fp/ writeup] of the future of Haskell discussion<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 />
* [http://haskell.org/~duncan/ghc/%23ghc-2008-07-16.log More occurred during the #ghc meeting]<br />
<br />
===Quality Control===<br />
<br />
Inclusion or exclusion in the platform will be driven by metrics, objective measurements we can extract from code. Determining appropriate metrics is a milestone.<br />
<br />
* cabal-installable libraries with haddocks.<br />
* packages should follow the [[Package versioning policy]]<br />
* The set of HP packages + core libs must be closed. In other words, all haskell dependencies must be from within the HP packages or core libs. Dependencies on C libs can be external.<br />
* All packages in a particular HP version must have a consistent install plan.<br />
<br />
That means only one version of each package and all dependencies on packages must be satisfied by the version in the HP package set.<br />
<br />
There is code in cabal-install to check the last two requirements.<br />
<br />
Other possible ideas for quality standards we might want to require:<br />
<br />
* Uses base library types, to force API standardisation<br />
* exposed module names must follow the hierarchical module name convention, meaning they must be in an appropriate place in the module namespace. In particular, no clash of module names should occur within the HP.<br />
<br />
=== Other heuristics ===<br />
<br />
Packages set for inclusion should:<br />
<br />
* Have a maintainer<br />
* Have a bug tracker <br />
* Use the correct versioning<br />
* Build with cabal<br />
* Work on all arches.<br />
<br />
Further goals:<br />
<br />
* -Wall clean<br />
* 100% coverage<br />
* Have real world use.<br />
* Answer a notable set of build dependencies.<br />
* Have a declared correctness test suite.<br />
* Have a declared performance test suite.<br />
* BSD licensed<br />
<br />
== Distribution format ==<br />
<br />
* Source distribution<br />
* .tar.gz bundle compatible with extra-libs<br />
* Windows Installed<br />
* Native distro packages<br />
<br />
The HP will be the first '''meta-package''' on hackage, that depends on the platform library set. With this,<br />
<br />
cabal install haskell-platform<br />
<br />
will be possible.<br />
<br />
== Version policy ==<br />
<br />
yyyy.major.minor,<br />
<br />
* odd major numbers indicate unstable branches<br />
* minor numbers indicate bug fixes only, no API changes.<br />
<br />
Examples:<br />
<br />
* 2008.0.0 -- first biannual major stable release<br />
* 2008.0.1 -- minor release, bug fix only<br />
* 2008.1 -- unstable branch leading to next major release<br />
* 2008.2.0 -- second annual major release, API changes<br />
* 2008.2.1 -- bug fixes<br />
* 2008.3 -- unstable branch of 2008<br />
* 2009.0.0 -- first release in 2009.<br />
<br />
Additionally, if a library is accepted into the platform, it is suggested its version number be lifted to 1.0, if not already at 1.0.<br />
<br />
== Licenses ==<br />
<br />
The initial release is expected to include only BSD3 licensed software.<br />
<br />
== Programs ==<br />
<br />
The platform includes programs, such as haddock or cabal-install.<br />
These aren't nicely tracked from the cabal meta package yet.<br />
<br />
== Build system ==<br />
<br />
Two ways to build the bundle:<br />
<br />
* generate a sh script from the .cabal file<br />
<br />
Or, build cabal-install, have the components of the platform<br />
as a mini, local hackage archive, and then ask cabal install to satisfy<br />
and install the dependencies from the platform meta-cabal file.<br />
<br />
== Related projects ==<br />
<br />
* [http://docs.python.org/lib/lib.html Python libraries]<br />
* [http://live.gnome.org/ReleasePlanning Gnome's release process]<br />
* [http://live.gnome.org/ReleasePlanning/ModuleProposing How to propose modules for GNOME]<br />
* [http://forge.ocamlcore.org/projects/batteries/ OCaml Batteries]<br />
<br />
== Developers ==<br />
<br />
Haskell Platform core team:<br />
<br />
* Duncan Coutts (Well Typed)<br />
* Don Stewart (Galois)<br />
<br />
[[Category:Community]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Projects&diff=27681Hac5/Projects2009-04-19T19:31:03Z<p>LennartKolmodin: Write about gentoo work</p>
<hr />
<div>== Generic information ==<br />
<br />
You can apply for an account and a project using<br />
[http://community.haskell.org/admin/ the community server].<br />
<br />
Once you have an account and/or a project, you upload a Darcs repository as follows. First, initialize your repository on the server:<br />
<br />
$ ssh community.haskell.org<br />
you@haskell:~$ cd /srv/code/yourproject<br />
you@haskell:/srv/code/yourproject$ darcs init<br />
<br />
Then, log out and push your repository:<br />
<br />
$ darcs push community.haskell.org:/srv/code/yourproject<br />
<br />
== Demonstrations ==<br />
<br />
The following demos where held:<br />
<br />
* Jutaro, Leksah: the Haskell IDE<br />
* Don Stewart, vacuum + adaptive data structures<br />
* Tupil.com / chr1s: Real World Web Apps in Haskell<br />
* Thorkil Naur, interactive, time-sliced HPC code coverage<br />
* David Himmelstrup, the LHC Haskell Compiler.<br />
<br />
== Projects ==<br />
<br />
If you have a project that you want to work on at the Hackathon, please describe it here.<br />
<br />
Since Hackathons are great for teamwork, consider joining one of the projects mentioned below. If you're interested in one of these projects, add your name to the list of hackers under that project.<br />
<!-- Copy this template<br />
=== Project name ===<br />
<br />
==== Description ====<br />
<br />
I am a project. Love me.<br />
<br />
===== Hackers =====<br />
<br />
* Hacker 1<br />
* Hacker 2<br />
--><br />
<br />
=== Haskell Platform 1.0 ===<br />
<br />
Finish the construction and roll out of the new [http://www.haskell.org/pipermail/haskell/2009-March/021172.html Haskell Platform]<br />
<br />
==== Hackers ====<br />
<br />
* dcoutts<br />
* dons<br />
* Chris Eidhof (chr1s)<br />
* kolmodin<br />
<br />
Platform specified, generic unix tarball installer.<br />
<br />
==== Gentoo Linux ====<br />
<br />
Package the haskell platform and put into portage.<br />
<br />
Progress: All libraries and applications are in portage. GHC-6.10.2, haddock-2.4.2 and parallel-1.1.0.1 are still masked for testing, other packages are usable with older ghc versions.<br />
<br />
* kolmodin<br />
<br />
=== Darcs Sprint #2 ===<br />
<br />
==== Description ====<br />
<br />
The [http://wiki.darcs.net/index.html/Sprints/2009-04 second Darcs Sprint]. Help improve our beloved [http://en.wikipedia.org/wiki/Distributed_revision_control DVCS]! Add your nick to the list.<br />
<br />
==== Hackers ====<br />
<br />
* Reinier Lamers (tux_rocker)<br />
* Eric Kow (kowey)<br />
* Ben Moseley (benmos)<br />
* Ganesh Sittampalam (Heffalump)<br />
* Ian Lynagh (igloo)<br />
* Arjan Boeijink (arjanb)<br />
* Benedikt Schmidt (beschmi)<br />
* Petr Ročkai (mornfall)<br />
* Thorkil Naur (thorkilnaur)<br />
<br />
=== Grapefruit ===<br />
<br />
==== Description ====<br />
<br />
[[Grapefruit]] is a library for [[Functional Reactive Programming]] (FRP) with a focus on user interfaces. FRP makes it possible to implement reactive and interactive systems in a declarative style. With Grapefruit, user interfaces are described as networks of communicating widgets and windows. Communication is done via different kinds of signals which describe temporal behavior.<br />
<br />
==== Possible subprojects ====<br />
<br />
* graphics support<br />
** Jeff Heard expressed interest in adapting [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Hieroglyph Hieroglyph] to work with Grapefruit.<br />
** The classic version of Grapefruit contains quite a bit of OpenGL-based 3D animation stuff which could be ported to the current Grapefruit version.<br />
** We should also take a look at [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rsagl RSAGL].<br />
* improvements of the UI part and the GTK+-based UI backend<br />
* Qt-based UI backend<br />
** [[HQK]] should be used for this.<br />
* addition or integration of some kind of physics engine<br />
** There is, for example, [[Hpysics]] from Roman Cheplyaka (Feuerbach)<br />
<br />
==== Licensing ====<br />
<br />
Grapefruit is BSD3-licensed, so all contributions to Grapefruit should be BSD3-licensed, too. If you don’t like this, please discuss this on the [http://projects.haskell.org/cgi-bin/mailman/listinfo/grapefruit Grapefruit mailing list] or contact [[User:Wolfgang Jeltsch|Wolfgang Jeltsch]].<br />
<br />
==== Hackers ====<br />
<br />
* Wolfgang Jeltsch (jeltsch)<br />
* Fraser Wilson<br />
* Roman Cheplyaka (Feuerbach)<br />
* Peter Verswyvelen<br />
* Thomas Davie<br />
<br />
There is a [http://www.doodle.com/hfcymxct953cpw7z doodle] for planning who is doing what.<br />
<br />
=== Leksah ===<br />
<br />
==== Description ====<br />
<br />
[http://leksah.org leksah] is an attempt to develop a Haskell IDE in Haskell. Help adding cool features to this Wannabee IDE, like:<br />
* Generate export list<br />
* Code Formatter<br />
* Infer types<br />
* ... <br />
<br />
==== Hackers ====<br />
<br />
* Jürgen Nicklisch (jutaro)<br />
<br />
<br />
=== Scion ===<br />
<br />
==== Description ====<br />
<br />
Scion is a library that aims to provide IDE-like functionality on top of the GHC API. It aims to be front-end agnostic, thus serve as a common middle-layer for various Haskell programming frontends like Emacs, Vim, Yi, Eclipse, etc.<br />
<br />
It currently only provides rudimentary functionality, such as loading a project and single-threaded background-typechecking. Currently, Scion's only frontend is Emacs, but a Vim frontend is in the underway. Possible Hackathon projects could be:<br />
<br />
* Extend Scion's capabilities. For example: cross-refs, jump to source, more type information, show haddock comments<br />
<br />
* Add another Scion frontend. E.g., hook up Yi or Eclipse with scion <br />
<br />
==== Hackers ====<br />
<br />
* Thomas Schilling (nominolo)<br />
* David Waern (waern)<br />
<br />
=== Type class aliases ===<br />
<br />
==== Description ====<br />
<br />
Type class aliases is a much wanted extension to Haskell proposed long ago by John Meacham ([http://repetae.net/recent/out/classalias.html John's website], [http://www.haskell.org/pipermail/haskell/2005-October/thread.html#16590 mailing list]) that has never been implemented yet. It is time this extension sees the light of day!<br />
<br />
GHC will be the target compiler. Perhaps GHC plugins ([http://hackage.haskell.org/trac/ghc/wiki/Plugins GHC wiki], [http://www.haskell.org/sitewiki/images/f/f0/TMR-Issue12.pdf The Monad Reader 12]) are of help here?<br />
<br />
Please have a look at the [[Context alias|context alias wiki page]] and extend it if you can.<br />
<br />
==== Ideas ====<br />
<br />
===== from Martijn van Steenbergen =====<br />
<br />
As a starting point we'll focus on supporting the following syntax:<br />
<br />
class alias FooBar a = (Foo a, Bar a)<br />
<br />
x :: FooBar a => a<br />
x = ...<br />
<br />
===== from Wolfgang Jeltsch =====<br />
<br />
A “class alias” actually doesn’t stand for a class but for a context (or a part of a context). So it might be better to choose a slightly different syntax:<br />
<br />
context Foobar a = (Foo a, Bar a)<br />
<br />
John Meacham proposes the following syntax for class aliases (context aliases) with superclass constraints:<br />
<br />
class alias Num a = Eq a => (Additive a, Multiplicative a)<br />
<br />
This is not consistent with the superclass syntax of class declarations. I think, we should use this syntax:<br />
<br />
class alias Eq a => Num a = (Additive a, Multiplicative a)<br />
<br />
Or better:<br />
<br />
context Eq a => Num a = (Additive a, Multiplicative a)<br />
<br />
==== Hackers ====<br />
<br />
* [[User:MartijnVanSteenbergen|Martijn van Steenbergen]]<br />
* [[User:sjoerd_visscher|Sjoerd Visscher]]<br />
* [[User:Basvandijk|Bas van Dijk]]<br />
* [[User:Roelvandijk|Roel van Dijk]]<br />
* Jeroen Leeuwestein<br />
* Remi Turk<br />
<br />
=== Goals in GHC(i) ===<br />
<br />
==== Description ====<br />
<br />
We will attempt to extend GHC(i) to give the type (and possibly context) of all 'undefined's in your code, similar to goals in Agda.<br />
<br />
==== Hackers ====<br />
<br />
* Sebastiaan Visser<br />
* Tom Lokhorst<br />
* Erik Hesselink<br />
* Rui Barbosa<br />
<br />
=== Containers: beyond Data.Map ===<br />
<br />
Scalable, adaptive persistent container types (Data.Map, Data.IntMap),<br />
<br />
* Don Stewart<br />
* Christophe Poucet<br />
* Nicolas Pouillard<br />
<br />
Summary of approach here: http://cpoucet.wordpress.com/2009/04/18/flattening-datamap/<br />
<br />
=== xmonad ===<br />
<br />
Some new extensions and developers.<br />
<br />
* Don Stewart<br />
* Nicolas Pouillard.<br />
<br />
=== Building a FastCGI interface for Happstack ===<br />
<br />
We've built a way to run Happstack applications on FastCGI, version 0.1.1 is now on hackage: [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/happstack-fastcgi happstack-fastcgi]<br />
<br />
Accompanying blogpost: http://blog.tupil.com/running-happstack-applications-with-fastcgi/<br />
<br />
* Eelco Lempsink<br />
* Chris Eidhof<br />
<br />
=== Yi ===<br />
<br />
Speed improvements and perhaps Scion integration.<br />
<br />
* David Waern<br />
Scion integration: Figured out a design for where store and call<br />
callbacks for initializing and closing Scion. Next step is to figure out<br />
how to avoid circular module dependencies.<br />
* David Himmelstrup (Lemmih)<br />
<br />
=== Complexity ===<br />
<br />
I released version 0.1.1 of [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/complexity complexity], a small package to determine the algorithmic complexity of a function.<br />
<br />
* Roel van Dijk<br />
<br />
=== Numerals ===<br />
<br />
We released version 0.1 of [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/numerals numerals], a package which does various things with numerals for a number of natural languages and numerical systems.<br />
<br />
For instance:<br />
<haskell><br />
> (cardinal enShort Masculine 42) :: Maybe String<br />
Just "forty-two"<br />
</haskell><br />
<br />
* Bas van Dijk<br />
* Roel van Dijk<br />
<br />
== Experiences ==<br />
<br />
Please list projects with which you are familiar. This way, people know whom to contact for more information or guidance on a particular project.<br />
<br />
{| class="wikitable"<br />
! Name<br />
! Projects<br />
|-<br />
| leather<br />
| [http://www.cs.uu.nl/wiki/GenericProgramming/EMGM EMGM], [http://www.cs.uu.nl/wiki/GenericProgramming/Multirec multirec]<br />
|-<br />
| jeltsch<br />
| [[Grapefruit]], [[HQK]]<br />
|-<br />
| jutaro<br />
| [http://www.leksah.org leksah]<br />
|-<br />
| sebas<br />
| [http://code.google.com/p/salvia-orchid/ salvia], [http://code.google.com/p/salvia-orchid/ orchid], filestore<br />
|-<br />
| waern<br />
| GHC (front-end), Haddock<br />
|-<br />
| Feuerbach<br />
| [http://xmonad.org xmonad], [[Hpysics]]<br />
|-<br />
| npouillard (ertai)<br />
| yi, xmonad, darcs<br />
|-<br />
| chr1s<br />
| formlets, sphinx, emgm, HAppS, EHC, web-related stuff<br />
|-<br />
| Lemmih<br />
| HAppS, LHC<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Dinner&diff=27664Hac5/Dinner2009-04-19T15:40:30Z<p>LennartKolmodin: Add myself</p>
<hr />
<div>== Dinner ==<br />
<br />
For sunday night, we will order asian food.<br />
<br />
Order before 18:00!<br />
<br />
== Options ==<br />
<br />
See http://tinyurl.com/hac5dinner<br />
<br />
If you order a one person meal you also have to choose whether you'd have white rice, nasi, bami, vegetarian nasi, vegetarian bami.<br />
<br />
== The List ==<br />
<br />
{| class="wikitable"<br />
! Name <br />
! Choice (number)<br />
! Rice/nasi/bami<br />
|-<br />
| David Himmelstrup<br />
| 703<br />
| Rice<br />
|-<br />
| Erik Hesselink<br />
| 701<br />
| nasi<br />
|-<br />
| Sebastiaan Visser<br />
| 704<br />
| nasi<br />
|-<br />
| Lennart Kolmodin<br />
| 700<br />
| Noodles<br />
|-<br />
| Reinier Lamers<br />
| 57<br />
|-<br />
| Eelco Lempsink<br />
| 58<br />
| 37<br />
|-<br />
| Rui Barbosa<br />
| 701<br />
| nasi<br />
|-<br />
| Eelco Dolstra<br />
| 701<br />
| bami<br />
|-<br />
| Andres Loeh<br />
| 704<br />
| rice<br />
|-<br />
| Sjoerd Visscher<br />
| 707<br />
| bami<br />
|-<br />
| David Waern<br />
| 700<br />
| Noodles<br />
|-<br />
| José Pedro Magalhães<br />
| 707<br />
| Nasi<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Attendees/Photo&diff=27613Hac5/Attendees/Photo2009-04-18T16:17:02Z<p>LennartKolmodin: Add myself</p>
<hr />
<div>'''Hac5: Group photo'''<br />
<br />
[[Photo Full Size]]<br />
<br />
[[Image:Hac5.jpg]]<br />
<br />
[[Image:Hac5Legend.jpg]]<br />
<br />
{| class="wikitable"<br />
! Number<br />
! Name (nick)<br />
|-<br />
| 1<br />
| Lennart Kolmodin (kolmodin)<br />
|-<br />
| 2<br />
| Benedikt Schmidt (beschmi)<br />
|-<br />
| 3<br />
| -<br />
|-<br />
| 4<br />
| -<br />
|-<br />
| 5<br />
| Thomas van Noort<br />
|-<br />
| 6<br />
| -<br />
|-<br />
| 7<br />
| Martijn Schrage<br />
|-<br />
| 8<br />
| -<br />
|-<br />
| 9<br />
| -<br />
|-<br />
| 10<br />
| -<br />
|-<br />
| 11<br />
| David Himmelstrup (Lemmih)<br />
|-<br />
| 12<br />
| Alexey Rodriguez<br />
|-<br />
| 13<br />
| -<br />
|-<br />
| 14<br />
| -<br />
|-<br />
| 15<br />
| -<br />
|-<br />
| 16<br />
| Ganesh Sittampalam (Heffalump)<br />
|-<br />
| 17<br />
| Eelco Dolstra<br />
|-<br />
| 18<br />
| Nicolas Pouillard (npouillard, ertai)<br />
|-<br />
| 19<br />
| Arie Middelkoop<br />
|-<br />
| 20<br />
| Atze Dijkstra<br />
|-<br />
| 21<br />
| -<br />
|-<br />
| 22<br />
| -<br />
|-<br />
| 23<br />
| -<br />
|-<br />
| 24<br />
| -<br />
|-<br />
| 25<br />
| -<br />
|-<br />
| 26<br />
| Jeroen Fokker<br />
|-<br />
| 27<br />
| Thomas Davie (beelsebob)<br />
|-<br />
| 28<br />
| -<br />
|-<br />
| 29<br />
| -<br />
|-<br />
| 30<br />
| -<br />
|-<br />
| 31<br />
| -<br />
|-<br />
| 32<br />
| Martijn van Steenbergen<br />
|-<br />
| 33<br />
| Ben Moseley<br />
|-<br />
| 34<br />
| -<br />
|-<br />
| 35<br />
| Christophe Poucet (vincenz/poucet)<br />
|-<br />
| 36<br />
| -<br />
|-<br />
| 37<br />
| -<br />
|-<br />
| 38<br />
| Ian Lynagh (Igloo)<br />
|-<br />
| 39<br />
| Remi Turk<br />
|-<br />
| 40<br />
| José Pedro Magalhães (dreixel)<br />
|-<br />
| 41<br />
| -<br />
|-<br />
| 42<br />
| -<br />
|-<br />
| 43<br />
| Doaitse Swierstra<br />
|-<br />
| 44<br />
| -<br />
|-<br />
| 45<br />
| Eelco Lempsink<br />
|-<br />
| 46<br />
| Thorkil Naur (thorkilnaur)<br />
|-<br />
| 47<br />
| Andres Löh<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Dinner&diff=27580Hac5/Dinner2009-04-18T12:33:17Z<p>LennartKolmodin: Add myself</p>
<hr />
<div>== Dinner ==<br />
<br />
For saturday night dinner, you have a choice out of 6 tasty options.<br />
<br />
We need to order '''BEFORE 15:00''', so if you want to join us, make sure your name is on this list!<br />
<br />
Dinner is paid for by the sponsors, and drinks as long as funds allow.<br />
<br />
We'll be going to Florin (http://florinutrecht.nl) and are expected at 20:00.<br />
<br />
== Options ==<br />
<br />
# Chicken Satay<br />
# Beef Burger<br />
# Veggie Burger<br />
# Salmon Filet<br />
# Spareribs<br />
# Steak<br />
<br />
== The List ==<br />
<br />
{| class="wikitable"<br />
! Name <br />
! Choice <br />
|-<br />
| Eelco Lempsink <br />
| 3 <br />
|-<br />
|-<br />
| Reinier Lamers<br />
| 3<br />
|-<br />
|-<br />
| Ben Moseley<br />
| 1<br />
|-<br />
|-<br />
| Ganesh Sittampalam<br />
| 6<br />
|-<br />
| Benedikt Schmidt<br />
| 6<br />
|-<br />
| Eric Kow<br />
| 4<br />
|-<br />
| Petr Rockai<br />
| 3<br />
|-<br />
| Daniel Carrera<br />
| 5<br />
|-<br />
| Sigrid Kronenberger<br />
| 1<br />
|-<br />
| Arjan Boeijink<br />
| 1<br />
|-<br />
| Don Stewart<br />
| 3<br />
|-<br />
| Markus Klinik<br />
| 1<br />
|-<br />
| Vincent Zweije<br />
| 5<br />
|-<br />
| Roman Cheplyaka<br />
| 1<br />
|-<br />
| Simon Hengel<br />
| 3<br />
|-<br />
| Ian Lynagh<br />
| 2<br />
|-<br />
| Remi Turk<br />
| 6<br />
|-<br />
| Atze Dijkstra<br />
| 4<br />
|-<br />
| Andres Loeh<br />
| 2<br />
|-<br />
| Clara Loeh<br />
| 6<br />
|-<br />
| Martijn van Steenbergen<br />
| 1<br />
|-<br />
| Wolfgang Jeltsch<br />
| 2<br />
|-<br />
| Thomas Davie<br />
| 6<br />
|-<br />
| Peter Verswyvelen<br />
| 6<br />
|-<br />
| Roel van Dijk<br />
| 6<br />
|-<br />
| Bas van Dijk<br />
| 6<br />
|-<br />
| Erik Hesselink<br />
| 6<br />
|-<br />
| Tom Lokhorst<br />
| 5<br />
|-<br />
| Rui Barbosa<br />
| 4<br />
|-<br />
| Sebastiaan Visser<br />
| 6<br />
|-<br />
| Thomas Schilling<br />
| 1<br />
|-<br />
| José Pedro Magalhães<br />
| 1<br />
|-<br />
| David Himmelstrup<br />
| 4<br />
|-<br />
| Nicolas Pouillard<br />
| 5<br />
|-<br />
| Lennart Kolmodin<br />
| 6<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Attendees&diff=27392Hac5/Attendees2009-04-09T10:38:26Z<p>LennartKolmodin: Update my details</p>
<hr />
<div>This is the attendee list for [[Hac5]]. Please refer to the [[Hac5|main page]] for more information.<br />
<br />
= Attendees =<br />
<br />
Once you've [[Hac5/Register|registered]], please add your name to the following table:<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
|-<br />
| eelco<br />
| Eelco Lempsink<br />
| UU + Tupil<br />
| +31629486398<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| kosmikus<br />
| Andres Löh<br />
| UU<br />
|<br />
| -<br />
| -<br />
| Lives close to Utrecht.<br />
|-<br />
| dreixel<br />
| José Pedro Magalhães<br />
| UU<br />
| +31 650459029<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| Heffalump<br />
| Ganesh Sittampalam<br />
| Credit Suisse<br />
| +447968253467<br />
| 17th morning (overnight ferry arrives Hook of Holland at 0630)<br />
| 19th late afternoon (overnight ferry leaves Hook of Holland at 2200)<br />
| Strowis Hostel<br />
|-<br />
| kowey<br />
| Eric Kow<br />
| University of Brighton<br />
|<br />
| 17th morning (overnight ferry)<br />
| 19th late afternoon (overnight ferry)<br />
| Strowis Hostel<br />
|-<br />
|<br />
| Martijn van Steenbergen<br />
| UU<br />
|<br />
|<br />
|<br />
| Lives close to Utrecht.<br />
|-<br />
| Igloo<br />
| Ian Lynagh<br />
| Well-Typed LLP<br />
|<br />
| 17th morning (overnight ferry)<br />
| 19th late afternoon (overnight ferry)<br />
| Strowis hostel<br />
|-<br />
| thorkilnaur<br />
| Thorkil Naur<br />
| thorkilnaur.com<br />
| +45 24 82 85 98<br />
| April 17 (train 9.58, a bit late, but very convenient)<br />
| April 19 (train 19.29)<br />
| Hotel Oorsprongpark Utrecht<br />
|-<br />
| tux_rocker<br />
| Reinier Lamers<br />
| UU<br />
| <br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| Jutaro<br />
| Jürgen Nicklisch-Franken<br />
| ICS AG<br />
|<br />
| 16th 23:00<br />
| 19th 17:00<br />
| Hotel de Admiraal<br />
|-<br />
| kolmodin<br />
| Lennart Kolmodin<br />
| VGR IT/Chalmers<br />
| +46736223606<br />
| 16th (12:05 Schiphol)<br />
| 20th (20:24 Schiphol)<br />
| Friend's place.<br />
|-<br />
| chr1s<br />
| Chris Eidhof<br />
| UU + Tupil<br />
| +31628887656<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| sebas<br />
| Sebastiaan Visser<br />
| UU<br />
| +31624828951<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| dcoutts<br />
| Duncan Coutts<br />
| Well-Typed LLP<br />
|<br />
| 16th<br />
| 20th<br />
| Don't know yet.<br />
|-<br />
| benmos<br />
| Ben Moseley<br />
| Barcap<br />
| +447788138855<br />
| 17th morning (overnight ferry arrives Hook of Holland at 0630)<br />
| 19th late afternoon (overnight ferry leaves Hook of Holland at 2200)<br />
| Hotel Oorsprongpark Utrecht<br />
|-<br />
| jeltsch<br />
| Wolfgang Jeltsch<br />
| BTU&nbsp;Cottbus<br />
| <br />
| at April&nbsp;17 in the morning (train arrives at 08:28)<br />
| at April&nbsp;19 in the afternoon (train departs at 16:59)<br />
| Hotel Oorsprongpark Utrecht<br />
|-<br />
-<br />
| beschmi<br />
| Benedikt Schmidt<br />
| ETH Zurich<br />
| +41 797417542<br />
| Don't know yet.<br />
| Don't know yet.<br />
| Don't know yet.<br />
|-<br />
| dons<br />
| Don Stewart<br />
| [http://galois.com Galois]<br />
|<br />
| United 0908 Apr 16<br />
| Over to London Apr 20<br />
| Don't know yet.<br />
|-<br />
| blancolioni<br />
| Fraser Wilson<br />
| Anago bv<br />
| +31 6 81462922<br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| Feuerbach<br />
| Roman Cheplyaka<br />
|<br />
| +380 66 228 57 80<br />
| 16th in the evening<br />
| 21th in the morning<br />
| Strowis or hospitality club<br />
|-<br />
| hesselink<br />
| Erik Hesselink<br />
| UU<br />
| +31 650994887<br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| -<br />
| Marnix Klooster<br />
| Infor/private<br />
| -<br />
| 17th in the morning<br />
| 17th in the afternoon, or sometime on the 18th<br />
| Lives close to Utrecht<br />
|-<br />
|arjanb<br />
|Arjan Boeijink<br />
| -<br />
| -<br />
|Either the 17th or 18th in morning<br />
|19th in the evening<br />
|Not decided yet on traveling or finding a place to sleep.<br />
|-<br />
| Chatterbox<br />
| Peter Verswyvelen<br />
| [http://www.anygma.com/ Anygma]<br />
| <br />
| April&nbsp;17 in the afternoon<br />
| April&nbsp;19 in the afternoon<br />
| Apollo Hotel Utrecht City Centre<br />
|-<br />
| Beelsebob<br />
| Thomas Davie<br />
| [http://www.anygma.com/ Anygma]<br />
| <br />
| April&nbsp;17 in the afternoon<br />
| April&nbsp;19 in the afternoon<br />
| Apollo Hotel Utrecht City Centre<br />
|-<br />
| basvandijk<br />
| Bas van Dijk<br />
| Radboud Universiteit Nijmegen<br />
| +31614065248<br />
| 17th, morning, by car<br />
| 19th, evening<br />
| Don't know yet.<br />
|-<br />
|<br />
| Roel van Dijk<br />
| Radboud Universiteit Nijmegen<br />
| +31612856453<br />
| 17th, morning, by car<br />
| 19th, evening<br />
| Don't know yet.<br />
|-<br />
| remi<br />
| Remi Turk<br />
| UvA / UU<br />
| <br />
| -<br />
| -<br />
| Don't know yet<br />
|-<br />
| npouillard (ertai)<br />
| Nicolas Pouillard<br />
| INRIA<br />
| +33680126526<br />
| 17th, morning<br />
| 19th, afternoon<br />
| B&B Utrecht<br />
|-<br />
|nominolo<br />
|Thomas Schilling<br />
|University of Kent<br />
|<br />
|16th, probably<br />
|20th<br />
|friend's place<br />
|-<br />
| waern<br />
| David Waern<br />
| Amadeus<br />
| +33 642508769<br />
| 16th<br />
| 20th<br />
| Hotel Valk De Biltsche Hoek<br />
|-<br />
| mornfall<br />
| Petr Ročkai<br />
| Masaryk University<br />
| <br />
| 17th 9:58 by train (to Utrecht Centraal)<br />
| 19th 19:29 by train<br />
| Friend's place<br />
|-<br />
|<br />
| Jeroen Fokker<br />
| UU<br />
|<br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| sih<br />
| Simon Hengel<br />
| <br />
| +4917661064074<br />
| -<br />
| -<br />
| Don't know yet<br />
|-<br />
| Lemmih<br />
| David Himmelstrup<br />
|<br />
|<br />
| 16th (13:55 Schiphol)<br />
| 20th (21:10 Schiphol)<br />
| Hotel Valk De Biltsche Hoek<br />
|-<br />
|<br />
| Tom Lokhorst<br />
| UU<br />
|<br />
| 16th<br />
| 18th<br />
| Lives close to Utrecht.<br />
|-<br />
| <br />
| Wouter Swierstra<br />
| Chalmers University of Technology<br />
|<br />
| 17th<br />
| and maybe longer<br />
| <br />
|-<br />
| mkl<br />
| Markus Klinik<br />
| <br />
| +4917666101511<br />
| 17th<br />
| 20th<br />
| Don't know yet<br />
|}<br />
<br />
= Additional Comments =<br />
<br />
Please use this section to leave comments for other attendees, e.g. for organizing accommodation.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Attendees&diff=27360Hac5/Attendees2009-04-06T17:32:26Z<p>LennartKolmodin: Added my arrival/departure dates</p>
<hr />
<div>This is the attendee list for [[Hac5]]. Please refer to the [[Hac5|main page]] for more information.<br />
<br />
= Attendees =<br />
<br />
Once you've [[Hac5/Register|registered]], please add your name to the following table:<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
|-<br />
| eelco<br />
| Eelco Lempsink<br />
| UU + Tupil<br />
| +31629486398<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| kosmikus<br />
| Andres Löh<br />
| UU<br />
|<br />
| -<br />
| -<br />
| Lives close to Utrecht.<br />
|-<br />
| dreixel<br />
| José Pedro Magalhães<br />
| UU<br />
| +31 650459029<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| Heffalump<br />
| Ganesh Sittampalam<br />
| Credit Suisse<br />
| +447968253467<br />
| 17th morning (overnight ferry arrives Hook of Holland at 0630)<br />
| 19th late afternoon (overnight ferry leaves Hook of Holland at 2200)<br />
| Strowis Hostel<br />
|-<br />
| kowey<br />
| Eric Kow<br />
| University of Brighton<br />
|<br />
| 17th morning (overnight ferry)<br />
| 19th late afternoon (overnight ferry)<br />
| Strowis Hostel<br />
|-<br />
|<br />
| Martijn van Steenbergen<br />
| UU<br />
|<br />
|<br />
|<br />
| Lives close to Utrecht.<br />
|-<br />
| Igloo<br />
| Ian Lynagh<br />
| Well-Typed LLP<br />
|<br />
| 17th morning (overnight ferry)<br />
| 19th late afternoon (overnight ferry)<br />
| Strowis hostel<br />
|-<br />
| thorkilnaur<br />
| Thorkil Naur<br />
| thorkilnaur.com<br />
| +45 24 82 85 98<br />
| April 17 (train 9.58, a bit late, but very convenient)<br />
| April 19 (train 19.29)<br />
| Hotel Oorsprongpark Utrecht<br />
|-<br />
| tux_rocker<br />
| Reinier Lamers<br />
| UU<br />
| <br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| Jutaro<br />
| Jürgen Nicklisch-Franken<br />
| ICS AG<br />
|<br />
| 16th 23:00<br />
| 19th 17:00<br />
| Hotel de Admiraal<br />
|-<br />
| kolmodin<br />
| Lennart Kolmodin<br />
| <br />
| +46736223606<br />
| 16th<br />
| 20th<br />
| Don't know yet.<br />
|-<br />
| chr1s<br />
| Chris Eidhof<br />
| UU + Tupil<br />
| +31628887656<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| sebas<br />
| Sebastiaan Visser<br />
| UU<br />
| +31624828951<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| dcoutts<br />
| Duncan Coutts<br />
| Well-Typed LLP<br />
|<br />
| 16th<br />
| 20th<br />
| Don't know yet.<br />
|-<br />
| benmos<br />
| Ben Moseley<br />
| Barcap<br />
| +447788138855<br />
| 17th morning (overnight ferry arrives Hook of Holland at 0630)<br />
| 19th late afternoon (overnight ferry leaves Hook of Holland at 2200)<br />
| Hotel Oorsprongpark Utrecht<br />
|-<br />
| jeltsch<br />
| Wolfgang Jeltsch<br />
| BTU&nbsp;Cottbus<br />
| <br />
| at April&nbsp;17 in the morning (train arrives at 08:28)<br />
| at April&nbsp;19 in the afternoon (train departs at 16:59)<br />
| Hotel Oorsprongpark Utrecht<br />
|-<br />
-<br />
| beschmi<br />
| Benedikt Schmidt<br />
| ETH Zurich<br />
| +41 797417542<br />
| Don't know yet.<br />
| Don't know yet.<br />
| Don't know yet.<br />
|-<br />
| dons<br />
| Don Stewart<br />
| [http://galois.com Galois]<br />
|<br />
| United 0908 Apr 16<br />
| Over to London Apr 20<br />
| Don't know yet.<br />
|-<br />
| blancolioni<br />
| Fraser Wilson<br />
| Anago bv<br />
| +31 6 81462922<br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| Feuerbach<br />
| Roman Cheplyaka<br />
|<br />
| +380 66 228 57 80<br />
| 16th in the evening<br />
| 21th in the morning<br />
| Strowis or hospitality club<br />
|-<br />
| hesselink<br />
| Erik Hesselink<br />
| UU<br />
| +31 650994887<br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| -<br />
| Marnix Klooster<br />
| Infor/private<br />
| -<br />
| 17th in the morning<br />
| 17th in the afternoon, or sometime on the 18th<br />
| Lives close to Utrecht<br />
|-<br />
|arjanb<br />
|Arjan Boeijink<br />
| -<br />
| -<br />
|Either the 17th or 18th in morning<br />
|19th in the evening<br />
|Not decided yet on traveling or finding a place to sleep.<br />
|-<br />
| Chatterbox<br />
| Peter Verswyvelen<br />
| [http://www.anygma.com/ Anygma]<br />
| <br />
| April&nbsp;17 in the afternoon<br />
| April&nbsp;19 in the afternoon<br />
| Apollo Hotel Utrecht City Centre<br />
|-<br />
| Beelsebob<br />
| Thomas Davie<br />
| [http://www.anygma.com/ Anygma]<br />
| <br />
| April&nbsp;17 in the afternoon<br />
| April&nbsp;19 in the afternoon<br />
| Apollo Hotel Utrecht City Centre<br />
|-<br />
| basvandijk<br />
| Bas van Dijk<br />
| Radboud Universiteit Nijmegen<br />
| +31614065248<br />
| 17th, morning, by car<br />
| 19th, evening<br />
| Don't know yet.<br />
|-<br />
|<br />
| Roel van Dijk<br />
| Radboud Universiteit Nijmegen<br />
| +31612856453<br />
| 17th, morning, by car<br />
| 19th, evening<br />
| Don't know yet.<br />
|-<br />
| remi<br />
| Remi Turk<br />
| UvA / UU<br />
| <br />
| -<br />
| -<br />
| Don't know yet<br />
|-<br />
| npouillard (ertai)<br />
| Nicolas Pouillard<br />
| INRIA<br />
| +33680126526<br />
| 17th, morning<br />
| 19th, afternoon<br />
| B&B Utrecht<br />
|-<br />
|nominolo<br />
|Thomas Schilling<br />
|University of Kent<br />
|<br />
|16th, probably<br />
|20th<br />
|friend's place<br />
|-<br />
| waern<br />
| David Waern<br />
| Amadeus<br />
| +33 642508769<br />
| 16th<br />
| 20th<br />
| Hotel Valk De Biltsche Hoek<br />
|-<br />
| mornfall<br />
| Petr Ročkai<br />
| Masaryk University<br />
| <br />
| 17th 9:58 by train (to Utrecht Centraal)<br />
| 19th 19:29 by train<br />
| Friend's place<br />
|-<br />
|<br />
| Jeroen Fokker<br />
| UU<br />
|<br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| sih<br />
| Simon Hengel<br />
| <br />
| +4917661064074<br />
| -<br />
| -<br />
| Don't know yet<br />
|-<br />
| Lemmih<br />
| David Himmelstrup<br />
|<br />
|<br />
| 16th (13:55 Schiphol)<br />
| 20th (21:10 Schiphol)<br />
| Hotel Valk De Biltsche Hoek<br />
|-<br />
|<br />
| Tom Lokhorst<br />
| UU<br />
|<br />
| 16th<br />
| 18th<br />
| Lives close to Utrecht.<br />
|-<br />
|}<br />
<br />
= Additional Comments =<br />
<br />
Please use this section to leave comments for other attendees, e.g. for organizing accommodation.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=GNU/Linux&diff=27075GNU/Linux2009-03-18T06:56:44Z<p>LennartKolmodin: Update info about Gentoo</p>
<hr />
<div>Haskell support on various Linux distributions. How to find Haskell applications and tools, contribute new packages, and get help for your distribution.<br />
<br />
* [http://haskell.org/ghc/download_ghc_6_10_1.html#binaries Download GHC for Linux]<br />
<br />
Mostly distributions should provide:<br />
<br />
* GHC<br />
* Core libraries<br />
* Core development tools<br />
* Cabal and cabal-install<br />
<br />
Optionally they provide parts of the emerging [http://haskell.org/haskellwiki/Haskell_Platform Haskell Platform].<br />
<br />
==Arch Haskell==<br />
<br />
http://www.thelin-xportal.com/albums/files/arch.jpg<br />
<br />
[http://wiki.archlinux.org/index.php/Haskell_package_guidelines Main Arch Haskell site]<br />
<br />
{|<br />
| Wiki<br />
| [http://wiki.archlinux.org/index.php/Haskell_package_guidelines Arch Haskell Wiki]<br />
|-<br />
| Blog<br />
| [http://archhaskell.wordpress.com/ Arch Haskell Blog]<br />
|-<br />
| IRC<br />
| #arch-haskell @ freenode.org<br />
|-<br />
| Applications<br />
| [http://haskell.org/haskellwiki/Arch_Linux/Applications Haskell applications provided on Arch Linux]<br />
|-<br />
| Libraries<br />
| [http://aur.archlinux.org/packages.php?O=0&L=0&C=0&K=arch-haskell&SeB=m&SB=n&SO=a&PP=100&do_Search=Go Haskell libraries on Arch Linux]<br />
|-<br />
| Tools<br />
| [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal2arch cabal2arch]<br />
|}<br />
<br />
==Debian GNU/Linux==<br />
<br />
[http://www.debian.org Debian Gnu/Linux] provides a good toolchain for Haskell development<br />
<br />
* Libraries: The most important packages are available in the [http://packages.debian.org/stable/devel/ stable], [http://packages.debian.org/testing/devel/ testing] and [http://packages.debian.org/unstable/devel/ unstable] trees.<br />
* Applications:<br />
* Mailing list: [http://urchin.earth.li/pipermail/debian-haskell/ debian-haskell]<br />
* Wiki:<br />
* IRC channel:<br />
* Making new packages: .deb from .cabal is a [[Creating_Debian_packages_from_Cabal_package|fairly easy process]]. <br />
<br />
==Fedora==<br />
<br />
''About and main page''<br />
<br />
* Libraries:<br />
* Applications:<br />
* Mailing list:<br />
* IRC channel: The #fedora-haskell IRC channel.<br />
<br />
==Gentoo==<br />
[[Gentoo]]<br />
<br />
http://www.gentoo.org/images/icon-gentoo.png<br />
<br />
<br />
{|<br />
| IRC<br />
| #gentoo-haskell @ freenode.org<br />
|-<br />
| Applications<br />
| [http://packages.gentoo.org/category/dev-haskell Haskell applications and libraries provided on Gentoo Linux]<br />
|-<br />
| Tools<br />
| [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hackport hackport]<br />
|}<br />
<br />
<br />
==Slackware Linux==<br />
Slackware does not have official Haskell support.<br />
<br />
An unofficial Slackware repository for Haskell tools, library and<br />
programs [http://gorgias.mine.nu/slack/ is available here]. This repository works with [http://software.jaos.org/#slapt-get slapt-get] and [http://swaret.sourceforge.net/index.php swaret].<br />
<br />
Tools: [http://gorgias.mine.nu/repos/slackBuild/ slackbuild]<br />
<br />
==Ubuntu==<br />
This is pretty much the same as Debian, providing you add the 'universe' and/or 'multiverse' repositories, which import Debian packages and recompile them to match Ubuntu dependencies. The exact versions of packages may be different from Debian, but they tend to be ahead of Debian stable (sometimes by a long way).<br />
<br />
[[Category:OS]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac5/Attendees&diff=26466Hac5/Attendees2009-02-14T19:55:41Z<p>LennartKolmodin: Added myself</p>
<hr />
<div>This is the attendee list for [[Hac5]]. Please refer to the [[Hac5|main page]] for more information.<br />
<br />
= Attendees =<br />
<br />
Once you've [[Hac5/Register|registered]], please add your name to the following table:<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
|-<br />
| eelco<br />
| Eelco Lempsink<br />
| UU + Tupil<br />
| +31629486398<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| kosmikus<br />
| Andres Löh<br />
| UU<br />
|<br />
| -<br />
| -<br />
| Lives close to Utrecht.<br />
|-<br />
| dreixel<br />
| José Pedro Magalhães<br />
| UU<br />
| +31 650459029<br />
| -<br />
| -<br />
| Lives in Utrecht.<br />
|-<br />
| Heffalump<br />
| Ganesh Sittampalam<br />
| Credit Suisse<br />
| +447968253467<br />
| Don't know yet.<br />
| Don't know yet.<br />
| Don't know yet.<br />
|-<br />
| kowey<br />
| Eric Kow<br />
| University of Brighton<br />
|<br />
| Don't know yet.<br />
| Don't know yet.<br />
| Don't know yet.<br />
|-<br />
|<br />
| Martijn van Steenbergen<br />
| UU<br />
|<br />
|<br />
|<br />
| Lives close to Utrecht.<br />
|-<br />
| Igloo<br />
| Ian Lynagh<br />
| Well-Typed LLP<br />
|<br />
| Don't know yet.<br />
| Don't know yet.<br />
| Don't know yet.<br />
|-<br />
| thorkilnaur<br />
| Thorkil Naur<br />
| thorkilnaur.com<br />
| +45 24 82 85 98<br />
| Probably April 16<br />
| Probably April 20<br />
| Don't know<br />
|-<br />
| tux_rocker<br />
| Reinier Lamers<br />
|<br />
| <br />
| -<br />
| -<br />
| Lives in Utrecht<br />
|-<br />
| Jutaro<br />
| Jürgen Nicklisch-Franken<br />
| ICS AG<br />
|<br />
| ?<br />
| ?<br />
| ?<br />
|-<br />
| kolmodin<br />
| Lennart Kolmodin<br />
| <br />
| +46736223606<br />
| Don't know yet.<br />
| Don't know yet.<br />
| Don't know yet.<br />
<br />
|}<br />
<br />
= Additional Comments =<br />
<br />
Please use this section to leave comments for other attendees, e.g. for organizing accommodation.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac4/Attendees&diff=18760Hac4/Attendees2008-01-29T12:26:04Z<p>LennartKolmodin: Added myself</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
== Projects ==<br />
<br />
See [[Hac4/Projects]].<br />
<br />
== Registrants ==<br />
<br />
If you've [[Hac4/Register|registered]], do add your name to the following table:<br />
<br />
{| class="wikitable"<br />
! Name<br />
! Nick<br />
! Affiliiation<br />
! Mobile #<br />
|-<br />
| [http://www.bringert.net/ Björn Bringert]<br />
| bringert<br />
| Chalmers <br />
| +46704779794<br />
|-<br />
| Jean-Philippe Bernardy<br />
| jyp<br />
| Chalmers <br />
| <br />
|-<br />
| [http://mahogny.areta.org/ Johan Henriksson]<br />
| mahogny<br />
| Karolinska Institute/Chalmers<br />
| +46765549028<br />
|-<br />
| Thomas Schilling<br />
| nominolo<br />
| Chalmers<br />
| +46762316289<br />
|-<br />
| Lennart Kolmodin<br />
| kolmodin<br />
| Chalmers<br />
| +46736223606<br />
|}<br />
<br />
== Arriving ==<br />
<br />
<br />
== Accomodation ==<br />
<br />
A number of accommodation options are available. To organize to share,<br />
contact other attendees on irc or via email.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac4&diff=18251Hac42008-01-11T22:54:20Z<p>LennartKolmodin: Set homepage instead of email</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
'''Hac 2008: Haskell Hackathon'''<br />
<br />
Candidate dates: Apr 4-6, 11-13, or 18-20. Please indicate which dates suit you: [[Hac_2008/Dates]]!<br />
<br />
'''Chalmers University of Technology, Göteborg, Sweden'''<br />
<br />
<br />
== Organization ==<br />
<br />
The organisers for the Hackathon are:<br />
<br />
* [mailto:nominolo@googlemail.com Thomas Schilling]<br />
* [http://www.cs.chalmers.se/~bringert/ Björn Bringert]<br />
* [http://www.dtek.chalmers.se/~kolmodin/ Lennart Kolmodin]<br />
* ... more people wanted ...</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2008/Dates&diff=18187Hac 2008/Dates2008-01-08T21:39:06Z<p>LennartKolmodin: </p>
<hr />
<div>What dates would suit you for Hac 2008 in Gothenburg?<br />
<br />
{| border="1" <br />
! Name<br />
! Apr 4-6<br />
! Apr 11-13<br />
! Apr 18-20<br />
! Comments<br />
|- <br />
| Björn Bringert<br />
| OK<br />
| OK<br />
| OK<br />
| Will be there<br />
|-<br />
| Duncan Coutts<br />
| OK<br />
| OK<br />
| Probably OK<br />
| Will probably be there<br />
|-<br />
| Ivan Tarasov<br />
| Probably OK<br />
| OK<br />
| OK<br />
| May need some help (an invitation) to get the visa<br />
|-<br />
| Don Stewart<br />
| OK<br />
| OK<br />
| OK<br />
| Probably can make it.<br />
|-<br />
| David Waern<br />
| OK<br />
| OK<br />
| OK<br />
| Hope to make it.<br />
|-<br />
| Lennart Kolmodin<br />
| OK<br />
| OK<br />
| OK<br />
| All dates have high probability.<br />
|-<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac4&diff=18186Hac42008-01-08T21:33:00Z<p>LennartKolmodin: Added myself</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
'''Hac 2008: Haskell Hackathon'''<br />
<br />
Candidate dates: Apr 4-6, 11-13, or 18-20. Please indicate which dates suit you: [[Hac_2008/Dates]]!<br />
<br />
'''Chalmers University of Technology, Göteborg, Sweden'''<br />
<br />
<br />
== Organization ==<br />
<br />
The organisers for the Hackathon are:<br />
<br />
* [mailto:nominolo@googlemail.com Thomas Schilling]<br />
* [http://www.cs.chalmers.se/~bringert/ Björn Bringert]<br />
* [mailto:kolmodin@dtek.chalmers.se Lennart Kolmodin]<br />
* ... more people wanted ...</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2008/Dates&diff=18185Hac 2008/Dates2008-01-08T21:31:57Z<p>LennartKolmodin: Added myself</p>
<hr />
<div>What dates would suit you for Hac 2008 in Gothenburg?<br />
<br />
{| border="1" <br />
! Name<br />
! Apr 4-6<br />
! Apr 11-13<br />
! Apr 18-20<br />
! Comments<br />
|- <br />
| Björn Bringert<br />
| OK<br />
| OK<br />
| OK<br />
| Will be there<br />
|-<br />
| Duncan Coutts<br />
| OK<br />
| OK<br />
| Probably OK<br />
| Will probably be there<br />
|-<br />
| Ivan Tarasov<br />
| Probably OK<br />
| OK<br />
| OK<br />
| May need some help (an invitation) to get the visa<br />
|-<br />
| Don Stewart<br />
| OK<br />
| OK<br />
| OK<br />
| Probably can make it.<br />
|-<br />
| David Waern<br />
| OK<br />
| OK<br />
| OK<br />
| Hope to make it.<br />
|-<br />
| Lennart Kolmodin<br />
| OK<br />
| OK<br />
| OK<br />
| All dates has high probability.<br />
|-<br />
|}</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007_II&diff=16495Hac 2007 II2007-11-04T11:41:01Z<p>LennartKolmodin: Added my photos</p>
<hr />
<div>[[Image:Freiburg-lambda.png|Hac 07 II|center]]<br />
<br />
[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
'''Hac 07 II: Haskell Hackathon'''<br />
<br />
'''October 5-7, 2007'''<br />
<br />
'''University of Freiburg, Freiburg, Germany'''<br />
<br />
<br />
* [[/Register|Register for the Hackathon]]<br />
<br />
* [[/Attendees|Attendees organising page]]<br />
<br />
* [[/Projects|What we're working on]]<br />
<br />
== Photos and blogs ==<br />
<br />
=== Photos ===<br />
<br />
[[Image:Hackathon.jpg]]<br />
<br />
Hac 07 II - Freiburg, Germany. Group photo of hackers.<br />
<br />
[[Image:Hac07-mask.jpg]]<br />
<br />
1. Clifford Beshers, thetallguy, (formerly Linspire, now SeeReason.org)<br />
2. David Himmelstrup, Lemmih, HAppS Inc.<br />
3. Conal Elliot, conal<br />
4. Don Stewart, dons, Galois<br />
5. Russel O'Connor, roconnor<br />
6. Ben Lippmeier, benl23, ANU<br />
7. Johan Tibell, tibbe, Google<br />
8. Christophe Poucet, vincenz, IMEC<br />
9. Tim Chevalier, Binkley, Portland State<br />
10. Bjorn Bringert, Chalmers<br />
11. Eric Kidd<br />
12. Ivan Tarasov, ivant, Sun<br />
13. Joachim nomeata Breitner<br />
14. Ian Lynagh, Igloo<br />
15. Thorkil Naur (thorkilnaur)<br />
16. Thomas Schilling<br />
17. Pepe Iborra<br />
18. Conrad Barski<br />
19. David Fox (formerly Linspire, now SeeReason.org)<br />
20. Duncan Coutts, dcoutts, Oxford<br />
21. Marcus Uneson<br />
22. Phillip Heidegger, Freiburg<br />
23. Ganesh, Heffalump, Credit Suisse<br />
24. Lennart Kolmodin (kolmodin)<br />
25. Jürgen Nicklisch, Jutaro<br />
26. Alexey Yakushev Yakushev (mrchebas), Utrecht University<br />
<br />
=== Blogs ===<br />
<br />
* [http://stockwits.com/Hackathon.jpg Group Picture]<br />
* [http://lafalafu.com/krc/Images/hacday1/ A few from Tim, day 1]<br />
* [http://flickr.com/photos/nominolo/tags/hac2007ii/ nominolo's pictures], on Flickr<br />
* [http://flickr.com/photos/pepeiborra/tags/hac2007ii/ mnislaih's pictures], on Flickr<br />
* [http://picasaweb.google.com/kolmodin/Freiburg2007 kolmodin's pictures], on picasa web<br />
<br />
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/10/06#hac07-2-day1 Don's blog, day 1]<br />
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/10/07#hac07-2-day3 Don's blog, day 2-3]<br />
* [http://www.joachim-breitner.de/blog/archives/269-Haskell-Hackathon-Hackage-vs.-Debian.html Joachim's blog, day 1]<br />
* [http://www.joachim-breitner.de/blog/archives/270-Haskell-Hackathon-almost-over.html Joachim's blog, day 2/3]<br />
<br />
== About ==<br />
<br />
The 3rd Haskell Hackathon will be held over 3 days, October 5-7 2007,<br />
at the University of Freiburg, in conjunction with the<br />
[http://www.cse.unsw.edu.au/~keller/haskellws/HaskellWorkshop.html Haskell Workshop] and<br />
[http://www.informatik.uni-bonn.de/~ralf/icfp07.html ICFP] 2007.<br />
It is a coding festival, focusing on producing and improving<br />
Haskell libraries, tools and infrastructure.<br />
<br />
To attend please [[/Register|register]], and get ready to hack!<br />
<br />
''Note: that it is not necessary to register for ICFP, or any of the associated conferences, if you only want to go to the Hackathon. The Hackathon itself will be '''free''', but you will have to pay for travel, accommodation and food.''<br />
<br />
== Registration ==<br />
<br />
If you will be attending add your name to the [[/Register|Registration page]].<br />
Numbers may be limited, depending on availablity of space.<br />
<br />
== Where ==<br />
<br />
The Hackathon will take place at the same venue as the IFL workshop, at<br />
[http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&om=1&msid=112565914073914710272.0000011293bc4c0bc450c&ll=47.999169,7.86046&spn=0.041064,0.078621&z=14 the Faculty of Applied Sciences] of the University of Freiburg. '''The room is 02-016 in building 101'''.<br />
<br />
You can reach the hackathon venue from the main train station by taking the "Breisgau S-Bahn" from "Freiburg - Hbf." to "FR Messe/Universitt". [http://proglang.informatik.uni-freiburg.de/IFL2007/timetable.pdf Here is a timetable] (pdf). Please note that most but not all trains stop at the hackathon venue. Also, some trains only run Monday to Friday ("Montag - Freitag") or on Saturday ("Samstag").<br />
<br />
Alternatively, you can walk from the city center to the hackathon (20 - 30 minutes). [http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&om=1&msid=112565914073914710272.0000011293bc4c0bc450c&ll=47.999169,7.86046&spn=0.041064,0.078621&z=14 The map] shows the exact route. <br />
[[Image:logo-klein-07-2.png|frame|]]<br />
<br />
The Hackathon will be integrated with the university [http://sommercampus2007.informatik.uni-freiburg.de/WikiAbstract summer campus]. This will give us all the infrastructure (room, Internet, etc) at minimal hassle. '''Note:''' There won't be any stationary PCs, so you should bring a laptop with you.<br />
<br />
=== Local information ===<br />
<br />
For local information (travel, accommodation etc) see the<br />
[http://proglang.informatik.uni-freiburg.de/ICFP2007/ ICFP local info page].<br />
<br />
[http://proglang.informatik.uni-freiburg.de/IFL2007/travel-information.shtml Travel information page]<br />
<br />
Airport maps:<br />
* [http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&ll=48.705463,9.876709&spn=4.945094,10.063477&z=7&om=1&msid=112565914073914710272.000001129e6f892b7a21e Airports]<br />
<br />
== Dates ==<br />
<br />
Hac 2007 II will take place on Fri 5 Oct to Sun 7 Oct. The following<br />
table shows the workshops and conferences held in Freiburg during the<br />
ICFP period:<br />
<br />
{| class="wikitable"<br />
|-<br />
|Date || Events<br />
|-<br />
|Thu 27 Sep || IFL<br />
|-<br />
|Fri 28 Sep || IFL<br />
|-<br />
|Sat 29 Sep || IFL<br />
|-<br />
|Sun 30 Sep || HW, Scheme<br />
|-<br />
|Mon 1 Oct || ICFP<br />
|-<br />
|Tue 2 Oct || ICFP<br />
|-<br />
|Wed 3 Oct || ICFP<br />
|-<br />
|Thu 4 Oct || CUFP, MM<br />
|-<br />
|Fri 5 Oct || '''Hac 2007 II''', Erlang, ML, PV<br />
|-<br />
|Sat 6 Oct || '''Hac 2007 II'''<br />
|-<br />
|Sun 7 Oct || '''Hac 2007 II'''<br />
|}<br />
<br />
The Hackathon will, ''tentatively'', be held from 10am to 6pm each day,<br />
with dinner after at local venues.<br />
<br />
== Facilities ==<br />
<br />
=== What to bring ===<br />
<br />
* A laptop<br />
* Wireless cards<br />
* Power adaptors if necessary<br />
* Ethernet cable<br />
* Mobile phone<br />
<br />
=== Before you arrive ===<br />
<br />
* Pick out a couple of projects to work on and familiarise yourself with them<br />
* Install an up to date Haskell toolchain (ghc-6.6.1 and if you like a recent snapshot of ghc-6.8.0 also).<br />
<br />
== Projects to work on ==<br />
<br />
Add ideas here for which you think hacking together as a group (rather<br />
than individually) would be beneficial.<br />
<br />
=== Group projects ===<br />
<br />
* Building tests that give 100% code coverage for package base.<br />
* Lots of Cabal hacking still to be done<br />
* Bindings for <your favourite C library><br />
* Haskell library for <your favourite task><br />
* Ensure hackage is ready for ghc 6.8<br />
<br />
=== Other things ===<br />
<br />
* Bit layer on Data.Binary 1.0<br />
* libxml<br />
* bytestring parsec<br />
* combine strictcheck and quickcheck once and for all<br />
* darcs hacking<br />
* aggressive inlining for mtl?<br />
* Data.ByteString.Sequence - a ropes-alike lib based on specialised finger trees<br />
* Data.ByteString.Rope, based on<br />
* [http://www.sgi.com/tech/stl/ropeimpl.html SGIs ropes] or [http://groups.google.com/group/fa.caml/browse_frm/thread/4e70beff0f714229/ new ocaml ropes]<br />
* bit parsing layer for Data.Binary and a network protocol demo?<br />
* dons: HPC coverage for bytestring 1.0<br />
* pretty printer-based ncurses interface<br />
* integrate darcs-piegraph and darcs-graph<br />
* improve the performance of DiffArray using modern techniques [http://www.lri.fr/~filliatr/ftp/ocaml/ds/parray.ml.html OCaml impl]. <br />
** vincenz: Note that even underneath the hood, the ocaml impl is using impurity to implement this (namely the modification of the array in Diff)<br />
* New [http://www.cse.unsw.edu.au/~dons/hs-plugins hs-plugins] on top of ghc-api. [[User:Conal|Conal]]<br />
* Fast general, pure-Haskell image synthesis (speed of [http://conal.net/Pan Pan] or [http://conal.net/Pajama Pajama] but via ghc). Use Harpy or a new hs-plugins. [[User:Conal|Conal]] <br />
* [http://tiddlywiki.com TiddlyWiki]-based code & documentation browser. Syntax-colored and all identifiers fully hyperlinked to sources. Thanks to TiddlyWiki, the browsing experience is fluid & self-organizing. [[User:Conal|Conal]]<br />
* Fix the Network.Socket API (at least to allow <code>setSocketOption x RecvTimeOut</code> and <code>SendTimeOut</code>)<br />
* Haskell WSGI (http://www.python.org/dev/peps/pep-0333/) equivalent with a reference server implementation.<br />
* [http://haskell.org/haskellwiki/UnicodeByteString UnicodeByteString] layer (<code>Text.UnicodeString</code> maybe).<br />
* ByteString network API.<br />
* ByteString simple HTTP<br />
* Library to allow Haskell to communicate with Erlang processes using the Erlang message protocol.<br />
* A better curses rss client than snownews: support ^L resize signal, and parallel feed downloading.<br />
* benl23: Optimize new graph colouring register allocator.<br />
* jutaro: Information extraction for a Haskell IDE (Types,Completion,Navigation)<br />
* ivant: fix [http://cryp.to/funcmp/ Functional MetaPost] (figure out the problems of using it from LaTeX, add definitions for using it from ConTeXt, etc.)<br />
* Possibility to turn logging on/off in lambdabot per channel<br />
* Continuous build system, via as simple, general dependency tracking & execution formulated as an [[applicative functor]] and using [[DataDriven]] computation. No "make" info required (since inferred by construction). Applies uniformly to recompiling, re-executing, installing, compiler-recompiling, GUI specification and execution, etc. For compilation, it can give more precise (efficient) recompilation than language-specific tools (e.g., <code>hmake</code> and <code>ghc --make</code>) without being language-specific. [[User:Conal|Conal]] 13:51, 1 October 2007 (UTC)<br />
<br />
== Organisers ==<br />
<br />
The organisers for the Hackathon are:<br />
<br />
* [http://progtools.comlab.ox.ac.uk/members/duncan Duncan Coutts]<br />
* [mailto:igloo@earth.li Ian Lynagh]<br />
* [http://www.cse.unsw.edu.au/~dons Don Stewart] <br />
<br />
The organisers can be contacted via: <br />
<br />
dons.hac07@cse.unsw.edu.au<br />
<br />
The local organisers in Freiburg:<br />
<br />
* [http://www.informatik.uni-freiburg.de/~wehr/ Stefan Wehr] <br />
* Phillip Heidegger<br />
<br />
Courtesy of the<br />
[http://proglang.informatik.uni-freiburg.de/ICFP2007/local-organizers.shtml Programming Languages Group] at the University of Freiburg.<br />
<br />
== IRC channel ==<br />
<br />
A Hackathon [[IRC channel]] has been set up. Visit:<br />
<br />
#haskell-hac07<br />
<br />
on Freenode.<br />
<br />
== Previous Haskell hackathons ==<br />
<br />
* [[Hac_2007|Hac 2007 - Oxford]]<br />
* [http://hackage.haskell.org/trac/ghc/wiki/Hackathon Hac 2006 - Portland]<br />
<br />
== Related events ==<br />
<br />
Hac 07 II is (unofficially) colocated with ICFP and other conferences:<br />
<br />
{|<br />
!<br />
!<br />
|-<br />
| [http://proglang.informatik.uni-freiburg.de/IFL2007/ IFL]<br />
| September 27-29<br />
|-<br />
| [http://www.cse.unsw.edu.au/~keller/haskellws/HaskellWorkshop.html Haskell Workshop]<br />
| September 30<br />
|-<br />
| [http://www.informatik.uni-bonn.de/~ralf/icfp07.html ICFP] <br />
| October 1-3<br />
|-<br />
| [http://cufp.galois.com/ CUFP] <br />
| October 4<br />
|-<br />
|}<br />
<br />
== Questions ==<br />
<br />
* AJG: What can Galois do to help?<br />
* If there's anything that Credit Suisse can do to support the Hackathon, please let me know - [mailto:howard.mansell@credit-suisse.com]<br />
<br />
== Misc ==<br />
<br />
The Freiburg background is [http://en.wikipedia.org/wiki/Image:Friburgo_-_Freiburg.jpg available] under the GNU Free Documentation License, from wikipedia.<br />
<br />
[[Category:Community]]<br />
[[Category:Events]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007_II&diff=16086Hac 2007 II2007-10-06T13:59:41Z<p>LennartKolmodin: Add a few people to the group photo list</p>
<hr />
<div>[[Image:Freiburg-lambda.png|Hac 07 II|center]]<br />
<br />
[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
'''Hac 07 II: Haskell Hackathon'''<br />
<br />
'''October 5-7, 2007'''<br />
<br />
'''University of Freiburg, Freiburg, Germany'''<br />
<br />
<br />
* [[/Register|Register for the Hackathon]]<br />
<br />
* [[/Attendees|Attendees organising page]]<br />
<br />
* [[/Projects|What we're working on]]<br />
<br />
== Photos / blogs ==<br />
<br />
[[Image:Hackathon.jpg]]<br />
<br />
Hac 07 II - Freiburg, Germany. Group photo of hackers.<br />
<br />
[[Image:Hac07-mask.jpg]]<br />
<br />
1. Clifford Beshers, thetallguy, Linspire<br />
2. David Himmelstrup, Lemmih, HAppS Inc.<br />
3. Conal Elliot, conal<br />
4. Don Stewart, dons, Galois<br />
5. Russel O'Connor, roconnor<br />
6. Ben Lippmeier, benl23, ANU<br />
7. Johan Tibbel, tibbe, Google<br />
8. Christophe Poucet, vincenz, IMEC<br />
9. Tim Chevalier, Binkley, Portland State<br />
15. Thorkil Naur (thorkilnaur)<br />
21. Marcus Uneson<br />
24. Lennart Kolmodin (kolmodin)<br />
<br />
* [http://stockwits.com/Hackathon.jpg Group Picture]<br />
* [http://lafalafu.com/krc/Images/hacday1/ A few from Tim, day 1]<br />
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/10/06#hac07-2-day1 Don's blog, day 1]<br />
* [http://www.joachim-breitner.de/blog/archives/269-Haskell-Hackathon-Hackage-vs.-Debian.html Joachim's blog, day 1]<br />
* [http://flickr.com/photos/nominolo/tags/hac2007ii/ nominolo's pictures], on Flickr<br />
* [http://flickr.com/photos/pepeiborra/tags/hac2007ii/ mnislaih's pictures], on Flickr<br />
<br />
== About ==<br />
<br />
The 3rd Haskell Hackathon will be held over 3 days, October 5-7 2007,<br />
at the University of Freiburg, in conjunction with the<br />
[http://www.cse.unsw.edu.au/~keller/haskellws/HaskellWorkshop.html Haskell Workshop] and<br />
[http://www.informatik.uni-bonn.de/~ralf/icfp07.html ICFP] 2007.<br />
It is a coding festival, focusing on producing and improving<br />
Haskell libraries, tools and infrastructure.<br />
<br />
To attend please [[/Register|register]], and get ready to hack!<br />
<br />
''Note: that it is not necessary to register for ICFP, or any of the associated conferences, if you only want to go to the Hackathon. The Hackathon itself will be '''free''', but you will have to pay for travel, accommodation and food.''<br />
<br />
== Registration ==<br />
<br />
If you will be attending add your name to the [[/Register|Registration page]].<br />
Numbers may be limited, depending on availablity of space.<br />
<br />
== Where ==<br />
<br />
The Hackathon will take place at the same venue as the IFL workshop, at<br />
[http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&om=1&msid=112565914073914710272.0000011293bc4c0bc450c&ll=47.999169,7.86046&spn=0.041064,0.078621&z=14 the Faculty of Applied Sciences] of the University of Freiburg. '''The room is 02-016 in building 101'''.<br />
<br />
You can reach the hackathon venue from the main train station by taking the "Breisgau S-Bahn" from "Freiburg - Hbf." to "FR Messe/Universitt". [http://proglang.informatik.uni-freiburg.de/IFL2007/timetable.pdf Here is a timetable] (pdf). Please note that most but not all trains stop at the hackathon venue. Also, some trains only run Monday to Friday ("Montag - Freitag") or on Saturday ("Samstag").<br />
<br />
Alternatively, you can walk from the city center to the hackathon (20 - 30 minutes). [http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&om=1&msid=112565914073914710272.0000011293bc4c0bc450c&ll=47.999169,7.86046&spn=0.041064,0.078621&z=14 The map] shows the exact route. <br />
[[Image:logo-klein-07-2.png|frame|]]<br />
<br />
The Hackathon will be integrated with the university [http://sommercampus2007.informatik.uni-freiburg.de/WikiAbstract summer campus]. This will give us all the infrastructure (room, Internet, etc) at minimal hassle. '''Note:''' There won't be any stationary PCs, so you should bring a laptop with you.<br />
<br />
=== Local information ===<br />
<br />
For local information (travel, accommodation etc) see the<br />
[http://proglang.informatik.uni-freiburg.de/ICFP2007/ ICFP local info page].<br />
<br />
[http://proglang.informatik.uni-freiburg.de/IFL2007/travel-information.shtml Travel information page]<br />
<br />
Airport maps:<br />
* [http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&ll=48.705463,9.876709&spn=4.945094,10.063477&z=7&om=1&msid=112565914073914710272.000001129e6f892b7a21e Airports]<br />
<br />
== Dates ==<br />
<br />
Hac 2007 II will take place on Fri 5 Oct to Sun 7 Oct. The following<br />
table shows the workshops and conferences held in Freiburg during the<br />
ICFP period:<br />
<br />
{| class="wikitable"<br />
|-<br />
|Date || Events<br />
|-<br />
|Thu 27 Sep || IFL<br />
|-<br />
|Fri 28 Sep || IFL<br />
|-<br />
|Sat 29 Sep || IFL<br />
|-<br />
|Sun 30 Sep || HW, Scheme<br />
|-<br />
|Mon 1 Oct || ICFP<br />
|-<br />
|Tue 2 Oct || ICFP<br />
|-<br />
|Wed 3 Oct || ICFP<br />
|-<br />
|Thu 4 Oct || CUFP, MM<br />
|-<br />
|Fri 5 Oct || '''Hac 2007 II''', Erlang, ML, PV<br />
|-<br />
|Sat 6 Oct || '''Hac 2007 II'''<br />
|-<br />
|Sun 7 Oct || '''Hac 2007 II'''<br />
|}<br />
<br />
The Hackathon will, ''tentatively'', be held from 10am to 6pm each day,<br />
with dinner after at local venues.<br />
<br />
== Facilities ==<br />
<br />
=== What to bring ===<br />
<br />
* A laptop<br />
* Wireless cards<br />
* Power adaptors if necessary<br />
* Ethernet cable<br />
* Mobile phone<br />
<br />
=== Before you arrive ===<br />
<br />
* Pick out a couple of projects to work on and familiarise yourself with them<br />
* Install an up to date Haskell toolchain (ghc-6.6.1 and if you like a recent snapshot of ghc-6.8.0 also).<br />
<br />
== Projects to work on ==<br />
<br />
Add ideas here for which you think hacking together as a group (rather<br />
than individually) would be beneficial.<br />
<br />
=== Group projects ===<br />
<br />
* Building tests that give 100% code coverage for package base.<br />
* Lots of Cabal hacking still to be done<br />
* Bindings for <your favourite C library><br />
* Haskell library for <your favourite task><br />
* Ensure hackage is ready for ghc 6.8<br />
<br />
=== Other things ===<br />
<br />
* Bit layer on Data.Binary 1.0<br />
* libxml<br />
* bytestring parsec<br />
* combine strictcheck and quickcheck once and for all<br />
* darcs hacking<br />
* aggressive inlining for mtl?<br />
* Data.ByteString.Sequence - a ropes-alike lib based on specialised finger trees<br />
* Data.ByteString.Rope, based on<br />
* [http://www.sgi.com/tech/stl/ropeimpl.html SGIs ropes] or [http://groups.google.com/group/fa.caml/browse_frm/thread/4e70beff0f714229/ new ocaml ropes]<br />
* bit parsing layer for Data.Binary and a network protocol demo?<br />
* dons: HPC coverage for bytestring 1.0<br />
* pretty printer-based ncurses interface<br />
* integrate darcs-piegraph and darcs-graph<br />
* improve the performance of DiffArray using modern techniques [http://www.lri.fr/~filliatr/ftp/ocaml/ds/parray.ml.html OCaml impl]. <br />
** vincenz: Note that even underneath the hood, the ocaml impl is using impurity to implement this (namely the modification of the array in Diff)<br />
* New [http://www.cse.unsw.edu.au/~dons/hs-plugins hs-plugins] on top of ghc-api. [[User:Conal|Conal]]<br />
* Fast general, pure-Haskell image synthesis (speed of [http://conal.net/Pan Pan] or [http://conal.net/Pajama Pajama] but via ghc). Use Harpy or a new hs-plugins. [[User:Conal|Conal]] <br />
* [http://tiddlywiki.com TiddlyWiki]-based code & documentation browser. Syntax-colored and all identifiers fully hyperlinked to sources. Thanks to TiddlyWiki, the browsing experience is fluid & self-organizing. [[User:Conal|Conal]]<br />
* Fix the Network.Socket API (at least to allow <code>setSocketOption x RecvTimeOut</code> and <code>SendTimeOut</code>)<br />
* Haskell WSGI (http://www.python.org/dev/peps/pep-0333/) equivalent with a reference server implementation.<br />
* [http://haskell.org/haskellwiki/UnicodeByteString UnicodeByteString] layer (<code>Text.UnicodeString</code> maybe).<br />
* ByteString network API.<br />
* ByteString simple HTTP<br />
* Library to allow Haskell to communicate with Erlang processes using the Erlang message protocol.<br />
* A better curses rss client than snownews: support ^L resize signal, and parallel feed downloading.<br />
* benl23: Optimize new graph colouring register allocator.<br />
* jutaro: Information extraction for a Haskell IDE (Types,Completion,Navigation)<br />
* ivant: fix [http://cryp.to/funcmp/ Functional MetaPost] (figure out the problems of using it from LaTeX, add definitions for using it from ConTeXt, etc.)<br />
* Possibility to turn logging on/off in lambdabot per channel<br />
* Continuous build system, via as simple, general dependency tracking & execution formulated as an [[applicative functor]] and using [[DataDriven]] computation. No "make" info required (since inferred by construction). Applies uniformly to recompiling, re-executing, installing, compiler-recompiling, GUI specification and execution, etc. For compilation, it can give more precise (efficient) recompilation than language-specific tools (e.g., <code>hmake</code> and <code>ghc --make</code>) without being language-specific. [[User:Conal|Conal]] 13:51, 1 October 2007 (UTC)<br />
<br />
== Organisers ==<br />
<br />
The organisers for the Hackathon are:<br />
<br />
* [http://progtools.comlab.ox.ac.uk/members/duncan Duncan Coutts]<br />
* [mailto:igloo@earth.li Ian Lynagh]<br />
* [http://www.cse.unsw.edu.au/~dons Don Stewart] <br />
<br />
The organisers can be contacted via: <br />
<br />
dons.hac07@cse.unsw.edu.au<br />
<br />
The local organisers in Freiburg:<br />
<br />
* [http://www.informatik.uni-freiburg.de/~wehr/ Stefan Wehr] <br />
* Phillip Heidegger<br />
<br />
Courtesy of the<br />
[http://proglang.informatik.uni-freiburg.de/ICFP2007/local-organizers.shtml Programming Languages Group] at the University of Freiburg.<br />
<br />
== IRC channel ==<br />
<br />
A Hackathon [[IRC channel]] has been set up. Visit:<br />
<br />
#haskell-hac07<br />
<br />
on Freenode.<br />
<br />
== Previous Haskell hackathons ==<br />
<br />
* [[Hac_2007|Hac 2007 - Oxford]]<br />
* [http://hackage.haskell.org/trac/ghc/wiki/Hackathon Hac 2006 - Portland]<br />
<br />
== Related events ==<br />
<br />
Hac 07 II is (unofficially) colocated with ICFP and other conferences:<br />
<br />
{|<br />
!<br />
!<br />
|-<br />
| [http://proglang.informatik.uni-freiburg.de/IFL2007/ IFL]<br />
| September 27-29<br />
|-<br />
| [http://www.cse.unsw.edu.au/~keller/haskellws/HaskellWorkshop.html Haskell Workshop]<br />
| September 30<br />
|-<br />
| [http://www.informatik.uni-bonn.de/~ralf/icfp07.html ICFP] <br />
| October 1-3<br />
|-<br />
| [http://cufp.galois.com/ CUFP] <br />
| October 4<br />
|-<br />
|}<br />
<br />
== Questions ==<br />
<br />
* AJG: What can Galois do to help?<br />
* If there's anything that Credit Suisse can do to support the Hackathon, please let me know - [mailto:howard.mansell@credit-suisse.com]<br />
<br />
== Misc ==<br />
<br />
The Freiburg background is [http://en.wikipedia.org/wiki/Image:Friburgo_-_Freiburg.jpg available] under the GNU Free Documentation License, from wikipedia.<br />
<br />
[[Category:Community]]<br />
[[Category:Events]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007_II/Attendees&diff=16014Hac 2007 II/Attendees2007-10-05T10:13:53Z<p>LennartKolmodin: Added a few projects</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
== Projects ==<br />
<br />
A list of projects you've worked on or know fairly well:<br />
<br />
{| class="wikitable"<br />
! Name<br />
! Projects<br />
|-<br />
| dons<br />
| ByteString, xmonad, Data.Binary, lambdabot, hmp3, curses, QuickCheck, HPC, hs-plugins, yi, nobench/nofib, ghc<br />
|-<br />
| Binkley<br />
| ghc, darcs (a little bit)<br />
|-<br />
| skogsbaer (Stefan Wehr)<br />
| hscurses, rhaskell<br />
|-<br />
| Pepe<br />
| ghc (front end mostly), ghci debugger, cabal-install (very little)<br />
|-<br />
| ivant<br />
| Functional MetaPost<br />
|-<br />
| kolmodin (Lennart Kolmodin)<br />
| Data.Binary, Gentoo Linux, Haste (Haskell Turbo-Edit,a Haskell IDE in Haskell), hackport (hackage for Gentoo), hinotify, dbus-haskell <br />
|-<br />
|}<br />
<br />
<br />
== Registrants ==<br />
<br />
If you've registered, do add your name to the following table:<br />
<br />
{| class="wikitable"<br />
! Name<br />
! Nick<br />
! Affiliiation<br />
! Provided tshirt size<br />
! Mobile #<br />
|-<br />
| [http://www.cse.unsw.edu.au/~dons Don Stewart]<br />
| dons<br />
| Galois<br />
| Yes<br />
|<br />
|-<br />
| Ian Lynagh<br />
| Igloo<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Duncan Coutts<br />
| dcoutts<br />
| Oxford<br />
| Yes<br />
|<br />
|-<br />
| Lennart Kolmodin<br />
| kolmodin<br />
| Chalmers<br />
| Yes<br />
| +46736223606<br />
|-<br />
| Pepe Iborra<br />
| mnislaih<br />
| UPV<br />
| Yes<br />
|<br />
|-<br />
| Ben Lippmeier<br />
| benl23<br />
| ANU<br />
| Yes<br />
|<br />
|-<br />
| David Himmelstrup<br />
| Lemmih<br />
|<br />
| Yes<br />
|<br />
|- <br />
| [http://www.bringert.net/ Björn Bringert]<br />
| bringert<br />
| Chalmers <br />
| Yes<br />
| +46704779794<br />
|-<br />
| Tim Chevalier<br />
| Binkley<br />
| PSU<br />
| Yes<br />
|<br />
|-<br />
| Andy Gill<br />
| andyjgill<br />
| Galois<br />
| Yes<br />
|<br />
|-<br />
| Clemens Fruhwirth<br />
| therp<br />
| <br />
| Yes<br />
|<br />
|-<br />
| Thorkil Naur<br />
| naur<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Benedikt Schmidt<br />
| beschmi<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Thomas Schilling<br />
| nominolo<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Conal Elliott<br />
| conal<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Russell O'Connor<br />
| roconnor<br />
|<br />
| Yes<br />
| +31625178046<br />
|-<br />
| Ganesh Sittampalam<br />
| Heffalump<br />
| Credit Suisse<br />
| Yes<br />
|<br />
|-<br />
| Jürgen Nicklisch<br />
| Jutaro<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Ivan Tarasov<br />
| ivant<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Johan Tibell<br />
| tibbe<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Clifford Beshers<br />
| thetallguy<br />
|<br />
| Yes<br />
|<br />
|-<br />
| David Fox<br />
| dsf<br />
| <br />
| Yes<br />
|<br />
|-<br />
| [http://www.esat.kuleuven.ac.be/~cpoucet Christophe Poucet]<br />
| vincenz<br />
| IMEC<br />
| Yes<br />
|<br />
|-<br />
| Matthias Neubauer<br />
| heckenpenner<br />
| Freiburg<br />
| Yes<br />
|<br />
|-<br />
| Stefan Wehr<br />
| <br />
| Freiburg<br />
| Yes<br />
|<br />
|-<br />
| [http://www.randomhacks.net/ Eric Kidd]<br />
| ekidd<br />
| Dartmouth<br />
| Yes<br />
| 15776874941<br />
|-<br />
| Marcus Uneson<br />
| muneson<br />
| <br />
| Yes<br />
|<br />
|-<br />
| Conrad Barski<br />
| drcode<br />
| <br />
| Yes<br />
| [http://lisperati.com/haskell/ My Brand New Haskell Tutorial :-)]<br />
|-<br />
| Joachim Breitner<br />
| nomeata<br />
| <br />
| Yes<br />
|<br />
|}<br />
<br />
== Arriving ==<br />
<br />
===Train===<br />
<br />
* Igloo: 29 Sep at 21:00, Freiburg Hbf.<br />
* Lemmih: 29 Sep at 18:00, Freiburg Hbf.<br />
* Jutaro: 29 Sep at 23:09, Freiburg Hbf.<br />
* ivant: 30 Sep, at 8:00, from Vienna<br />
* tibbe: 5 Oct, at 8:00, from Zurich<br />
* vincenz: 4 Oct, At 23-24, Freiburg Hbf.<br />
* roconnor: 4 Oct, at 21:00, Freiburg Hbf.<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 />
* Lennart Kolmodin, 29 Sep, 12:05, Frankfurt<br />
* Björn Bringert, 04 Oct 18:55, Frankfurt (train to Freiburg dep 19.54, arr 22:15)<br />
<br />
== Accomodation ==<br />
<br />
A number of accommodation options are available. To organize 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 />
* conal: same, in a 6-bed dorm room, 25 Sep - 8 Oct<br />
* ivant: same, 30 Sep - 8 Oct<br />
* tibbe: 6-bed dorm room, 5 Oct - 7 Oct<br />
* mnislaih: same<br />
* dcoutts, kolmodin: 6-bed dorm room, 29 Sep - 8 Oct<br />
* drcode<br />
* roconnor: dorm room, 4 Oct - 8 Oct (still to be confirmed)<br />
<br />
We will be meeting at 9am at the entrance of the Black Forest Hostel to go to the Hackathon venue.<br />
<br />
=== Best Western ===<br />
<br />
* dons, andy: Best Western<br />
<br />
=== InterCityHotel ===<br />
<br />
http://www.booking.com/hotel/de/intercityhotelfreiburg.html<br />
<br />
* bringert, vincenz: 04 Oct - 07 Oct<br />
<br />
=== Paradies ===<br />
<br />
* jutaro: 01 Oct - 07 Oct</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007_II/Attendees&diff=15864Hac 2007 II/Attendees2007-09-26T18:19:12Z<p>LennartKolmodin: Added arrival time</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 />
! Name<br />
! Nick<br />
! Affiliiation<br />
! Provided tshirt size<br />
! Mobile #<br />
|-<br />
| [http://www.cse.unsw.edu.au/~dons Don Stewart]<br />
| dons<br />
| Galois<br />
| Yes<br />
|<br />
|-<br />
| Ian Lynagh<br />
| Igloo<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Duncan Coutts<br />
| dcoutts<br />
| Oxford<br />
| Yes<br />
|<br />
|-<br />
| Lennart Kolmodin<br />
| kolmodin<br />
| Chalmers<br />
| Yes<br />
| +46736223606<br />
|-<br />
| Pepe Iborra<br />
| mnislaih<br />
| UPV<br />
| Yes<br />
|<br />
|-<br />
| Ben Lippmeier<br />
| benl23<br />
| ANU<br />
| Yes<br />
|<br />
|-<br />
| David Himmelstrup<br />
| Lemmih<br />
|<br />
| Yes<br />
|<br />
|- <br />
| [http://www.bringert.net/ Björn Bringert]<br />
| bringert<br />
| Chalmers <br />
| Yes<br />
| +46704779794<br />
|-<br />
| Tim Chevalier<br />
| Binkley<br />
| PSU<br />
| Yes<br />
|<br />
|-<br />
| Andy Gill<br />
| andyjgill<br />
| Galois<br />
| Yes<br />
|<br />
|-<br />
| Clemens Fruhwirth<br />
| therp<br />
| <br />
| Yes<br />
|<br />
|-<br />
| Thorkil Naur<br />
| naur<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Benedikt Schmidt<br />
| beschmi<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Thomas Schilling<br />
| nominolo<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Conal Elliott<br />
| conal<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Russell O'Connor<br />
| roconnor<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Ganesh Sittampalam<br />
| Heffalump<br />
| Credit Suisse<br />
| Yes<br />
|<br />
|-<br />
| Jürgen Nicklisch<br />
| Jutaro<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Ivan Tarasov<br />
| ivant<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Johan Tibell<br />
| tibbe<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Clifford Beshers<br />
| thetallguy<br />
|<br />
| Yes<br />
|<br />
|-<br />
| David Fox<br />
| dsf<br />
| <br />
| Yes<br />
|<br />
|-<br />
| [http://www.esat.kuleuven.ac.be/~cpoucet Christophe Poucet]<br />
| vincenz<br />
| IMEC<br />
| Yes<br />
|<br />
|-<br />
| Matthias Neubauer<br />
| heckenpenner<br />
| Freiburg<br />
| Yes<br />
|<br />
|-<br />
| Stefan Wehr<br />
| <br />
| Freiburg<br />
| Yes<br />
|<br />
|-<br />
| [http://www.randomhacks.net/ Eric Kidd]<br />
| ekidd<br />
| Dartmouth<br />
| Yes<br />
|<br />
|-<br />
| Marcus Uneson<br />
| muneson<br />
| <br />
| Yes<br />
|<br />
|-<br />
| Conrad Barski<br />
| drcode<br />
| <br />
| Yes<br />
|<br />
|}<br />
<br />
== Arriving ==<br />
<br />
===Train===<br />
<br />
* Igloo: 29 Sep at 21:00, Freiburg Hbf.<br />
* Lemmih: 29 Sep at 18:00, Freiburg Hbf.<br />
* Jutaro: 29 Sep at 23:09, Freiburg Hbf.<br />
* ivant: 30 Sep, at 8:00, from Vienna<br />
* tibbe: 5 Oct, at 8:00, from Zurich<br />
* vincenz: 4 Oct, At 23-24, Freiburg Hbf.<br />
* roconnor: 4 Oct, at 23:09, Freiburg Hbf.<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 />
* Lennart Kolmodin, 29 Sep, 12:05, Frankfurt<br />
* Björn Bringert, 04 Oct 18:55, Frankfurt (train to Freiburg dep 19.54, arr 22:15)<br />
<br />
== Accomodation ==<br />
<br />
A number of accommodation options are available. To organize 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 />
* conal: same, in a 6-bed dorm room, 25 Sep - 8 Oct<br />
* ivant: same, 30 Sep - 8 Oct<br />
* tibbe: 6-bed dorm room, 5 Oct - 7 Oct<br />
* mnislaih: same<br />
* dcoutts, kolmodin: 6-bed dorm room, 29 Sep - 8 Oct<br />
* drcode<br />
* rocnnor: dorm room, 4 Oct - 8 Oct (still to be confirmed)<br />
<br />
=== Best Western ===<br />
<br />
* dons, andy: Best Western<br />
<br />
=== InterCityHotel ===<br />
<br />
http://www.booking.com/hotel/de/intercityhotelfreiburg.html<br />
<br />
* bringert, vincenz: 04 Oct - 07 Oct<br />
<br />
=== Paradies ===<br />
<br />
* jutaro: 01 Oct - 07 Oct</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007_II/Attendees&diff=15817Hac 2007 II/Attendees2007-09-24T20:32:30Z<p>LennartKolmodin: Added my cell phone number</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 />
! Name<br />
! Nick<br />
! Affiliiation<br />
! Provided tshirt size<br />
! Mobile #<br />
|-<br />
| [http://www.cse.unsw.edu.au/~dons Don Stewart]<br />
| dons<br />
| Galois<br />
| Yes<br />
|<br />
|-<br />
| Ian Lynagh<br />
| Igloo<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Duncan Coutts<br />
| dcoutts<br />
| Oxford<br />
| Yes<br />
|<br />
|-<br />
| Lennart Kolmodin<br />
| kolmodin<br />
| Chalmers<br />
| Yes<br />
| +46736223606<br />
|-<br />
| Pepe Iborra<br />
| mnislaih<br />
| UPV<br />
| Yes<br />
|<br />
|-<br />
| Ben Lippmeier<br />
| benl23<br />
| ANU<br />
| Yes<br />
|<br />
|-<br />
| David Himmelstrup<br />
| Lemmih<br />
|<br />
| Yes<br />
|<br />
|- <br />
| [http://www.bringert.net/ Björn Bringert]<br />
| bringert<br />
| Chalmers <br />
| Yes<br />
| +46704779794<br />
|-<br />
| Tim Chevalier<br />
| Binkley<br />
| PSU<br />
| Yes<br />
|<br />
|-<br />
| Andy Gill<br />
| andyjgill<br />
| Galois<br />
| Yes<br />
|<br />
|-<br />
| Clemens Fruhwirth<br />
| therp<br />
| <br />
| Yes<br />
|<br />
|-<br />
| Thorkil Naur<br />
| naur<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Benedikt Schmidt<br />
| beschmi<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Thomas Schilling<br />
| nominolo<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Conal Elliott<br />
| conal<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Russell O'Connor<br />
| roconnor<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Ganesh Sittampalam<br />
| Heffalump<br />
| Credit Suisse<br />
| Yes<br />
|<br />
|-<br />
| Jürgen Nicklisch<br />
| Jutaro<br />
|<br />
| <br />
|<br />
|-<br />
| Ivan Tarasov<br />
| ivant<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Johan Tibell<br />
| tibbe<br />
|<br />
| Yes<br />
|<br />
|-<br />
| Clifford Beshers<br />
| thetallguy<br />
|<br />
| Yes<br />
|<br />
|-<br />
| David Fox<br />
| dsf<br />
| <br />
| Yes<br />
|<br />
|-<br />
| [http://www.esat.kuleuven.ac.be/~cpoucet Christophe Poucet]<br />
| vincenz<br />
| IMEC<br />
| Yes<br />
|<br />
|-<br />
| Matthias Neubauer<br />
| heckenpenner<br />
| Freiburg<br />
| Yes<br />
|<br />
|-<br />
| Stefan Wehr<br />
| <br />
| Freiburg<br />
| Yes<br />
|<br />
|-<br />
| [http://www.randomhacks.net/ Eric Kidd]<br />
| ekidd<br />
| Dartmouth<br />
| Yes<br />
|<br />
|-<br />
| Marcus Uneson<br />
| muneson<br />
| <br />
| Yes<br />
|<br />
|-<br />
| Conrad Barski<br />
| drcode<br />
| <br />
| Yes<br />
|<br />
|}<br />
<br />
== Arriving ==<br />
<br />
===Train===<br />
<br />
* Igloo: 29 Sep at 21:00, Freiburg Hbf.<br />
* Lemmih: 29 Sep at 18:00, Freiburg Hbf.<br />
* ivant: 30 Sep, at 8:00, from Vienna<br />
* tibbe: 5 Oct, at 8:00, from Zurich<br />
* vincenz: 4 Oct, At 23-24, Freiburg Hbf.<br />
* roconnor: 4 Oct, at 23:09, Freiburg Hbf.<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 />
* Lennart Kolmodin, 29 Sep, Frankfurt<br />
* Björn Bringert, 04 Oct 18:55, Frankfurt (train to Freiburg dep 19.54, arr 22:15)<br />
<br />
== Accomodation ==<br />
<br />
A number of accommodation options are available. To organize 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 />
* conal: same, in a 6-bed dorm room, 25 Sep - 8 Oct<br />
* ivant: same, 30 Sep - 8 Oct<br />
* tibbe: 6-bed dorm room, 5 Oct - 7 Oct<br />
* mnislaih: same<br />
* dcoutts, kolmodin: 6-bed dorm room, 29 Sep - 8 Oct<br />
* drcode<br />
* rocnnor: dorm room, 4 Oct - 8 Oct (still to be confirmed)<br />
<br />
=== Best Western ===<br />
<br />
* dons, andy: Best Western<br />
<br />
=== InterCityHotel ===<br />
<br />
http://www.booking.com/hotel/de/intercityhotelfreiburg.html<br />
<br />
* bringert, vincenz: 04 Oct - 07 Oct</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007_II/Attendees&diff=15450Hac 2007 II/Attendees2007-09-08T16:02:11Z<p>LennartKolmodin: Added kolmodin's and dcoutts' hostel</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 />
* Lennart Kolmodin, 29 Sep, Frankfurt<br />
<br />
== Accomodation ==<br />
<br />
A number of accommodation options are available. To organize 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 />
* dcoutts, kolmodin: 6-bed dorm room, 29 Sep - 8 Oct<br />
<br />
=== Best Western ===<br />
<br />
* dons, andy: Best Western</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007_II&diff=14131Hac 2007 II2007-07-10T06:40:50Z<p>LennartKolmodin: Add myself (kolmodin)</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
Please add yourself to this list if you are potentially interested in<br />
being part of a Hackathon colocated with<br />
[http://www.cse.unsw.edu.au/~keller/haskellws/HaskellWorkshop.html Haskell Workshop] and<br />
[http://www.informatik.uni-bonn.de/~ralf/icfp07.html ICFP] 2007 (i.e. in<br />
Freiburg, Germany, around the end of September/beginning of October).<br />
<br />
* Ian Lynagh (Igloo)<br />
* Duncan Coutts (dcoutts)<br />
* Malcolm Wallace (malcolmw)<br />
* Don Stewart (dons)<br />
* Lennart Kolmodin (kolmodin)<br />
<br />
In terms of dates, IFL immediately preceedes HW, which immediately<br />
preceeds ICFP, so the best might be to go for the weekend Fri-Sun<br />
afterwards. This gives a days rest after a week's conferences, or CUFP<br />
for the diehards, on the Thursday.<br />
<br />
An alternative might be to run the Hackathon in parallel with IFL (or<br />
ICFP), but this might result in some people who want to go not being<br />
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.<br />
<br />
* bytestring 1.0<br />
* bit layer on Data.Binary 1.0<br />
* Data.ByteString.Parallel<br />
* Lots of Cabal hacking still to be done<br />
* Bindings for <your favourite C library><br />
* Haskell library for <your favourite task><br />
<br />
== Previous Haskell hackathons ==<br />
<br />
* [[Hac_2007|Hac 2007 - Oxford]]<br />
* [http://hackage.haskell.org/trac/ghc/wiki/Hackathon Hac 2006 - Portland]<br />
<br />
[[Category:Community]]</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007/GroupPhoto&diff=10392Hac 2007/GroupPhoto2007-01-14T11:53:03Z<p>LennartKolmodin: I'm happy with beeing mentioned once</p>
<hr />
<div>[[Image:Hac2007-group-outside.jpg]]<br />
<br />
Hac2007 peoples standing outside the Oxford university computing lab.<br />
11th Jan 2007.<br />
<br />
----<br />
<br />
'''Top Row'''<br />
<br />
From left: Thorkil Naur, Neil Mitchell (ndm), Ketil Malde (kzm), David Waern (waern), Dominic Steinitz, Simon Marlow (JaffaCake), Ben Lippmeier (benl23)<br />
<br />
<br />
'''Middle Row'''<br />
<br />
From left: Benedikt Schmidt (beschmi), Pepe Iborra (mnislaih)<br />
<br />
'''Bottom Row'''<br />
<br />
From left: Ian Lynagh (Igloo), Duncan Coutts (dcoutts), Bjorn Bringert (bringert), Don Stewart (dons), Kirsten Chevalier (Binkley), Lennart Kolmodin (kolmodin), David Himmelstrup (Lemmih).<br />
<br />
<br />
== Summary ==<br />
<br />
dons: Worked on the new [http://darcs.haskell.org/binary binary] IO package,<br />
and patched hmp3 and lambdabot to use the new package. Lambdabot's now<br />
running live with 'binary' state<br />
<br />
kolmodin: Worked on the new [http://darcs.haskell.org/binary binary] IO package.<br />
<br />
Binkley: Worked on [http://hackage.haskell.org/trac/ghc/wiki/Commentary/Profiling ticky-ticky profiling in GHC]. Pending review, that code is ready to go into GHC's HEAD.<br />
<br />
pepe: Produced some GHC patches related to the [http://www.haskell.org/ghc/dist/current/docs/users_guide/ghci-debugger.html GHCi debugger], and joined<br />
forces with beschmi to integrate the debugger in Emacs, building on top of beschmi<br />
code to use the ghc-api from Emacs. A new project sponsored by Hac'07 !<br />
<br />
Lemmih: Worked on porting the parallel QuickCheck driver to QuickCheck-2.0. Did a little bit of 'binary' hacking.<br />
<br />
Igloo: Tidied up Cabal, implemented -fwarn-tabs in GHC, fixed a couple of other small things, took part in various design discussions (e.g. hackage stuff, some of Neil's bits), and other random stuff I've forgotten already.<br />
<br />
ndm: Index searching for Haddock. Gtk2Hs with waiting on Handles in Win32 (answer = doesn't work). DeferedBinary module, for Hoogle.<br />
<br />
Waern: Started working on generating correct links to external package modules in Haddock-GHC. Decided together with Simon to avoid having separate Haddock interface files and use GHC's .hi-files only. Needed to modify GHC to include some extra information in the .hi-files to be able to do this.<br />
<br />
beschmi: Started working on debugger support and improved ghci Emacs integration with Pepe (everyone should try the [http://haskell.org/haskellwiki/GHC/GHCiDebugger ghci debugger] in 6.7). Had some nice discussions about crypto+Haskell with Dominic Steinitz.<br />
<br />
dcoutts: binary, ...<br />
<br />
Thorkil Naur: Studies related to the GHC GMP replacement ([http://hackage.haskell.org/trac/ghc/ticket/601 trac ticket 601]).</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007/GroupPhoto&diff=10391Hac 2007/GroupPhoto2007-01-14T11:51:02Z<p>LennartKolmodin: Added a couple of irc nicks</p>
<hr />
<div>[[Image:Hac2007-group-outside.jpg]]<br />
<br />
Hac2007 peoples standing outside the Oxford university computing lab.<br />
11th Jan 2007.<br />
<br />
----<br />
<br />
'''Top Row'''<br />
<br />
From left: Thorkil Naur, Neil Mitchell (ndm), Ketil Malde (kzm), David Waern (waern), Dominic Steinitz, Simon Marlow (JaffaCake), Ben Lippmeier (benl23)<br />
<br />
<br />
'''Middle Row'''<br />
<br />
From left: Benedikt Schmidt (beschmi), Pepe Iborra (mnislaih)<br />
<br />
'''Bottom Row'''<br />
<br />
From left: Ian Lynagh (Igloo), Duncan Coutts (dcoutts), Bjorn Bringert (bringert), Don Stewart (dons), Kirsten Chevalier (Binkley), Lennart Kolmodin (kolmodin), David Himmelstrup (Lemmih).<br />
<br />
<br />
== Summary ==<br />
<br />
dons: Worked on the new [http://darcs.haskell.org/binary binary] IO package,<br />
and patched hmp3 and lambdabot to use the new package. Lambdabot's now<br />
running live with 'binary' state<br />
<br />
kolmodin: Worked on the new [http://darcs.haskell.org/binary binary] IO package.<br />
<br />
Binkley: Worked on [http://hackage.haskell.org/trac/ghc/wiki/Commentary/Profiling ticky-ticky profiling in GHC]. Pending review, that code is ready to go into GHC's HEAD.<br />
<br />
pepe: Produced some GHC patches related to the [http://www.haskell.org/ghc/dist/current/docs/users_guide/ghci-debugger.html GHCi debugger], and joined<br />
forces with beschmi to integrate the debugger in Emacs, building on top of beschmi<br />
code to use the ghc-api from Emacs. A new project sponsored by Hac'07 !<br />
<br />
Lemmih: Worked on porting the parallel QuickCheck driver to QuickCheck-2.0. Did a little bit of 'binary' hacking.<br />
<br />
Igloo: Tidied up Cabal, implemented -fwarn-tabs in GHC, fixed a couple of other small things, took part in various design discussions (e.g. hackage stuff, some of Neil's bits), and other random stuff I've forgotten already.<br />
<br />
ndm: Index searching for Haddock. Gtk2Hs with waiting on Handles in Win32 (answer = doesn't work). DeferedBinary module, for Hoogle.<br />
<br />
Waern: Started working on generating correct links to external package modules in Haddock-GHC. Decided together with Simon to avoid having separate Haddock interface files and use GHC's .hi-files only. Needed to modify GHC to include some extra information in the .hi-files to be able to do this.<br />
<br />
beschmi: Started working on debugger support and improved ghci Emacs integration with Pepe (everyone should try the [http://haskell.org/haskellwiki/GHC/GHCiDebugger ghci debugger] in 6.7). Had some nice discussions about crypto+Haskell with Dominic Steinitz.<br />
<br />
kolmodin: binary<br />
<br />
dcoutts: binary, ...<br />
<br />
Thorkil Naur: Studies related to the GHC GMP replacement ([http://hackage.haskell.org/trac/ghc/ticket/601 trac ticket 601]).</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007/GroupPhoto&diff=10131Hac 2007/GroupPhoto2007-01-12T19:02:06Z<p>LennartKolmodin: Added what I've been up to</p>
<hr />
<div>[[Image:Hac2007-group-outside.jpg]]<br />
<br />
Hac2007 peoples standing outside the Oxford university computing lab.<br />
11th Jan 2007.<br />
<br />
----<br />
<br />
'''Top Row'''<br />
<br />
From left: Thorkil Naur, Neil Mitchell (ndm), Ketil Malde, David Waern, Dominic Steinitz, Simon Marlow (JaffaCake), Ben Lippmeier (benl23)<br />
<br />
<br />
'''Middle Row'''<br />
<br />
From left: Benedikt Schmidt (beschmi), Pepe Iborra (mnislaih)<br />
<br />
'''Bottom Row'''<br />
<br />
From left: Ian Lynagh (Igloo), Duncan Coutts (dcoutts), Bjorn Bringert (bringert), Don Stewart (dons), Kirsten Chevalier (Binkley), Lennart Kolmodin (kolmodin), David Himmelstrup (Lemmih).<br />
<br />
<br />
== Summary ==<br />
<br />
dons: Worked on the new [http://darcs.haskell.org/binary binary] IO package,<br />
and patched hmp3 and lambdabot to use the new package. Lambdabot's now<br />
running live with 'binary' state<br />
<br />
kolmodin: Worked on the new [http://darcs.haskell.org/binary binary] IO package.<br />
<br />
Binkley: Worked on [http://hackage.haskell.org/trac/ghc/wiki/Commentary/Profiling ticky-ticky profiling in GHC]. Pending review, that code is ready to go into GHC's HEAD.<br />
<br />
pepe: Produced some GHC patches related to the [http://www.haskell.org/ghc/dist/current/docs/users_guide/ghci-debugger.html GHCi debugger], and joined<br />
forces with beschmi to integrate the debugger in Emacs, building on top of beschmi<br />
code to use the ghc-api from Emacs. A new project sponsored by Hac'07 !<br />
<br />
Lemmih: Worked on porting the parallel QuickCheck driver to QuickCheck-2.0. Did a little bit of 'binary' hacking.<br />
<br />
Igloo: Tidied up Cabal, implemented -fwarn-tabs in GHC, fixed a couple of other small things, took part in various design discussions (e.g. hackage stuff, some of Neil's bits), and other random stuff I've forgotten already.<br />
<br />
ndm: Index searching for Haddock. Gtk2Hs with waiting on Handles in Win32 (answer = doesn't work). DeferedBinary module, for Hoogle.</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007/Attendees&diff=9817Hac 2007/Attendees2006-12-29T12:41:58Z<p>LennartKolmodin: Updated my flight info</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
Attendee list<br />
<br />
{|<br />
! Name<br />
! IRC nick<br />
! Dates<br />
! Projects<br />
|-<br />
| Don Stewart<br />
| dons<br />
| 10,11,12<br />
| Hackage, ByteStrings, stream fusion<br />
|-<br />
| Duncan Coutts<br />
| dcoutts<br />
| 10,11,12<br />
|<br />
|-<br />
| Ian Lynagh<br />
| Igloo<br />
| 10,11,12<br />
| GHC, Cabal, Hackage, and loads more besides<br />
|-<br />
| Neil Mitchell<br />
| ndm<br />
| 10,11,12<br />
| Yhc, Hoogle, Catch, Dr Haskell, WinHugs ...<br />
|-<br />
| Thorkil Naur<br />
| naur<br />
| 10,11,12<br />
| Integer implementation (GMP), Porting, Factorization, Puzzles<br />
|-<br />
| Pepe Iborra<br />
| mnislaih<br />
| 10,11,12<br />
| GHC, the GHCi debugger, Darcs does look sexy, infrastructure & tools.<br />
|-<br />
| Dominic Steinitz<br />
|<br />
| 10,11,12<br />
| crypto, networking<br />
|-<br />
| Ben Lippmeier<br />
| benl23<br />
| 10,11,12<br />
| GHC bug squashing.<br />
|-<br />
| David Himmelstrup<br />
| Lemmih<br />
| 10,11,12<br />
| cabal-test, QuickCheck, Hackage, cabal-get.<br />
|-<br />
| Ross Paterson<br />
|<br />
| ?<br />
| Hackage<br />
|-<br />
| Simon Marlow<br />
| JaffaCake<br />
| 1 or 2 days<br />
| Everything<br />
|- <br />
| Björn Bringert<br />
| bringert<br />
| 10,11,12<br />
| Hackage, libraries, QuickCheck 2, GHC<br />
|-<br />
| Benedikt Schmidt<br />
| beschmi<br />
| 10,11,12<br />
| darcs, GHC-api+Emacs, crypto<br />
|-<br />
| Krasimir Angelov<br />
| <br />
| 10,11,12<br />
| Visual Haskell, Cabal<br />
|-<br />
| Peter Nuttall<br />
| psnl<br />
| 10,11,12<br />
| Hat, maybe cabal or ghc<br />
|-<br />
| Lennart Kolmodin<br />
| kolmodin<br />
| 10,11,12<br />
| Cabal, Binary ByteStrings, tools<br />
|-<br />
| Kirsten Chevalier<br />
| Binkley<br />
| 10,11,12<br />
| GHC, whatever else looks interesting<br />
|}<br />
<br />
<br />
<br />
== Arriving ==<br />
<br />
If you are arriving via air and want to meet up for the trip up to<br />
Oxford, add you details here, so people can arrange to travel together:<br />
<br />
{|<br />
|-<br />
! Name<br />
! Airport<br />
! Arrival date/time<br />
! Flight <br />
|-<br />
| dons<br />
| Heathrow<br />
| 2007-01-10 6:20am<br />
| QF31<br />
|-<br />
| bringert<br />
| Heathrow<br />
| 2007-01-10 8:25am<br />
| SK523<br />
|-<br />
| Binkley<br />
| Heathrow<br />
| 2007-01-10 5:55am<br />
| UA958<br />
|-<br />
| pepe<br />
| Stansted<br />
| 2007-01-09 6:10pm<br />
| 3840<br />
|-<br />
| beschmi<br />
| Stansted<br />
| 2007-01-10 6:40am<br />
| 4U2332<br />
|-<br />
| kolmodin<br />
| Heathrow<br />
| 2007-01-09 4:15pm<br />
| KL1021<br />
|-<br />
|}<br />
<br />
== Accomodation ==<br />
<br />
3 of us are staying at<br />
<br />
* [http://www.activehotels.com/servlet/xmlbrochure/index.do?hotelid=116496& Eurobar Cafe & Hotel]<br />
<br />
It's quite close to the center of town, and near the bus stop and train<br />
station.<br />
<br />
Other close by places that look good include:<br />
<br />
* [http://www.lintonlodge.activehotels.com/BBA&subid=R1543223 Linton Lodge]<br />
* [http://www.cotswoldlodgehotel.activehotels.com/BBA&subid=R1543223 Cotswold Lodge]<br />
<br />
=== YHA ===<br />
I(pepe) will go YHA in order to save some Euros (I need to stay for four nights, due to the few Valencia-London flight choices). If anyone else will go to YHA too, we could make a joint reservation.<br />
<br />
The hostel seems to be quite close to center and train station too.<br />
<br />
People staying at a YHA hostel:<br />
* pepe</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Hac_2007/Attendees&diff=9713Hac 2007/Attendees2006-12-23T22:45:56Z<p>LennartKolmodin: Added myself to Attendees</p>
<hr />
<div>[[Image:Hac-axe-icon.png|Hac icon]]<br />
<br />
Attendee list<br />
<br />
{|<br />
! Name<br />
! IRC nick<br />
! Dates<br />
! Projects<br />
|-<br />
| Don Stewart<br />
| dons<br />
| 10,11,12<br />
| Hackage, ByteStrings, stream fusion<br />
|-<br />
| Duncan Coutts<br />
| dcoutts<br />
| 10,11,12<br />
|<br />
|-<br />
| Ian Lynagh<br />
| Igloo<br />
| 10,11,12<br />
| GHC, Cabal, Hackage, and loads more besides<br />
|-<br />
| Neil Mitchell<br />
| ndm<br />
| 10,11,12<br />
| Yhc, Hoogle, Catch, Dr Haskell, WinHugs ...<br />
|-<br />
| Thorkil Naur<br />
| naur<br />
| 10,11,12<br />
| Integer implementation (GMP), Porting, Factorization, Puzzles<br />
|-<br />
| Pepe Iborra<br />
| mnislaih<br />
| 10,11,12<br />
| GHC, the GHCi debugger, Darcs does look sexy, infrastructure & tools.<br />
|-<br />
| Dominic Steinitz<br />
|<br />
| 10,11,12<br />
| crypto, networking<br />
|-<br />
| Ben Lippmeier<br />
| benl23<br />
| 10,11,12<br />
| GHC bug squashing.<br />
|-<br />
| David Himmelstrup<br />
| Lemmih<br />
| 10,11,12<br />
| cabal-test, QuickCheck, Hackage, cabal-get.<br />
|-<br />
| Ross Paterson<br />
|<br />
| ?<br />
| Hackage<br />
|-<br />
| Simon Marlow<br />
| JaffaCake<br />
| 1 or 2 days<br />
| Everything<br />
|- <br />
| Björn Bringert<br />
| bringert<br />
| 10,11,12<br />
| Hackage, libraries, QuickCheck 2, GHC<br />
|-<br />
| Benedikt Schmidt<br />
| beschmi<br />
| 10,11,12<br />
| darcs, GHC-api+Emacs, crypto<br />
|-<br />
| Krasimir Angelov<br />
| <br />
| 10,11,12<br />
| Visual Haskell, Cabal<br />
|-<br />
| Peter Nuttall<br />
| psnl<br />
| 10,11,12<br />
| Hat, maybe cabal or ghc<br />
|-<br />
| Lennart Kolmodin<br />
| kolmodin<br />
| 10,11,12<br />
| Cabal, Binary ByteStrings, tools<br />
|}<br />
<br />
<br />
<br />
== Arriving ==<br />
<br />
If you are arriving via air and want to meet up for the trip up to<br />
Oxford, add you details here, so people can arrange to travel together:<br />
<br />
{|<br />
|-<br />
! Name<br />
! Airport<br />
! Arrival date/time<br />
! Flight <br />
|-<br />
| dons<br />
| Heathrow<br />
| 2007-01-10 6:20am<br />
| QF31<br />
|-<br />
| bringert<br />
| Heathrow<br />
| 2007-01-10 8:25am<br />
| SK523<br />
|-<br />
| pepe<br />
| Stansted<br />
| 2007-01-09 6:10pm<br />
| 3840<br />
|-<br />
| beschmi<br />
| Stansted<br />
| 2007-01-10 6:40am<br />
| 4U2332<br />
|-<br />
|}<br />
<br />
== Accomodation ==<br />
<br />
3 of us are staying at<br />
<br />
* [http://www.activehotels.com/servlet/xmlbrochure/index.do?hotelid=116496& Eurobar Cafe & Hotel]<br />
<br />
It's quite close to the center of town, and near the bus stop and train<br />
station.<br />
<br />
Other close by places that look good include:<br />
<br />
* [http://www.lintonlodge.activehotels.com/BBA&subid=R1543223 Linton Lodge]<br />
* [http://www.cotswoldlodgehotel.activehotels.com/BBA&subid=R1543223 Cotswold Lodge]<br />
<br />
=== YHA ===<br />
I(pepe) will go YHA in order to save some Euros (I need to stay for four nights, due to the few Valencia-London flight choices). If anyone else will go to YHA too, we could make a joint reservation.<br />
<br />
The hostel seems to be quite close to center and train station too.<br />
<br />
People staying at a YHA hostel:<br />
* pepe</div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Haskell_Quiz/Bytecode_Compiler/Solution_Lennart_Kolmodin&diff=8135Haskell Quiz/Bytecode Compiler/Solution Lennart Kolmodin2006-11-09T19:32:20Z<p>LennartKolmodin: Small fix</p>
<hr />
<div>Complete solution with parser (cheating using Parsec), compiler, interpreter, evaluator and QuickCheck properties.<br />
<br />
The Arbitrary monad doesn't work properly though, it generates too small or far too large trees.<br />
<br />
<haskell><br />
module Main where<br />
<br />
import Foreign<br />
import Control.Monad<br />
import Data.Bits<br />
import System.Random<br />
import Test.QuickCheck hiding (evaluate)<br />
import Text.ParserCombinators.Parsec<br />
import Text.ParserCombinators.Parsec.Expr<br />
<br />
-- Main -------------------------------------------------------------<br />
<br />
main :: IO ()<br />
main = do<br />
raw <- getContents<br />
case parse expr "stdin" raw of<br />
Left err -> print err<br />
Right e -> do<br />
let bytecode = compile e<br />
(interpretion:_) = interpret bytecode<br />
print e<br />
print bytecode<br />
print $ head (interpret bytecode)<br />
print (evaluate e)<br />
<br />
-- Data Structs -----------------------------------------------------<br />
<br />
data Expr = Op BinOp Expr Expr<br />
| Const Int<br />
deriving (Show,Eq)<br />
<br />
data BinOp = Add<br />
| Sub<br />
| Mul<br />
| Div<br />
| Pow<br />
| Mod<br />
deriving (Show,Eq)<br />
<br />
-- Parsing using Parsec ---------------------------------------------<br />
<br />
expr :: Parser Expr<br />
expr = buildExpressionParser table factor<br />
<?> "expression"<br />
<br />
table = [[op "**" (Op Pow) AssocLeft, op "%" (Op Mod) AssocLeft]<br />
,[op "*" (Op Mul) AssocLeft, op "/" (Op Div) AssocLeft]<br />
,[op "+" (Op Add) AssocLeft, op "-" (Op Sub) AssocLeft]<br />
] <br />
where<br />
op s f assoc = Infix (do{ try (string s); return f}) assoc<br />
<br />
factor = between (char '(') (char ')') expr<br />
<|> number<br />
<?> "simple expression"<br />
<br />
number :: Parser Expr<br />
number = liftM (Const . read) (many1 digit)<br />
<?> "number"<br />
<br />
-- Compiler ---------------------------------------------------------<br />
<br />
compile :: Expr -> [Word8]<br />
compile e = compile' e []<br />
<br />
constInstr = 0x01<br />
lconstInstr = 0x02<br />
addInstr = 0x0a<br />
subInstr = 0x0b<br />
mulInstr = 0x0c<br />
powInstr = 0x0d<br />
divInstr = 0x0e<br />
modInstr = 0x0f<br />
swapInstr = 0xa0<br />
<br />
w n = \c -> n : c<br />
w2 n = w (getByte n 1) . w (getByte n 0)<br />
w4 n = w (getByte n 3) . w (getByte n 2) . w (getByte n 1) . w (getByte n 0)<br />
compile' (Const c) | c <= 2^15 = w constInstr . w2 c<br />
| otherwise = w lconstInstr . w4 c<br />
compile' (Op op e1 e2) = compile' e1 . compile' e2 . w opInstr<br />
where<br />
opInstr = case op of<br />
Add -> addInstr<br />
Sub -> subInstr<br />
Mul -> mulInstr<br />
Div -> divInstr<br />
Pow -> powInstr<br />
Mod -> modInstr<br />
<br />
getByte v i = fromIntegral $ (v `shiftR` (i*8)) .&. 0xff <br />
<br />
-- Interpreter ------------------------------------------------------<br />
<br />
interpret :: [Word8] -> [Integer]<br />
interpret instrs = interpret' instrs []<br />
<br />
interpret' [] st = reverse st <br />
interpret' (0x01:a:b:rest) st = interpret' rest $<br />
((toInteger a `shift` 8) .|. <br />
(toInteger b)):st<br />
interpret' (0x02:a:b:c:d:rest) st = interpret' rest $<br />
((toInteger a `shift` 24) .|.<br />
(toInteger b `shift` 16) .|.<br />
(toInteger c `shift` 8) .|.<br />
(toInteger d)) : st<br />
interpret' (0xa0:rest) (b:a:st) = interpret' rest (a:b:st)<br />
interpret' (op:rest) (b:a:st) = interpret' rest (f a b:st)<br />
where f = case () of<br />
_ | op == addInstr -> (+)<br />
| op == subInstr -> (-)<br />
| op == mulInstr -> (*)<br />
| op == powInstr -> (^)<br />
| op == divInstr -> div<br />
| op == modInstr -> mod<br />
<br />
-- Evaluator --------------------------------------------------------<br />
<br />
evaluate :: Expr -> Integer<br />
evaluate (Const e) = toInteger e<br />
evaluate (Op op e1 e2) = evaluate e1 `f` evaluate e2<br />
where f = case op of<br />
Add -> (+)<br />
Sub -> (-)<br />
Mul -> (*)<br />
Div -> div<br />
Pow -> (^)<br />
Mod -> mod<br />
<br />
-- QuickCheck -------------------------------------------------------<br />
<br />
instance Arbitrary Expr where<br />
arbitrary = sized $ \n -> sizedExpr n<br />
where<br />
sizedExpr n = frequency<br />
[ (2, genConst)<br />
, (1, genOp n)<br />
]<br />
genConst = do<br />
range <- elements [(0,2^15), (2^15,2^32)]<br />
liftM Const $ choose range<br />
genOp n | n <= 0 = genConst<br />
| otherwise = do<br />
op <- arbitrary<br />
let n' = (n-1) `div` 4<br />
subtree = sizedExpr n'<br />
liftM2 (Op op) subtree subtree<br />
coarbitrary (Const n) = variant 0 . coarbitrary n<br />
coarbitrary (Op op e1 e2) = variant 1 . coarbitrary op . coarbitrary e1 . coarbitrary e2<br />
<br />
instance Arbitrary BinOp where<br />
arbitrary = elements [Add, Sub, Mul, Div, Pow, Mod]<br />
coarbitrary op = variant 0 . coarbitrary op<br />
<br />
depth (Const _) = 1<br />
depth (Op _ e1 e2) = 1 + max (depth e1) (depth e2)<br />
<br />
prop_id e =<br />
collect (depth e) $<br />
trivial (depth e == 1) $ <br />
head (interpret . compile $ e) == evaluate e<br />
</haskell></div>LennartKolmodinhttps://wiki.haskell.org/index.php?title=Haskell_Quiz/Bytecode_Compiler/Solution_Lennart_Kolmodin&diff=8134Haskell Quiz/Bytecode Compiler/Solution Lennart Kolmodin2006-11-09T19:31:12Z<p>LennartKolmodin: Initial page</p>
<hr />
<div>Complete solution with parser (cheating using Parsec), compiler, interpreter evaluator and QuickCheck properties.<br />
<br />
The Arbitrary monad doesn't work properly though, it generates too small or far too large trees.<br />
<br />
<haskell><br />
module Main where<br />
<br />
import Foreign<br />
import Control.Monad<br />
import Data.Bits<br />
import System.Random<br />
import Test.QuickCheck hiding (evaluate)<br />
import Text.ParserCombinators.Parsec<br />
import Text.ParserCombinators.Parsec.Expr<br />
<br />
-- Main -------------------------------------------------------------<br />
<br />
main :: IO ()<br />
main = do<br />
raw <- getContents<br />
case parse expr "stdin" raw of<br />
Left err -> print err<br />
Right e -> do<br />
let bytecode = compile e<br />
(interpretion:_) = interpret bytecode<br />
print e<br />
print bytecode<br />
print $ head (interpret bytecode)<br />
print (evaluate e)<br />
<br />
-- Data Structs -----------------------------------------------------<br />
<br />
data Expr = Op BinOp Expr Expr<br />
| Const Int<br />
deriving (Show,Eq)<br />
<br />
data BinOp = Add<br />
| Sub<br />
| Mul<br />
| Div<br />
| Pow<br />
| Mod<br />
deriving (Show,Eq)<br />
<br />
-- Parsing using Parsec ---------------------------------------------<br />
<br />
expr :: Parser Expr<br />
expr = buildExpressionParser table factor<br />
<?> "expression"<br />
<br />
table = [[op "**" (Op Pow) AssocLeft, op "%" (Op Mod) AssocLeft]<br />
,[op "*" (Op Mul) AssocLeft, op "/" (Op Div) AssocLeft]<br />
,[op "+" (Op Add) AssocLeft, op "-" (Op Sub) AssocLeft]<br />
] <br />
where<br />
op s f assoc = Infix (do{ try (string s); return f}) assoc<br />
<br />
factor = between (char '(') (char ')') expr<br />
<|> number<br />
<?> "simple expression"<br />
<br />
number :: Parser Expr<br />
number = liftM (Const . read) (many1 digit)<br />
<?> "number"<br />
<br />
-- Compiler ---------------------------------------------------------<br />
<br />
compile :: Expr -> [Word8]<br />
compile e = compile' e []<br />
<br />
constInstr = 0x01<br />
lconstInstr = 0x02<br />
addInstr = 0x0a<br />
subInstr = 0x0b<br />
mulInstr = 0x0c<br />
powInstr = 0x0d<br />
divInstr = 0x0e<br />
modInstr = 0x0f<br />
swapInstr = 0xa0<br />
<br />
w n = \c -> n : c<br />
w2 n = w (getByte n 1) . w (getByte n 0)<br />
w4 n = w (getByte n 3) . w (getByte n 2) . w (getByte n 1) . w (getByte n 0)<br />
compile' (Const c) | c <= 2^15 = w constInstr . w2 c<br />
| otherwise = w lconstInstr . w4 c<br />
compile' (Op op e1 e2) = compile' e1 . compile' e2 . w opInstr<br />
where<br />
opInstr = case op of<br />
Add -> addInstr<br />
Sub -> subInstr<br />
Mul -> mulInstr<br />
Div -> divInstr<br />
Pow -> powInstr<br />
Mod -> modInstr<br />
<br />
getByte v i = fromIntegral $ (v `shiftR` (i*8)) .&. 0xff <br />
<br />
-- Interpreter ------------------------------------------------------<br />
<br />
interpret :: [Word8] -> [Integer]<br />
interpret instrs = interpret' instrs []<br />
<br />
interpret' [] st = reverse st <br />
interpret' (0x01:a:b:rest) st = interpret' rest $<br />
((toInteger a `shift` 8) .|. <br />
(toInteger b)):st<br />
interpret' (0x02:a:b:c:d:rest) st = interpret' rest $<br />
((toInteger a `shift` 24) .|.<br />
(toInteger b `shift` 16) .|.<br />
(toInteger c `shift` 8) .|.<br />
(toInteger d)) : st<br />
interpret' (0xa0:rest) (b:a:st) = interpret' rest (a:b:st)<br />
interpret' (op:rest) (b:a:st) = interpret' rest (f a b:st)<br />
where f = case () of<br />
_ | op == addInstr -> (+)<br />
| op == subInstr -> (-)<br />
| op == mulInstr -> (*)<br />
| op == powInstr -> (^)<br />
| op == divInstr -> div<br />
| op == modInstr -> mod<br />
<br />
-- Evaluator --------------------------------------------------------<br />
<br />
evaluate :: Expr -> Integer<br />
evaluate (Const e) = toInteger e<br />
evaluate (Op op e1 e2) = evaluate e1 `f` evaluate e2<br />
where f = case op of<br />
Add -> (+)<br />
Sub -> (-)<br />
Mul -> (*)<br />
Div -> div<br />
Pow -> (^)<br />
Mod -> mod<br />
<br />
-- QuickCheck -------------------------------------------------------<br />
<br />
instance Arbitrary Expr where<br />
arbitrary = sized $ \n -> sizedExpr n<br />
where<br />
sizedExpr n = frequency<br />
[ (2, genConst)<br />
, (1, genOp n)<br />
]<br />
genConst = do<br />
range <- elements [(0,2^15), (2^15,2^32)]<br />
liftM Const $ choose range<br />
genOp n | n <= 0 = genConst<br />
| otherwise = do<br />
op <- arbitrary<br />
let n' = (n-1) `div` 4<br />
subtree = sizedExpr n'<br />
liftM2 (Op op) subtree subtree<br />
coarbitrary (Const n) = variant 0 . coarbitrary n<br />
coarbitrary (Op op e1 e2) = variant 1 . coarbitrary op . coarbitrary e1 . coarbitrary e2<br />
<br />
instance Arbitrary BinOp where<br />
arbitrary = elements [Add, Sub, Mul, Div, Pow, Mod]<br />
coarbitrary op = variant 0 . coarbitrary op<br />
<br />
depth (Const _) = 1<br />
depth (Op _ e1 e2) = 1 + max (depth e1) (depth e2)<br />
<br />
prop_id e =<br />
collect (depth e) $<br />
trivial (depth e == 1) $ <br />
head (interpret . compile $ e) == evaluate e<br />
</haskell></div>LennartKolmodin