https://wiki.haskell.org/api.php?action=feedcontributions&user=Axman6&feedformat=atomHaskellWiki - User contributions [en]2023-05-31T19:21:48ZUser contributionsMediaWiki 1.35.5https://wiki.haskell.org/index.php?title=Performance/Data_types&diff=60999Performance/Data types2016-08-10T08:07:36Z<p>Axman6: Add note about UnpackedSumTypes</p>
<hr />
<div>{{Performance infobox}}<br />
[[Category:Performance|Data types]]<br />
== Newtypes ==<br />
<br />
If your datatype has a single constructor with a single field, use a <tt>newtype</tt> declaration instead of a <tt>data</tt> declaration. The <tt>newtype</tt> constructor will be optimised away.<br />
<br />
In fact, <tt>newtypes</tt> cost nothing, so they can be used to document your code for free.<br />
<br />
== Strict fields ==<br />
<br />
The strictness annotation on constructor fields is used mainly to avoid space leaks. eg. in:<br />
<br />
data T = T !Int !Int<br />
<br />
we know that neither component of the <tt>T</tt> constructor can harbour a space leak, because both components must be fully evaluated to <tt>Int</tt>s when the constructor is built.<br />
<br />
However, bear in mind that strictness annotations can make performance ''worse''. A strictness annotation forces the compiler to ensure that the field is fully evaluated before building the constructor, and if it turns out that the field was already evaluated then this is just wasted work. Clever compilers attempt to detect when this is the case and optimise away the wasted evaluation, but it is hard to do this well (GHC does a poor job, currently).<br />
<br />
== GHC-specific techniques ==<br />
<br />
=== Single-constructor datatypes ===<br />
<br />
GHC loves single-constructor datatypes, such as tuples. A single-constructor datatype can be ''unpacked'' when it is passed to a strict function. For example, given this function:<br />
<br />
f (x,y) = ...<br />
<br />
GHC's strictness analyser will detect that f is strict in its argument, and compile the function like this:<br />
<br />
f z = case z of (x,y) -> f' x y<br />
f' x y = ...<br />
<br />
where f is called the ''wrapper'', and f' is called the ''worker''. The wrapper is inlined everywhere, so for example if you had a call to f like this:<br />
<br />
... f (3,4) ...<br />
<br />
this will end up being compiled to<br />
<br />
... f' 3 4 ...<br />
<br />
and the tuple has been completely optimised away. <br />
<br />
This ''only happens when the function argument is a single-constructor type''. Note that basic types like <tt>Int</tt> and <tt>Char</tt> count as single-constructor types, but not <tt>Integer</tt> and <tt>Bool</tt>.<br />
<br />
=== Unpacking strict fields ===<br />
<br />
This is one of the most powerful techniques you can use to optimise data structures When a constructor field is marked strict, and it is a single-constructor type, then it is possible to ask GHC to unpack the contents of the field directly in its parent. For example, given this:<br />
<br />
data T = T {-# UNPACK #-} !(Int,Float)<br />
<br />
GHC will represent the type T like this:<br />
<br />
data T = T Int Float<br />
<br />
eliminating the tuple. This is commonly used to put unboxed Ints directly in a constructor:<br />
<br />
data T = T {-# UNPACK #-} !Int<br />
<br />
will be represented as<br />
<br />
data T = T Int#<br />
<br />
where Int# is the unboxed integer type. You don't have to mention Int# in your program - just putting the {-# UNPACK #-} directive on the field is enough to tell GHC that this is the representation you want, and GHC will eliminate the boxing. The same result can be achieved without explicit UNPACK pragmas by using the ''-funbox-strict-fields'' optimisation.<br />
<br />
Note that {-# UNPACK #-} isn't the default, for the reason that it isn't always a good idea. If there is a pattern match on a constructor with an unpacked field, and the value of that field is passed to a non-strict function, GHC has to re-box the value before passing it on. If this re-boxing is common, then unpacking can be slower than not unpacking. The effect can be more acute if the type being unpacked has a lot of components (eg. a 17-tuple).<br />
<br />
For more information, see [http://www.haskell.org/ghc/docs/latest/html/users_guide/pragmas.html#unpack-pragma The UNPACK pragma] in GHC's User Guide.<br />
<br />
=== Enumerations ===<br />
<br />
Enumerations don't count as single-constructor types as far as GHC is concerned, so they don't benefit from unpacking when used as strict constructor fields, or strict function arguments. This is a deficiency in GHC, but it can be worked around - These restrictions are being worked on in https://ghc.haskell.org/trac/ghc/wiki/UnpackedSumTypes which will allow sum-types including "enums" to be unpacked and remove the need for the following solution once released.<br />
<br />
One way to work around it is to declare your enumeration as an int-like type, instead of the usual enumeration type. For example, if you have<br />
<br />
data Color = Red | Blue | Black<br />
<br />
you could write<br />
<br />
newtype Color = Color Int deriving (Eq,Ord,Enum)<br />
(red:blue:black:_) = [Color 1 ..]<br />
<br />
and now Color is a single-constructor unpackable datatype. However, we lose pattern matching; instead of<br />
<br />
f Red = ...<br />
<br />
we have to write<br />
<br />
f color | color == red = ...<br />
<br />
There's no performance penalty for this, though.<br />
<br />
Also, you have to hide the representation of Color appropriately so that invalid values can't be constructed (<tt>Color 99</tt>).</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2012&diff=46129AusHac20122012-06-20T11:09:41Z<p>Axman6: Added projects section</p>
<hr />
<div>= AusHac 2012 =<br />
<br />
=== What ===<br />
<br />
AusHac is a yearly Haskell Hackathon held in Sydney Australia each year, with the aim of bringing together those interested in Haskell, from complete beginners to people with the name Simon. 2012 will be the third year of the event.<br />
<br />
=== When ===<br />
<br />
This years AusHac will be held for three days, from Friday the 20th of July to Sunday the 22nd, from 9AM to 5PM (ish) each day.<br />
<br />
=== Where ===<br />
<br />
We're in a new location this year, Atlassian's headquarters on Darling Harbour.<br />
<br />
Atlassian<br/><br />
173/185 Sussex Street<br/><br />
Sydney NSW 2000, Australia<br/><br />
(02) 9262 1443<br/><br />
Map: goo.gl/maps/JoNg <br/><br />
<br />
=== Why ===<br />
<br />
There's lots of great haskell hackers in Australia and surrounding regions, and we don't often get a good chance to come together and see what everyone is doing and have a great time doing it.<br />
<br />
=== What do I need to do ===<br />
<br />
Go to the Sign Up form (tinyurl.com/AusHac2012SignUp) and fill in your details. If you've got questions feel free to email me (Alex Mason: axman6@gmail.com) or Ivan (Ivan Miljenovic: ivan.miljenovic@gmail.com) and we'll do our best to help you out.<br />
<br />
== Projects ==<br />
<br />
=== Haskell deployment ===<br />
Mark Wotton<br />
<br />
=== standalone haskell web services ===<br />
Mark Wotton<br />
<br />
=== Graph stuff ===<br />
Ivan Miljenovic<br />
(Thomas Sutton?)<br />
<br />
<br />
=== 0x10c assembler generation ===<br />
Julian Gamble<br />
<br />
=== PowerPC support in GHC ===<br />
Bernie Pope</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2012&diff=46128AusHac20122012-06-20T10:49:26Z<p>Axman6: Trying to add links</p>
<hr />
<div>= AusHac 2012 =<br />
<br />
=== What ===<br />
<br />
AusHac is a yearly Haskell Hackathon held in Sydney Australia each year, with the aim of bringing together those interested in Haskell, from complete beginners to people with the name Simon. 2012 will be the third year of the event.<br />
<br />
=== When ===<br />
<br />
This years AusHac will be held for three days, from Friday the 20th of July to Sunday the 22nd, from 9AM to 5PM (ish) each day.<br />
<br />
=== Where ===<br />
<br />
We're in a new location this year, Atlassian's headquarters on Darling Harbour.<br />
<br />
Atlassian<br/><br />
173/185 Sussex Street<br/><br />
Sydney NSW 2000, Australia<br/><br />
(02) 9262 1443<br/><br />
Map: goo.gl/maps/JoNg <br/><br />
<br />
=== Why ===<br />
<br />
There's lots of great haskell hackers in Australia and surrounding regions, and we don't often get a good chance to come together and see what everyone is doing and have a great time doing it.<br />
<br />
=== What do I need to do ===<br />
<br />
Go to the Sign Up form (tinyurl.com/AusHac2012SignUp) and fill in your details. If you've got questions feel free to email me (Alex Mason: axman6@gmail.com) or Ivan (Ivan Miljenovic: ivan.miljenovic@gmail.com) and we'll do our best to help you out.<br />
<br />
== Projects ==</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2012&diff=46127AusHac20122012-06-20T10:44:34Z<p>Axman6: /* Where */</p>
<hr />
<div>= AusHac 2012 =<br />
<br />
=== What ===<br />
<br />
AusHac is a yearly Haskell Hackathon held in Sydney Australia each year, with the aim of bringing together those interested in Haskell, from complete beginners to people with the name Simon. 2012 will be the third year of the event.<br />
<br />
=== When ===<br />
<br />
This years AusHac will be held for three days, from Friday the 20th of July to Sunday the 22nd, from 9AM to 5PM (ish) each day.<br />
<br />
=== Where ===<br />
<br />
We're in a new location this year, Atlassian's headquarters on Darling Harbour.<br />
<br />
Atlassian<br/><br />
173/185 Sussex Street<br/><br />
Sydney NSW 2000, Australia<br/><br />
(02) 9262 1443<br/><br />
Map: <br/><br />
<br />
=== Why ===<br />
<br />
There's lots of great haskell hackers in Australia and surrounding regions, and we don't often get a good chance to come together and see what everyone is doing and have a great time doing it.<br />
<br />
=== What do I need to do ===<br />
<br />
Go to the Sign Up form and fill in your details. If you've got questions feel free to email me (Alex Mason: axman6@gmail.com) or Ivan (Ivan Miljenovic: ivan.miljenovic@gmail.com) and we'll do our best to help you out.<br />
<br />
== Projects ==</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2012&diff=46126AusHac20122012-06-20T10:44:00Z<p>Axman6: /* Where */</p>
<hr />
<div>= AusHac 2012 =<br />
<br />
=== What ===<br />
<br />
AusHac is a yearly Haskell Hackathon held in Sydney Australia each year, with the aim of bringing together those interested in Haskell, from complete beginners to people with the name Simon. 2012 will be the third year of the event.<br />
<br />
=== When ===<br />
<br />
This years AusHac will be held for three days, from Friday the 20th of July to Sunday the 22nd, from 9AM to 5PM (ish) each day.<br />
<br />
=== Where ===<br />
<br />
We're in a new location this year, Atlassian's headquarters on Darling Harbour.<br />
<br />
Atlassian<br/><br />
173/185 Sussex Street<br/><br />
Sydney NSW 2000, Australia<br/><br />
(02) 9262 1443<br/><br />
Map: <br/><br />
<br />
=== Why ===<br />
<br />
There's lots of great haskell hackers in Australia and surrounding regions, and we don't often get a good chance to come together and see what everyone is doing and have a great time doing it.<br />
<br />
=== What do I need to do ===<br />
<br />
Go to the Sign Up form and fill in your details. If you've got questions feel free to email me (Alex Mason: axman6@gmail.com) or Ivan (Ivan Miljenovic: ivan.miljenovic@gmail.com) and we'll do our best to help you out.<br />
<br />
== Projects ==</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2012&diff=46125AusHac20122012-06-20T10:40:19Z<p>Axman6: Initial details added</p>
<hr />
<div>= AusHac 2012 =<br />
<br />
=== What ===<br />
<br />
AusHac is a yearly Haskell Hackathon held in Sydney Australia each year, with the aim of bringing together those interested in Haskell, from complete beginners to people with the name Simon. 2012 will be the third year of the event.<br />
<br />
=== When ===<br />
<br />
This years AusHac will be held for three days, from Friday the 20th of July to Sunday the 22nd, from 9AM to 5PM (ish) each day.<br />
<br />
=== Where ===<br />
<br />
We're in a new location this year, Atlassian's headquarters on Darling Harbour.<br />
<br />
Atlassian<br />
173/185 Sussex Street<br />
Sydney NSW 2000, Australia<br />
(02) 9262 1443<br />
Map: <br />
<br />
=== Why ===<br />
<br />
There's lots of great haskell hackers in Australia and surrounding regions, and we don't often get a good chance to come together and see what everyone is doing and have a great time doing it.<br />
<br />
=== What do I need to do ===<br />
<br />
Go to the Sign Up form and fill in your details. If you've got questions feel free to email me (Alex Mason: axman6@gmail.com) or Ivan (Ivan Miljenovic: ivan.miljenovic@gmail.com) and we'll do our best to help you out.<br />
<br />
== Projects ==</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2011&diff=39460AusHac20112011-04-16T06:23:47Z<p>Axman6: </p>
<hr />
<div>AusHac 2011 will be held at UNSW from the '''8th to the 10th of July''' 2011, at the [http://maps.google.com/maps?cid=9827534508363927277&hl=en&ie=UTF8&hq=&hnear=&ll=-33.918168,151.231077&spn=0.010773,0.022702&t=h&z=16&iwloc=A Computer Science and Engineering building] at UNSW (Bilding K17), in room 113.<br />
<br />
Last year's AusHac was a huge success, and we'd love to make this years even bigger and better, but for that, we need you!<br />
<br />
If you are interested on coming, please fill in our [http://axman6.wufoo.com/forms/aushac-2011-sign-up/ sign up] form so we have an idea of numbers. Signup is required to gain access to the university network. If you're not sure you can come, fill it in anyway and leave a comment down the bottom. '''We'd rather be ready for too many people than not enough!'''<br />
<br />
== Project ideas ==<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
== Related Links ==<br />
<br />
* [[AusHac2010]]<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
[[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2011&diff=39459AusHac20112011-04-16T06:22:53Z<p>Axman6: Initial page content</p>
<hr />
<div>AusHac 2011 will be held at UNSW from the '''8th to the 10th of July''' 2011, at the [http://maps.google.com/maps?cid=9827534508363927277&hl=en&ie=UTF8&hq=&hnear=&ll=-33.918168,151.231077&spn=0.010773,0.022702&t=h&z=16&iwloc=A Computer Science and Engineering building] at UNSW (Bilding K17), in room 113.<br />
<br />
Last year's AusHac was a huge success, and we'd love to make this years even bigger and better, but for that, we need you!<br />
<br />
If you are interested on coming, please fill in our [http://axman6.wufoo.com/forms/aushac-2011-sign-up/ sign up] form so we have an idea of numbers. Signup is required to gain access to the university network. If you're not sure you can come, fill it in anyway and leave a comment down the bottom. '''We'd rather be ready for too many people than not enough!'''<br />
<br />
== Project ideas ==<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
* [[Category:Events]]<br />
<br />
* [[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=Tutorials&diff=38282Tutorials2011-01-18T12:52:32Z<p>Axman6: /* Best places to start */</p>
<hr />
<div>==Introductions to Haskell==<br />
<br />
These are the recommended places to start learning, short of buying a textbook.<br />
<br />
=== Best places to start ===<br />
<br />
;[http://learnyouahaskell.com Learn You a Haskell for Great Good! (LYAH)]<br />
: Nicely illustrated tutorial showing Haskell concepts while interacting in GHCi. Written and drawn by Miran Lipovača.<br />
<br />
;[http://book.realworldhaskell.org/ Real World Haskell (RWH)]<br />
: A free online version of the complete book, with numerous reader-submitted comments. RWH is best suited for people who know the fundamentals of haskell already, and can write basic Haskell programs themselves already. It makes a great follow up after finishing LYAH. It can easily be read cover-to-cover, or you can focus on the chapters that interest you most, or when you find an idea you don't yet understand.<br />
<br />
;[http://darcs.haskell.org/yaht/yaht.pdf Yet Another Haskell Tutorial (YAHT)]<br />
:By Hal Daume III et al. A recommended tutorial for Haskell that is still under construction but covers already much ground. Also a classic text. Now available [http://en.wikibooks.org/wiki/Haskell/YAHT as a wikibook].<br />
<br />
;[http://en.wikibooks.org/wiki/Haskell Haskell Wikibook] <br />
:A communal effort by several authors to produce the definitive Haskell textbook. Its very much a work in progress at the moment, and contributions are welcome.<br />
<br />
;[http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Write Yourself a Scheme in 48 Hours in Haskell]<br />
:A Haskell Tutorial, by Jonathan Tang. Most Haskell tutorials on the web seem to take a language-reference-manual approach to teaching. They show you the syntax of the language, a few language constructs, and then have you construct a few simple functions at the interactive prompt. The "hard stuff" of how to write a functioning, useful program is left to the end, or sometimes omitted entirely. This tutorial takes a different tack. You'll start off with command-line arguments and parsing, and progress to writing a fully-functional Scheme interpreter that implements a good-sized subset of R5RS Scheme. Along the way, you'll learn Haskell's I/O, mutable state, dynamic typing, error handling, and parsing features. By the time you finish, you should be fairly fluent in both Haskell and Scheme.<br />
<br />
;[http://acm.wustl.edu/functional/haskell.php How to Learn Haskell]<br />
:Some students at Washington University in St. Louis documented the path they took to learning Haskell and put together a nice meta-tutorial to guide beginners through some of the available resources. Experienced programmers looking for some quick code examples may be interested in their [http://acm.wustl.edu/functional/hs-breads.php breadcrumbs].<br />
<br />
=== More tutorials ===<br />
<br />
;[http://www.haskell.org/tutorial/ A Gentle Introduction to Haskell] :By Paul Hudak, John Peterson, and Joseph H. Fasel. The title is misleading. Some knowledge of another functional programming language is expected. The emphasis is on the type system and those features which are really new in Haskell (compared to other functional programming languages). A classic, but not for the faint of heart (it's not so gentle). Also available in [http://gorgonite.developpez.com/livres/traductions/haskell/gentle-haskell/ French] and [http://www.rsdn.ru/article/haskell/haskell_part1.xml Russian].<br />
<br />
;[[H-99: Ninety-Nine Haskell Problems]]<br />
:A collection of programming puzzles, with Haskell solutions. Solving these is a great way to get into Haskell programming.<br />
<br />
;[http://www.haskell.org/~pairwise/intro/intro.html Haskell Tutorial for C Programmers]<br />
:By Eric Etheridge. From the intro: "This tutorial assumes that the reader is familiar with C/C++, Python, Java, or Pascal. I am writing for you because it seems that no other tutorial was written to help students overcome the difficulty of moving from C/C++, Java, and the like to Haskell."<br />
<br />
;[http://www-106.ibm.com/developerworks/edu/os-dw-linuxhask-i.html Beginning Haskell] <br />
:From IBM developerWorks. This tutorial targets programmers of imperative languages wanting to learn about functional programming in the language Haskell. If you have programmed in languages such as C, Pascal, Fortran, C++, Java, Cobol, Ada, Perl, TCL, REXX, JavaScript, Visual Basic, or many others, you have been using an imperative paradigm. This tutorial provides a gentle introduction to the paradigm of functional programming, with specific illustrations in the Haskell 98 language. (Free registration required.)<br />
<br />
;[http://www.informatik.uni-bonn.de/~ralf/teaching/Hskurs_toc.html Online Haskell Course] <br />
:By Ralf Hinze (in German).<br />
<br />
;[http://www.cs.chalmers.se/~rjmh/tutorials.html Tutorial Papers in Functional Programming].<br />
:A collection of links to other Haskell tutorials, from John Hughes.<br />
<br />
;[http://www.cs.ou.edu/cs1323h/textbook/haskell.shtml Two Dozen Short Lessons in Haskell] <br />
:By Rex Page. A draft of a textbook on functional programming, available by ftp. It calls for active participation from readers by omitting material at certain points and asking the reader to attempt to fill in the missing information based on knowledge they have already acquired. The missing information is then supplied on the reverse side of the page. <br />
<br />
;[ftp://ftp.geoinfo.tuwien.ac.at/navratil/HaskellTutorial.pdf Haskell-Tutorial] <br />
:By Damir Medak and Gerhard Navratil. The fundamentals of functional languages for beginners. <br />
<br />
;[http://video.s-inf.de/#FP.2005-SS-Giesl.(COt).HD_Videoaufzeichnung Video Lectures] <br />
:Lectures (in English) by Jürgen Giesl. About 30 hours in total, and great for learning Haskell. The lectures are 2005-SS-FP.V01 through 2005-SS-FP.V26. Videos 2005-SS-FP.U01 through 2005-SS-FP.U11 are exercise answer sessions, so you probably don't want those.<br />
<br />
;[http://www.cs.utoronto.ca/~trebla/fp/ Albert's Functional Programming Course] <br />
:A 15 lesson introduction to most aspects of Haskell.<br />
<br />
;[http://www.iceteks.com/articles.php/haskell/1 Introduction to Haskell]<br />
:By Chris Dutton, An "attempt to bring the ideas of functional programming to the masses here, and an experiment in finding ways to make it easy and interesting to follow".<br />
<br />
;[http://www.csc.depauw.edu/~bhoward/courses/0203Spring/csc122/haskintro/ An Introduction to Haskell]<br />
:A brief introduction, by Brian Howard.<br />
<br />
;[http://web.syntaxpolice.org/lectures/haskellTalk/slides/index.html Introduction to Haskell]<br />
:By Isaac Jones (2003).<br />
<br />
;[http://www.linuxjournal.com/article/9096 Translating Haskell into English]<br />
:By Shannon Behrens, a glimpse of the Zen of Haskell, without requiring that they already be Haskell converts.<br />
<br />
;[http://www.shlomifish.org/lecture/Perl/Haskell/slides/ Haskell for Perl Programmers]<br />
:Brief introduction to Haskell, with a view to what perl programmers are interested in<br />
<br />
;[http://lisperati.com/haskell/ How To Organize a Picnic on a Computer]<br />
:Fun introduction to Haskell, step by step building of a program to seat people at a planned picnic, based on their similarities using data from a survey and a map of the picnic location.<br />
<br />
;[http://cs.wwc.edu/KU/PR/Haskell.html Haskell Tutorial]<br />
<br />
;[http://www.lisperati.com/haskell/ Conrad Barski's Haskell tutorial .. with robots]<br />
<br />
;[[Media:Introduction.pdf|Frederick Ross's Haskell introduction]]<br />
<br />
;[http://de.wikibooks.org/wiki/Haskell Dirk's Haskell Tutorial]<br />
:in German for beginners by a beginner. Not so deep, but with a lot examples with very small steps.<br />
<br />
;[http://www.crsr.net/Programming_Languages/SoftwareTools/index.html Software Tools in Haskell]<br />
:A tutorial for advanced readers<br />
<br />
<br />
== Motivation for using Haskell ==<br />
<br />
;[http://www.cse.chalmers.se/~rjmh/Papers/whyfp.html Why Functional Programming Matters] <br />
:By [http://www.cse.chalmers.se/~rjmh/ John Hughes], The Computer Journal, Vol. 32, No. 2, 1989, pp. 98 - 107. Also in: David A. Turner (ed.): Research Topics in Functional Programming, Addison-Wesley, 1990, pp. 17 - 42.<BR> Exposes the advantages of functional programming languages. Demonstrates how higher-order functions and lazy evaluation enable new forms of modularization of programs.<br />
<br />
;[[Why Haskell matters]] <br />
:Discussion of the advantages of using Haskell in particular. An excellent article.<br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1997/224/index.html Higher-order + Polymorphic = Reusable] <br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]. Unpublished, May 1997.<BR> <STRONG>Abstract:</STRONG> This paper explores how certain ideas in object oriented languages have their correspondents in functional languages. In particular we look at the analogue of the iterators of the C++ standard template library. We also give an example of the use of constructor classes which feature in Haskell 1.3 and Gofer.<br />
<br />
;[http://www-128.ibm.com/developerworks/java/library/j-cb07186.html Explore functional programming with Haskell]<br />
:Introduction to the benefits of functional programming in Haskell by Bruce Tate.<br />
<br />
== Blog articles ==<br />
<br />
There are a large number of tutorials covering diverse Haskell topics<br />
published as blogs. Some of the best of these articles are collected<br />
here:<br />
<br />
;[[Blog articles]]<br />
<br />
==Practical Haskell==<br />
<br />
These tutorials examine using Haskell to writing complex real-world applications<br />
<br />
;[http://research.microsoft.com/%7Esimonpj/Papers/marktoberdorf Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell]<br />
:Simon Peyton Jones. Presented at the 2000 Marktoberdorf Summer School. In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1-58603-1724, 2001, pp47-96. The standard reference for monadic IO in GHC/Haskell. <br><strong>Abstract:</strong>Functional programming may be beautiful, but to write real applications we must grapple with awkward real-world issues: input/output, robustness, concurrency, and interfacing to programs written in other languages.<br />
<br />
;[[Hitchhikers Guide to the Haskell]]<br />
: Tutorial for C/Java/OCaml/... programers by Dmitry Astapov. From the intro: "This text intends to introduce the reader to the practical aspects of Haskell from the very beginning (plans for the first chapters include: I/O, darcs, Parsec, QuickCheck, profiling and debugging, to mention a few)".<br />
<br />
;[http://haskell.org/haskellwiki/IO_inside Haskell I/O inside: Down the Rabbit's Hole]<br />
:By Bulat Ziganshin (2006), a comprehensive tutorial on using IO monad.<br />
<br />
;[http://web.archive.org/web/20060622030538/http://www.reid-consulting-uk.ltd.uk/docs/ffi.html A Guide to Haskell's Foreign Function Interface]<br />
:A guide to using the foreign function interface extension, using the rich set of functions in the Foreign libraries, design issues, and FFI preprocessors.<br />
<br />
;[[Haskell IO for Imperative Programmers]]<br />
:A short introduction to IO from the perspective of an imperative programmer.<br />
<br />
;[[A brief introduction to Haskell|A Brief Introduction to Haskell]]<br />
:A translation of the article, [http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html Introduction to OCaml], to Haskell.<br />
<br />
;[[Roll your own IRC bot]]<br />
:This tutorial is designed as a practical guide to writing real world code in Haskell and hopes to intuitively motivate and introduce some of the advanced features of Haskell to the novice programmer, including monad transformers. Our goal is to write a concise, robust and elegant IRC bot in Haskell.<br />
<br />
;[http://haskell.org/gtk2hs/docs/tutorial/glade/ Glade Tutorial (GUI Programming)]<br />
:For the absolute beginner in both Glade and Gtk2Hs. Covers the basics of Glade and how to access a .glade file and widgets in Gtk2Hs. Estimated learning time: 2 hours.<br />
;[http://www.muitovar.com/glade/es-index.html Tutorial de Glade]<br />
:A Spanish translation of the Glade tutorial<br />
<br />
;[http://www.muitovar.com/gtk2hs/index.html Gtk2Hs Tutorial]<br />
: An extensive Gtk2Hs programming guide, based on the GTK+2.0 tutorial by Tony Gale and Ian Main. This tutorial on GUI programming with Gtk2Hs has 22 chapters in 7 sections, plus an appendix on starting drawing with Cairo. A Spanish translation and source code of the examples are also available.<br />
<br />
;Applications of Functional Programming<br />
:Colin Runciman and David Wakeling (ed.), UCL Press, 1995, ISBN 1-85728-377-5 HB. From the cover:<blockquote>This book is unique in showcasing real, non-trivial applications of functional programming using the Haskell language. It presents state-of-the-art work from the FLARE project and will be an invaluable resource for advanced study, research and implementation.</blockquote><br />
<br />
;[[DealingWithBinaryData]] a guide to bytestrings, the various <tt>Get</tt> monads and the <tt>Put</tt> monad.<br />
<br />
;[[Internationalization of Haskell programs]]<br />
:Short tutorial on how to use GNU gettext utility to make applications, written on Haskell, multilingual.<br />
<br />
===Testing===<br />
<br />
;[http://blog.moertel.com/articles/2006/10/31/introductory-haskell-solving-the-sorting-it-out-kata Small overview of QuickCheck]<br />
<br />
;[[Introduction to QuickCheck]]<br />
<br />
==Reference material==<br />
<br />
;[http://haskell.org/haskellwiki/Category:Tutorials A growing list of Haskell tutorials on a diverse range of topics]<br />
:Available on this wiki<br />
<br />
;[http://haskell.org/haskellwiki/Category:How_to "How to"-style tutorials and information]<br />
<br />
;[http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelude.html A Tour of the Haskell Prelude (basic functions)] <br />
:By Bernie Pope and Arjan van IJzendoorn.<br />
<br />
;[http://cs.anu.edu.au/Student/comp1100/haskell/tourofsyntax.html Tour of the Haskell Syntax] <br />
:By Arjan van IJzendoorn.<br />
<br />
;[http://zvon.org/other/haskell/Outputglobal/index.html Haskell Reference] <br />
:By Miloslav Nic.<br />
<br />
;[http://members.chello.nl/hjgtuyl/tourdemonad.html A tour of the Haskell Monad functions]<br />
:By Henk-Jan van Tuyl.<br />
<br />
;[http://www.cse.unsw.edu.au/~en1000/haskell/inbuilt.html Useful Haskell functions]<br />
:An explanation for beginners of many Haskell functions that are predefined in the Haskell Prelude.<br />
<br />
;[http://www.cs.chalmers.se/Cs/Grundutb/Kurser/d1pt/d1pta/ListDoc/ Haskell's Standard List Functions]<br />
:A tour of the standard Haskell functions, directed by what you want to achieve<br />
<br />
;[http://haskell.org/ghc/docs/latest/html/libraries/ Documentation for the standard libraries]<br />
:Complete documentation of the standard Haskell libraries.<br />
<br />
;[http://www.haskell.org/haskellwiki/Category:Idioms Haskell idioms]<br />
:A collection of articles describing some common Haskell idioms. Often quite advanced.<br />
<br />
;[http://www.haskell.org/haskellwiki/Blow_your_mind Useful idioms]<br />
:A collection of short, useful Haskell idioms.<br />
<br />
;[http://www.haskell.org/haskellwiki/Programming_guidelines Programming guidelines]<br />
:Some Haskell programming and style conventions.<br />
<br />
;[http://www.md.chalmers.se/~rjmh/Combinators/LightningTour/index.htm Lightning Tour of Haskell]<br />
:By John Hughes, as part of a Chalmers programming course<br />
<br />
;[http://www.cs.chalmers.se/~augustss/AFP/manuals/haskeller.dvi.gz The Little Haskeller] <br />
:By Cordelia Hall and John Hughes. 9. November 1993, 26 pages. An introduction using the Chalmers Haskell B interpreter (hbi). Beware that it relies very much on the user interface of hbi which is quite different for other Haskell systems, and the tutorials cover Haskell 1.2 , not Haskell 98.<br />
<br />
;[http://www.cs.uu.nl/people/jeroen/courses/fp-eng.pdf Functional Programming]<br />
:By Jeroen Fokker, 1995. (153 pages, 600 KB). Textbook for learning functional programming with Gofer (an older implementation of Haskell). Here without Chapters&nbsp;6 and&nbsp;7.<br />
<br />
== Comparisons to other languages ==<br />
<br />
Articles constrasting feature of Haskell with other languages.<br />
<br />
;[http://programming.reddit.com/goto?id=nq1k Haskell versus Scheme]<br />
:Mark C. Chu-Carroll, Haskell and Scheme: Which One and Why?<br />
<br />
;[http://wiki.python.org/moin/PythonVsHaskell Comparing Haskell and Python]<br />
:A short overview of similarities and differences between Haskell and Python.<br />
<br />
;[http://programming.reddit.com/goto?id=nwm2 Monads in OCaml]<br />
:Syntax extension for monads in OCaml<br />
<br />
;[http://www.shlomifish.org/lecture/Perl/Haskell/slides/ Haskell for Perl programmers]<br />
:Short intro for perlers<br />
<br />
;[[A_brief_introduction_to_Haskell|Introduction to Haskell]] versus [http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html Introduction to OCaml].<br />
<br />
;[http://www.thaiopensource.com/relaxng/derivative.html An algorithm for RELAX NG validation]<br />
:by James Clark (of RELAX NG fame). Describes an algorithm for validating an XML document against a RELAX NG schema, uses Haskell to describe the algorithm. The algorithm in Haskell and Java is then [http://www.donhopkins.com/drupal/node/117 discussed here].<br />
<br />
;[http://mult.ifario.us/articles/2006/10/11/first-steps-with-haskell-for-web-applications Haskell + FastCGI versus Ruby on Rails]<br />
:A short blog entry documenting performance results with ruby on rails and Haskell with fastcgi<br />
<br />
;[http://haskell.org/papers/NSWC/jfp.ps Haskell vs. Ada vs. C++ vs. Awk vs. ..., An Experiment in Software Prototyping Productivity] (postscript)<br />
:Paul Hudak and Mark P. Jones, 16 pages.<blockquote>Description of the results of an experiment in which several conventional programming languages, together with the functional language Haskell, were used to prototype a Naval Surface Warfare Center requirement for Geometric Region Servers. The resulting programs and development metrics were reviewed by a committee chosen by the US Navy. The results indicate that the Haskell prototype took significantly less time to develop and was considerably more concise and easier to understand than the corresponding prototypes written in several different imperative languages, including Ada and C++. </blockquote> <br />
<br />
;[http://www.osl.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf A Comparative Study of Language Support for Generic Programming] (pdf)<br />
:Ronald Garcia, Jaakko Jrvi, Andrew Lumsdaine, Jeremy G. Siek, and Jeremiah Willcock. In Proceedings of the 2003 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA'03), October 2003.<blockquote>An interesting comparison of generic programming support across languages, including: Haskell, SML, C++, Java, C#. Haskell supports all constructs described in the paper -- the only language to do so. </blockquote><br />
<br />
;[http://homepages.inf.ed.ac.uk/wadler/realworld/index.html Functional Programming in the Real World]<br />
:A list of functional programs applied to real-world tasks. The main criterion for being real-world is that the program was written primarily to perform some task, not primarily to experiment with functional programming. Functional is used in the broad sense that includes both `pure' programs (no side effects) and `impure' (some use of side effects). Languages covered include CAML, Clean, Erlang, Haskell, Miranda, Scheme, SML, and others.<br />
<br />
;[http://www.defmacro.org/ramblings/lisp-in-haskell.html Lisp in Haskell]<br />
:Writing A Lisp Interpreter In Haskell, a tutorial<br />
<br />
== Teaching Haskell ==<br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1997/208/index.html Where do I begin? A problem solving approach to teaching functional programming]<br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]. In Krzysztof Apt, Pieter Hartel, and Paul Klint, editors, First International Conference on Declarative Programming Languages in Education. Springer-Verlag, September 1997. <br> <STRONG>Abstract:</STRONG> This paper introduces a problem solving method for teaching functional programming, based on Polya's `How To Solve It', an introductory investigation of mathematical method. We first present the language independent version, and then show in particular how it applies to the development of programs in Haskell. The method is illustrated by a sequence of examples and a larger case study. <br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1995/214/index.html Functional programming through the curriculum]<br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson] and Steve Hill. In Pieter H. Hartel and Rinus Plasmeijer, editors, Functional Programming Languages in Education, LNCS 1022, pages 85-102. Springer-Verlag, December 1995. <br> <STRONG>Abstract:</STRONG> This paper discusses our experience in using a functional language in topics across the computer science curriculum. After examining the arguments for taking a functional approach, we look in detail at four case studies from different areas: programming language semantics, machine architectures, graphics and formal languages. <br />
<br />
;[http://www.cse.unsw.edu.au/~chak/papers/CK02a.html The Risks and Benefits of Teaching Purely Functional Programming in First Year]<br />
:By [http://www.cse.unsw.edu.au/~chak Manuel M. T. Chakravarty] and [http://www.cse.unsw.edu.au/~keller Gabriele Keller]. Journal of Functional Programming 14(1), pp 113-123, 2004. An earlier version of this paper was presented at Functional and Declarative Programming in Education (FDPE02). <br> <strong>Abstract</strong> We argue that teaching purely functional programming as such in freshman courses is detrimental to both the curriculum as well as to promoting the paradigm. Instead, we need to focus on the more general aims of teaching elementary techniques of programming and essential concepts of computing. We support this viewpoint with experience gained during several semesters of teaching large first-year classes (up to 600 students) in Haskell. These classes consisted of computer science students as well as students from other disciplines. We have systematically gathered student feedback by conducting surveys after each semester. This article contributes an approach to the use of modern functional languages in first year courses and, based on this, advocates the use of functional languages in this setting.<br />
<br />
<br />
==Using monads==<br />
<br />
See also the [[Monad]] HaskellWiki page.<br />
<br />
<br />
===Recommended tutorials===<br />
<br />
;[http://mvanier.livejournal.com/3917.html Mike Vanier's monad tutorial]<br />
:Recommended by David Balaban.<br />
<br />
;[http://www.haskell.org/all_about_monads/html/index.html All About Monads] <br />
:By Jeff Newbern. This tutorial aims to explain the concept of a monad and its application to functional programming in a way that is easy to understand and useful to beginning and intermediate Haskell programmers. Familiarity with the Haskell language is assumed, but no prior experience with monads is required. <br />
<br />
;[[Monads as computation]]<br />
:A tutorial which gives a broad overview to motivate the use of monads as an abstraction in functional programming and describe their basic features. It makes an attempt at showing why they arise naturally from some basic premises about the design of a library.<br />
<br />
;[[Monads as containers]]<br />
:A tutorial describing monads from a rather different perspective: as an abstraction of container-types, rather than an abstraction of types of computation.<br />
<br />
;[http://uebb.cs.tu-berlin.de/~magr/pub/Transformers.en.html Monad Transformers Step by Step]<br />
:By Martin Grabm&uuml;ller. A small tutorial on using monad transformers. In contrast to others found on the web, it concentrates on using them, not on their implementation.<br />
<br />
;[[What a Monad is not]]<br />
<br />
;[http://noordering.wordpress.com/2009/03/31/how-you-shouldnt-use-monad/ How you should(n’t) use Monads]<br />
<br />
;[http://www.sampou.org/haskell/a-a-monads/html/index.html モナドのすべて [All About Monads]]<br />
:A translation of Jeff Newbern's tutorial "All About Monads" into Japanese.<br />
<br />
===Parser===<br />
<br />
;[http://www.haskell.org/sitewiki/images/c/c6/ICMI45-paper-en.pdf The Parser monad and other monad (i.e. a monad with state and I/O string)]. <br />
:The parser monad is used to build modular, flexible, parsers. <br />
<br />
;[http://www.haskell.org/sitewiki/images/c/c6/ICMI45-paper-en.pdf How to build a monadic interpreter in one day] (pdf)<br />
:By Dan Popa. A small tutorial on how to build a language in one day, using the Parser Monad in the front end and a monad with state and I/O string in the back end. Read it if you are interested in learning: <br />
:# language construction and <br />
:# interpreter construction<br />
<br />
===More tutorials===<br />
<br />
;[http://stefan-klinger.de/files/monadGuide.pdf The Haskell Programmer's Guide to the IO Monad - Don't Panic.] <br />
:By Stefan Klinger. This report scratches the surface of category theory, an abstract branch of algebra, just deep enough to find the monad structure. It seems well written.<br />
<br />
;[http://www.prairienet.org/~dsb/monads.htm A (hopefully) painless introduction to monads] <br />
:By Dan Bensen. A straightforward beginner's guide with intuitive explanations and examples.<br />
<br />
;[http://www-users.mat.uni.torun.pl/~fly/materialy/fp/haskell-doc/Monads.html What the hell are Monads?] <br />
:By Noel Winstanley. A basic introduction to monads, monadic programming and IO. This introduction is presented by means of examples rather than theory, and assumes a little knowledge of Haskell. <br />
<br />
;[http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm Monads for the Working Haskell Programmer -- a short tutorial]<br />
:By Theodore Norvell. <br />
<br />
;[http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html You Could Have Invented Monads! (And Maybe You Already Have.)]<br />
:A short tutorial on monads, introduced from a pragmatic approach, with less category theory references <br />
<br />
;[http://www.cs.chalmers.se/~augustss/AFP/monads.html Systematic Design of Monads]<br />
:By John Hughes and Magnus Carlsson. Many useful monads can be designed in a systematic way, by successively adding facilities to a trivial monad. The capabilities that can be added in this way include state, exceptions, backtracking, and output. Here we give a brief description of the trivial monad, each kind of extension, and sketches of some interesting operations that each monad supports.<br />
<br />
;[[Meet Bob The Monadic Lover]]<br />
:By Andrea Rossato. A by-the-author-supposed-to-be funny and short introduction to Monads, with code but without any reference to category theory: what monads look like and what they are useful for, from the perspective of a ... lover. (There is also the slightly more serious [[The Monadic Way]] by the same author.)<br />
<br />
;[http://www.haskell.org/pipermail/haskell-cafe/2006-November/019190.html Monstrous Monads]<br />
:Andrew Pimlott's humourous introduction to monads, using the metaphor of "monsters".<br />
<br />
;[http://strabismicgobbledygook.wordpress.com/2010/03/06/a-state-monad-tutorial/ A State Monad Tutorial]<br />
:A detailed tutorial with simple but practical examples.<br />
<br />
;Computational monads on Reddit, by [http://programming.reddit.com/info/ox6s/comments/coxiv tmoertel] and [http://programming.reddit.com/info/ox6s/comments/coxoh dons].<br />
<br />
;[http://www.loria.fr/~kow/monads/index.html Of monads and space suits]<br />
:By Eric Kow.<br />
<br />
;[[The Monadic Way]]<br />
<br />
;[http://www.alpheccar.org/fr/posts/show/60 Three kind of monads] : sequencing, side effects or containers<br />
<br />
;[[Simple monad examples]]<br />
<br />
;[http://en.wikipedia.org/wiki/Monads_in_functional_programming Article on monads on Wikipedia]<br />
<br />
;[[IO inside]] page<br />
:Explains why I/O in Haskell is implemented with a monad.<br />
<br />
;[http://haskell.org/haskellwiki/Blog_articles#Monads Blog articles]<br />
<br />
;[[Monad Transformers Explained]]<br />
<br />
;[http://www.muitovar.com/monad/moncow.html The Greenhorn's Guide to becoming a Monad Cowboy]<br />
:Covers basics, with simple examples, in a ''for dummies'' style. Includes monad transformers and monadic functions. Estimated learning time 2-3 days.<br />
<br />
;[http://ertes.de/articles/monads.html Understanding Haskell Monads]<br />
<br />
;[http://www.reddit.com/r/programming/comments/64th1/monads_in_python_in_production_code_you_can_and/c02u9mb A very clear explanation by 808140]<br />
<br />
;[[MonadCont under the hood]]<br />
:A detailed description of the ''Cont'' data type and its monadic operations, including the class ''MonadCont''.<br />
<br />
See also [[Research papers/Monads and arrows]]<br />
<br />
<br />
<br />
==Workshops on advanced functional programming==<br />
<br />
;[http://compilers.iecc.com/comparch/article/95-04-024 Advanced Functional Programming: 1st International Spring School on Advanced Functional Programming Techniques], Bastad, Sweden, May 24 - 30, 1995. Tutorial Text (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cse.ogi.edu/PacSoft/conf/summerschool96.html Advanced Functional Programming: 2nd International School], Olympia, Wa, Usa, August 26-30, 1996 Tutorial Text (Lecture Notes in Computer Science) <br />
<br />
;[http://alfa.di.uminho.pt/~afp98/ Advanced Functional Programming: 3rd International School], AFP'98, Braga, Portugal, September 12-19, 1998, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cs.uu.nl/~johanj/afp/afp4/ Advanced Functional Programming: 4th International School], AFP 2002, Oxford, UK, August 19-24, 2002, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cs.ut.ee/afp04/ Advanced Functional Programming: 5th International School], AFP 2004, Tartu, Estonia, August 14-21, 2004, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
More advanced materials available from the [[Conferences|conference proceedings]], and the [[Research papers]] collection.<br />
<br />
<br />
[[Category:Tutorials]]</div>Axman6https://wiki.haskell.org/index.php?title=Tutorials&diff=38281Tutorials2011-01-18T12:47:44Z<p>Axman6: /* Best places to start */</p>
<hr />
<div>==Introductions to Haskell==<br />
<br />
These are the recommended places to start learning, short of buying a textbook.<br />
<br />
=== Best places to start ===<br />
<br />
;[http://learnyouahaskell.com Learn You a Haskell for Great Good! (LYAH)]<br />
: Nicely illustrated tutorial showing Haskell concepts while interacting in GHCi. Written and drawn by Miran Lipovača.<br />
<br />
;[http://book.realworldhaskell.org/ Real World Haskell (RWH)]<br />
: A free online version of the complete book, with numerous reader-submitted comments. RWH is best suited for people who know the fundamentals of haskell already, and can write basic Haskell programs themselves already. It makes a great follow up after finishing LYAH. It can easily be read cover-to-cover, or you can focus on the chapters that interest you most, or when you find an idea you don't yet understand.<br />
<br />
;[http://darcs.haskell.org/yaht/yaht.pdf Yet Another Haskell Tutorial]<br />
:By Hal Daume III et al. A recommended tutorial for Haskell that is still under construction but covers already much ground. Also a classic text. Now available [http://en.wikibooks.org/wiki/Haskell/YAHT as a wikibook].<br />
<br />
;[http://en.wikibooks.org/wiki/Haskell Haskell Wikibook] <br />
:A communal effort by several authors to produce the definitive Haskell textbook. Its very much a work in progress at the moment, and contributions are welcome.<br />
<br />
;[http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Write Yourself a Scheme in 48 Hours in Haskell]<br />
:A Haskell Tutorial, by Jonathan Tang. Most Haskell tutorials on the web seem to take a language-reference-manual approach to teaching. They show you the syntax of the language, a few language constructs, and then have you construct a few simple functions at the interactive prompt. The "hard stuff" of how to write a functioning, useful program is left to the end, or sometimes omitted entirely. This tutorial takes a different tack. You'll start off with command-line arguments and parsing, and progress to writing a fully-functional Scheme interpreter that implements a good-sized subset of R5RS Scheme. Along the way, you'll learn Haskell's I/O, mutable state, dynamic typing, error handling, and parsing features. By the time you finish, you should be fairly fluent in both Haskell and Scheme.<br />
<br />
;[http://acm.wustl.edu/functional/haskell.php How to Learn Haskell]<br />
:Some students at Washington University in St. Louis documented the path they took to learning Haskell and put together a nice meta-tutorial to guide beginners through some of the available resources. Experienced programmers looking for some quick code examples may be interested in their [http://acm.wustl.edu/functional/hs-breads.php breadcrumbs].<br />
<br />
=== More tutorials ===<br />
<br />
;[http://www.haskell.org/tutorial/ A Gentle Introduction to Haskell] :By Paul Hudak, John Peterson, and Joseph H. Fasel. The title is misleading. Some knowledge of another functional programming language is expected. The emphasis is on the type system and those features which are really new in Haskell (compared to other functional programming languages). A classic, but not for the faint of heart (it's not so gentle). Also available in [http://gorgonite.developpez.com/livres/traductions/haskell/gentle-haskell/ French] and [http://www.rsdn.ru/article/haskell/haskell_part1.xml Russian].<br />
<br />
;[[H-99: Ninety-Nine Haskell Problems]]<br />
:A collection of programming puzzles, with Haskell solutions. Solving these is a great way to get into Haskell programming.<br />
<br />
;[http://www.haskell.org/~pairwise/intro/intro.html Haskell Tutorial for C Programmers]<br />
:By Eric Etheridge. From the intro: "This tutorial assumes that the reader is familiar with C/C++, Python, Java, or Pascal. I am writing for you because it seems that no other tutorial was written to help students overcome the difficulty of moving from C/C++, Java, and the like to Haskell."<br />
<br />
;[http://www-106.ibm.com/developerworks/edu/os-dw-linuxhask-i.html Beginning Haskell] <br />
:From IBM developerWorks. This tutorial targets programmers of imperative languages wanting to learn about functional programming in the language Haskell. If you have programmed in languages such as C, Pascal, Fortran, C++, Java, Cobol, Ada, Perl, TCL, REXX, JavaScript, Visual Basic, or many others, you have been using an imperative paradigm. This tutorial provides a gentle introduction to the paradigm of functional programming, with specific illustrations in the Haskell 98 language. (Free registration required.)<br />
<br />
;[http://www.informatik.uni-bonn.de/~ralf/teaching/Hskurs_toc.html Online Haskell Course] <br />
:By Ralf Hinze (in German).<br />
<br />
;[http://www.cs.chalmers.se/~rjmh/tutorials.html Tutorial Papers in Functional Programming].<br />
:A collection of links to other Haskell tutorials, from John Hughes.<br />
<br />
;[http://www.cs.ou.edu/cs1323h/textbook/haskell.shtml Two Dozen Short Lessons in Haskell] <br />
:By Rex Page. A draft of a textbook on functional programming, available by ftp. It calls for active participation from readers by omitting material at certain points and asking the reader to attempt to fill in the missing information based on knowledge they have already acquired. The missing information is then supplied on the reverse side of the page. <br />
<br />
;[ftp://ftp.geoinfo.tuwien.ac.at/navratil/HaskellTutorial.pdf Haskell-Tutorial] <br />
:By Damir Medak and Gerhard Navratil. The fundamentals of functional languages for beginners. <br />
<br />
;[http://video.s-inf.de/#FP.2005-SS-Giesl.(COt).HD_Videoaufzeichnung Video Lectures] <br />
:Lectures (in English) by Jürgen Giesl. About 30 hours in total, and great for learning Haskell. The lectures are 2005-SS-FP.V01 through 2005-SS-FP.V26. Videos 2005-SS-FP.U01 through 2005-SS-FP.U11 are exercise answer sessions, so you probably don't want those.<br />
<br />
;[http://www.cs.utoronto.ca/~trebla/fp/ Albert's Functional Programming Course] <br />
:A 15 lesson introduction to most aspects of Haskell.<br />
<br />
;[http://www.iceteks.com/articles.php/haskell/1 Introduction to Haskell]<br />
:By Chris Dutton, An "attempt to bring the ideas of functional programming to the masses here, and an experiment in finding ways to make it easy and interesting to follow".<br />
<br />
;[http://www.csc.depauw.edu/~bhoward/courses/0203Spring/csc122/haskintro/ An Introduction to Haskell]<br />
:A brief introduction, by Brian Howard.<br />
<br />
;[http://web.syntaxpolice.org/lectures/haskellTalk/slides/index.html Introduction to Haskell]<br />
:By Isaac Jones (2003).<br />
<br />
;[http://www.linuxjournal.com/article/9096 Translating Haskell into English]<br />
:By Shannon Behrens, a glimpse of the Zen of Haskell, without requiring that they already be Haskell converts.<br />
<br />
;[http://www.shlomifish.org/lecture/Perl/Haskell/slides/ Haskell for Perl Programmers]<br />
:Brief introduction to Haskell, with a view to what perl programmers are interested in<br />
<br />
;[http://lisperati.com/haskell/ How To Organize a Picnic on a Computer]<br />
:Fun introduction to Haskell, step by step building of a program to seat people at a planned picnic, based on their similarities using data from a survey and a map of the picnic location.<br />
<br />
;[http://cs.wwc.edu/KU/PR/Haskell.html Haskell Tutorial]<br />
<br />
;[http://www.lisperati.com/haskell/ Conrad Barski's Haskell tutorial .. with robots]<br />
<br />
;[[Media:Introduction.pdf|Frederick Ross's Haskell introduction]]<br />
<br />
;[http://de.wikibooks.org/wiki/Haskell Dirk's Haskell Tutorial]<br />
:in German for beginners by a beginner. Not so deep, but with a lot examples with very small steps.<br />
<br />
;[http://www.crsr.net/Programming_Languages/SoftwareTools/index.html Software Tools in Haskell]<br />
:A tutorial for advanced readers<br />
<br />
<br />
== Motivation for using Haskell ==<br />
<br />
;[http://www.cse.chalmers.se/~rjmh/Papers/whyfp.html Why Functional Programming Matters] <br />
:By [http://www.cse.chalmers.se/~rjmh/ John Hughes], The Computer Journal, Vol. 32, No. 2, 1989, pp. 98 - 107. Also in: David A. Turner (ed.): Research Topics in Functional Programming, Addison-Wesley, 1990, pp. 17 - 42.<BR> Exposes the advantages of functional programming languages. Demonstrates how higher-order functions and lazy evaluation enable new forms of modularization of programs.<br />
<br />
;[[Why Haskell matters]] <br />
:Discussion of the advantages of using Haskell in particular. An excellent article.<br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1997/224/index.html Higher-order + Polymorphic = Reusable] <br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]. Unpublished, May 1997.<BR> <STRONG>Abstract:</STRONG> This paper explores how certain ideas in object oriented languages have their correspondents in functional languages. In particular we look at the analogue of the iterators of the C++ standard template library. We also give an example of the use of constructor classes which feature in Haskell 1.3 and Gofer.<br />
<br />
;[http://www-128.ibm.com/developerworks/java/library/j-cb07186.html Explore functional programming with Haskell]<br />
:Introduction to the benefits of functional programming in Haskell by Bruce Tate.<br />
<br />
== Blog articles ==<br />
<br />
There are a large number of tutorials covering diverse Haskell topics<br />
published as blogs. Some of the best of these articles are collected<br />
here:<br />
<br />
;[[Blog articles]]<br />
<br />
==Practical Haskell==<br />
<br />
These tutorials examine using Haskell to writing complex real-world applications<br />
<br />
;[http://research.microsoft.com/%7Esimonpj/Papers/marktoberdorf Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell]<br />
:Simon Peyton Jones. Presented at the 2000 Marktoberdorf Summer School. In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1-58603-1724, 2001, pp47-96. The standard reference for monadic IO in GHC/Haskell. <br><strong>Abstract:</strong>Functional programming may be beautiful, but to write real applications we must grapple with awkward real-world issues: input/output, robustness, concurrency, and interfacing to programs written in other languages.<br />
<br />
;[[Hitchhikers Guide to the Haskell]]<br />
: Tutorial for C/Java/OCaml/... programers by Dmitry Astapov. From the intro: "This text intends to introduce the reader to the practical aspects of Haskell from the very beginning (plans for the first chapters include: I/O, darcs, Parsec, QuickCheck, profiling and debugging, to mention a few)".<br />
<br />
;[http://haskell.org/haskellwiki/IO_inside Haskell I/O inside: Down the Rabbit's Hole]<br />
:By Bulat Ziganshin (2006), a comprehensive tutorial on using IO monad.<br />
<br />
;[http://web.archive.org/web/20060622030538/http://www.reid-consulting-uk.ltd.uk/docs/ffi.html A Guide to Haskell's Foreign Function Interface]<br />
:A guide to using the foreign function interface extension, using the rich set of functions in the Foreign libraries, design issues, and FFI preprocessors.<br />
<br />
;[[Haskell IO for Imperative Programmers]]<br />
:A short introduction to IO from the perspective of an imperative programmer.<br />
<br />
;[[A brief introduction to Haskell|A Brief Introduction to Haskell]]<br />
:A translation of the article, [http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html Introduction to OCaml], to Haskell.<br />
<br />
;[[Roll your own IRC bot]]<br />
:This tutorial is designed as a practical guide to writing real world code in Haskell and hopes to intuitively motivate and introduce some of the advanced features of Haskell to the novice programmer, including monad transformers. Our goal is to write a concise, robust and elegant IRC bot in Haskell.<br />
<br />
;[http://haskell.org/gtk2hs/docs/tutorial/glade/ Glade Tutorial (GUI Programming)]<br />
:For the absolute beginner in both Glade and Gtk2Hs. Covers the basics of Glade and how to access a .glade file and widgets in Gtk2Hs. Estimated learning time: 2 hours.<br />
;[http://www.muitovar.com/glade/es-index.html Tutorial de Glade]<br />
:A Spanish translation of the Glade tutorial<br />
<br />
;[http://www.muitovar.com/gtk2hs/index.html Gtk2Hs Tutorial]<br />
: An extensive Gtk2Hs programming guide, based on the GTK+2.0 tutorial by Tony Gale and Ian Main. This tutorial on GUI programming with Gtk2Hs has 22 chapters in 7 sections, plus an appendix on starting drawing with Cairo. A Spanish translation and source code of the examples are also available.<br />
<br />
;Applications of Functional Programming<br />
:Colin Runciman and David Wakeling (ed.), UCL Press, 1995, ISBN 1-85728-377-5 HB. From the cover:<blockquote>This book is unique in showcasing real, non-trivial applications of functional programming using the Haskell language. It presents state-of-the-art work from the FLARE project and will be an invaluable resource for advanced study, research and implementation.</blockquote><br />
<br />
;[[DealingWithBinaryData]] a guide to bytestrings, the various <tt>Get</tt> monads and the <tt>Put</tt> monad.<br />
<br />
;[[Internationalization of Haskell programs]]<br />
:Short tutorial on how to use GNU gettext utility to make applications, written on Haskell, multilingual.<br />
<br />
===Testing===<br />
<br />
;[http://blog.moertel.com/articles/2006/10/31/introductory-haskell-solving-the-sorting-it-out-kata Small overview of QuickCheck]<br />
<br />
;[[Introduction to QuickCheck]]<br />
<br />
==Reference material==<br />
<br />
;[http://haskell.org/haskellwiki/Category:Tutorials A growing list of Haskell tutorials on a diverse range of topics]<br />
:Available on this wiki<br />
<br />
;[http://haskell.org/haskellwiki/Category:How_to "How to"-style tutorials and information]<br />
<br />
;[http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelude.html A Tour of the Haskell Prelude (basic functions)] <br />
:By Bernie Pope and Arjan van IJzendoorn.<br />
<br />
;[http://cs.anu.edu.au/Student/comp1100/haskell/tourofsyntax.html Tour of the Haskell Syntax] <br />
:By Arjan van IJzendoorn.<br />
<br />
;[http://zvon.org/other/haskell/Outputglobal/index.html Haskell Reference] <br />
:By Miloslav Nic.<br />
<br />
;[http://members.chello.nl/hjgtuyl/tourdemonad.html A tour of the Haskell Monad functions]<br />
:By Henk-Jan van Tuyl.<br />
<br />
;[http://www.cse.unsw.edu.au/~en1000/haskell/inbuilt.html Useful Haskell functions]<br />
:An explanation for beginners of many Haskell functions that are predefined in the Haskell Prelude.<br />
<br />
;[http://www.cs.chalmers.se/Cs/Grundutb/Kurser/d1pt/d1pta/ListDoc/ Haskell's Standard List Functions]<br />
:A tour of the standard Haskell functions, directed by what you want to achieve<br />
<br />
;[http://haskell.org/ghc/docs/latest/html/libraries/ Documentation for the standard libraries]<br />
:Complete documentation of the standard Haskell libraries.<br />
<br />
;[http://www.haskell.org/haskellwiki/Category:Idioms Haskell idioms]<br />
:A collection of articles describing some common Haskell idioms. Often quite advanced.<br />
<br />
;[http://www.haskell.org/haskellwiki/Blow_your_mind Useful idioms]<br />
:A collection of short, useful Haskell idioms.<br />
<br />
;[http://www.haskell.org/haskellwiki/Programming_guidelines Programming guidelines]<br />
:Some Haskell programming and style conventions.<br />
<br />
;[http://www.md.chalmers.se/~rjmh/Combinators/LightningTour/index.htm Lightning Tour of Haskell]<br />
:By John Hughes, as part of a Chalmers programming course<br />
<br />
;[http://www.cs.chalmers.se/~augustss/AFP/manuals/haskeller.dvi.gz The Little Haskeller] <br />
:By Cordelia Hall and John Hughes. 9. November 1993, 26 pages. An introduction using the Chalmers Haskell B interpreter (hbi). Beware that it relies very much on the user interface of hbi which is quite different for other Haskell systems, and the tutorials cover Haskell 1.2 , not Haskell 98.<br />
<br />
;[http://www.cs.uu.nl/people/jeroen/courses/fp-eng.pdf Functional Programming]<br />
:By Jeroen Fokker, 1995. (153 pages, 600 KB). Textbook for learning functional programming with Gofer (an older implementation of Haskell). Here without Chapters&nbsp;6 and&nbsp;7.<br />
<br />
== Comparisons to other languages ==<br />
<br />
Articles constrasting feature of Haskell with other languages.<br />
<br />
;[http://programming.reddit.com/goto?id=nq1k Haskell versus Scheme]<br />
:Mark C. Chu-Carroll, Haskell and Scheme: Which One and Why?<br />
<br />
;[http://wiki.python.org/moin/PythonVsHaskell Comparing Haskell and Python]<br />
:A short overview of similarities and differences between Haskell and Python.<br />
<br />
;[http://programming.reddit.com/goto?id=nwm2 Monads in OCaml]<br />
:Syntax extension for monads in OCaml<br />
<br />
;[http://www.shlomifish.org/lecture/Perl/Haskell/slides/ Haskell for Perl programmers]<br />
:Short intro for perlers<br />
<br />
;[[A_brief_introduction_to_Haskell|Introduction to Haskell]] versus [http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html Introduction to OCaml].<br />
<br />
;[http://www.thaiopensource.com/relaxng/derivative.html An algorithm for RELAX NG validation]<br />
:by James Clark (of RELAX NG fame). Describes an algorithm for validating an XML document against a RELAX NG schema, uses Haskell to describe the algorithm. The algorithm in Haskell and Java is then [http://www.donhopkins.com/drupal/node/117 discussed here].<br />
<br />
;[http://mult.ifario.us/articles/2006/10/11/first-steps-with-haskell-for-web-applications Haskell + FastCGI versus Ruby on Rails]<br />
:A short blog entry documenting performance results with ruby on rails and Haskell with fastcgi<br />
<br />
;[http://haskell.org/papers/NSWC/jfp.ps Haskell vs. Ada vs. C++ vs. Awk vs. ..., An Experiment in Software Prototyping Productivity] (postscript)<br />
:Paul Hudak and Mark P. Jones, 16 pages.<blockquote>Description of the results of an experiment in which several conventional programming languages, together with the functional language Haskell, were used to prototype a Naval Surface Warfare Center requirement for Geometric Region Servers. The resulting programs and development metrics were reviewed by a committee chosen by the US Navy. The results indicate that the Haskell prototype took significantly less time to develop and was considerably more concise and easier to understand than the corresponding prototypes written in several different imperative languages, including Ada and C++. </blockquote> <br />
<br />
;[http://www.osl.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf A Comparative Study of Language Support for Generic Programming] (pdf)<br />
:Ronald Garcia, Jaakko Jrvi, Andrew Lumsdaine, Jeremy G. Siek, and Jeremiah Willcock. In Proceedings of the 2003 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA'03), October 2003.<blockquote>An interesting comparison of generic programming support across languages, including: Haskell, SML, C++, Java, C#. Haskell supports all constructs described in the paper -- the only language to do so. </blockquote><br />
<br />
;[http://homepages.inf.ed.ac.uk/wadler/realworld/index.html Functional Programming in the Real World]<br />
:A list of functional programs applied to real-world tasks. The main criterion for being real-world is that the program was written primarily to perform some task, not primarily to experiment with functional programming. Functional is used in the broad sense that includes both `pure' programs (no side effects) and `impure' (some use of side effects). Languages covered include CAML, Clean, Erlang, Haskell, Miranda, Scheme, SML, and others.<br />
<br />
;[http://www.defmacro.org/ramblings/lisp-in-haskell.html Lisp in Haskell]<br />
:Writing A Lisp Interpreter In Haskell, a tutorial<br />
<br />
== Teaching Haskell ==<br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1997/208/index.html Where do I begin? A problem solving approach to teaching functional programming]<br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]. In Krzysztof Apt, Pieter Hartel, and Paul Klint, editors, First International Conference on Declarative Programming Languages in Education. Springer-Verlag, September 1997. <br> <STRONG>Abstract:</STRONG> This paper introduces a problem solving method for teaching functional programming, based on Polya's `How To Solve It', an introductory investigation of mathematical method. We first present the language independent version, and then show in particular how it applies to the development of programs in Haskell. The method is illustrated by a sequence of examples and a larger case study. <br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1995/214/index.html Functional programming through the curriculum]<br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson] and Steve Hill. In Pieter H. Hartel and Rinus Plasmeijer, editors, Functional Programming Languages in Education, LNCS 1022, pages 85-102. Springer-Verlag, December 1995. <br> <STRONG>Abstract:</STRONG> This paper discusses our experience in using a functional language in topics across the computer science curriculum. After examining the arguments for taking a functional approach, we look in detail at four case studies from different areas: programming language semantics, machine architectures, graphics and formal languages. <br />
<br />
;[http://www.cse.unsw.edu.au/~chak/papers/CK02a.html The Risks and Benefits of Teaching Purely Functional Programming in First Year]<br />
:By [http://www.cse.unsw.edu.au/~chak Manuel M. T. Chakravarty] and [http://www.cse.unsw.edu.au/~keller Gabriele Keller]. Journal of Functional Programming 14(1), pp 113-123, 2004. An earlier version of this paper was presented at Functional and Declarative Programming in Education (FDPE02). <br> <strong>Abstract</strong> We argue that teaching purely functional programming as such in freshman courses is detrimental to both the curriculum as well as to promoting the paradigm. Instead, we need to focus on the more general aims of teaching elementary techniques of programming and essential concepts of computing. We support this viewpoint with experience gained during several semesters of teaching large first-year classes (up to 600 students) in Haskell. These classes consisted of computer science students as well as students from other disciplines. We have systematically gathered student feedback by conducting surveys after each semester. This article contributes an approach to the use of modern functional languages in first year courses and, based on this, advocates the use of functional languages in this setting.<br />
<br />
<br />
==Using monads==<br />
<br />
See also the [[Monad]] HaskellWiki page.<br />
<br />
<br />
===Recommended tutorials===<br />
<br />
;[http://mvanier.livejournal.com/3917.html Mike Vanier's monad tutorial]<br />
:Recommended by David Balaban.<br />
<br />
;[http://www.haskell.org/all_about_monads/html/index.html All About Monads] <br />
:By Jeff Newbern. This tutorial aims to explain the concept of a monad and its application to functional programming in a way that is easy to understand and useful to beginning and intermediate Haskell programmers. Familiarity with the Haskell language is assumed, but no prior experience with monads is required. <br />
<br />
;[[Monads as computation]]<br />
:A tutorial which gives a broad overview to motivate the use of monads as an abstraction in functional programming and describe their basic features. It makes an attempt at showing why they arise naturally from some basic premises about the design of a library.<br />
<br />
;[[Monads as containers]]<br />
:A tutorial describing monads from a rather different perspective: as an abstraction of container-types, rather than an abstraction of types of computation.<br />
<br />
;[http://uebb.cs.tu-berlin.de/~magr/pub/Transformers.en.html Monad Transformers Step by Step]<br />
:By Martin Grabm&uuml;ller. A small tutorial on using monad transformers. In contrast to others found on the web, it concentrates on using them, not on their implementation.<br />
<br />
;[[What a Monad is not]]<br />
<br />
;[http://noordering.wordpress.com/2009/03/31/how-you-shouldnt-use-monad/ How you should(n’t) use Monads]<br />
<br />
;[http://www.sampou.org/haskell/a-a-monads/html/index.html モナドのすべて [All About Monads]]<br />
:A translation of Jeff Newbern's tutorial "All About Monads" into Japanese.<br />
<br />
===Parser===<br />
<br />
;[http://www.haskell.org/sitewiki/images/c/c6/ICMI45-paper-en.pdf The Parser monad and other monad (i.e. a monad with state and I/O string)]. <br />
:The parser monad is used to build modular, flexible, parsers. <br />
<br />
;[http://www.haskell.org/sitewiki/images/c/c6/ICMI45-paper-en.pdf How to build a monadic interpreter in one day] (pdf)<br />
:By Dan Popa. A small tutorial on how to build a language in one day, using the Parser Monad in the front end and a monad with state and I/O string in the back end. Read it if you are interested in learning: <br />
:# language construction and <br />
:# interpreter construction<br />
<br />
===More tutorials===<br />
<br />
;[http://stefan-klinger.de/files/monadGuide.pdf The Haskell Programmer's Guide to the IO Monad - Don't Panic.] <br />
:By Stefan Klinger. This report scratches the surface of category theory, an abstract branch of algebra, just deep enough to find the monad structure. It seems well written.<br />
<br />
;[http://www.prairienet.org/~dsb/monads.htm A (hopefully) painless introduction to monads] <br />
:By Dan Bensen. A straightforward beginner's guide with intuitive explanations and examples.<br />
<br />
;[http://www-users.mat.uni.torun.pl/~fly/materialy/fp/haskell-doc/Monads.html What the hell are Monads?] <br />
:By Noel Winstanley. A basic introduction to monads, monadic programming and IO. This introduction is presented by means of examples rather than theory, and assumes a little knowledge of Haskell. <br />
<br />
;[http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm Monads for the Working Haskell Programmer -- a short tutorial]<br />
:By Theodore Norvell. <br />
<br />
;[http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html You Could Have Invented Monads! (And Maybe You Already Have.)]<br />
:A short tutorial on monads, introduced from a pragmatic approach, with less category theory references <br />
<br />
;[http://www.cs.chalmers.se/~augustss/AFP/monads.html Systematic Design of Monads]<br />
:By John Hughes and Magnus Carlsson. Many useful monads can be designed in a systematic way, by successively adding facilities to a trivial monad. The capabilities that can be added in this way include state, exceptions, backtracking, and output. Here we give a brief description of the trivial monad, each kind of extension, and sketches of some interesting operations that each monad supports.<br />
<br />
;[[Meet Bob The Monadic Lover]]<br />
:By Andrea Rossato. A by-the-author-supposed-to-be funny and short introduction to Monads, with code but without any reference to category theory: what monads look like and what they are useful for, from the perspective of a ... lover. (There is also the slightly more serious [[The Monadic Way]] by the same author.)<br />
<br />
;[http://www.haskell.org/pipermail/haskell-cafe/2006-November/019190.html Monstrous Monads]<br />
:Andrew Pimlott's humourous introduction to monads, using the metaphor of "monsters".<br />
<br />
;[http://strabismicgobbledygook.wordpress.com/2010/03/06/a-state-monad-tutorial/ A State Monad Tutorial]<br />
:A detailed tutorial with simple but practical examples.<br />
<br />
;Computational monads on Reddit, by [http://programming.reddit.com/info/ox6s/comments/coxiv tmoertel] and [http://programming.reddit.com/info/ox6s/comments/coxoh dons].<br />
<br />
;[http://www.loria.fr/~kow/monads/index.html Of monads and space suits]<br />
:By Eric Kow.<br />
<br />
;[[The Monadic Way]]<br />
<br />
;[http://www.alpheccar.org/fr/posts/show/60 Three kind of monads] : sequencing, side effects or containers<br />
<br />
;[[Simple monad examples]]<br />
<br />
;[http://en.wikipedia.org/wiki/Monads_in_functional_programming Article on monads on Wikipedia]<br />
<br />
;[[IO inside]] page<br />
:Explains why I/O in Haskell is implemented with a monad.<br />
<br />
;[http://haskell.org/haskellwiki/Blog_articles#Monads Blog articles]<br />
<br />
;[[Monad Transformers Explained]]<br />
<br />
;[http://www.muitovar.com/monad/moncow.html The Greenhorn's Guide to becoming a Monad Cowboy]<br />
:Covers basics, with simple examples, in a ''for dummies'' style. Includes monad transformers and monadic functions. Estimated learning time 2-3 days.<br />
<br />
;[http://ertes.de/articles/monads.html Understanding Haskell Monads]<br />
<br />
;[http://www.reddit.com/r/programming/comments/64th1/monads_in_python_in_production_code_you_can_and/c02u9mb A very clear explanation by 808140]<br />
<br />
;[[MonadCont under the hood]]<br />
:A detailed description of the ''Cont'' data type and its monadic operations, including the class ''MonadCont''.<br />
<br />
See also [[Research papers/Monads and arrows]]<br />
<br />
<br />
<br />
==Workshops on advanced functional programming==<br />
<br />
;[http://compilers.iecc.com/comparch/article/95-04-024 Advanced Functional Programming: 1st International Spring School on Advanced Functional Programming Techniques], Bastad, Sweden, May 24 - 30, 1995. Tutorial Text (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cse.ogi.edu/PacSoft/conf/summerschool96.html Advanced Functional Programming: 2nd International School], Olympia, Wa, Usa, August 26-30, 1996 Tutorial Text (Lecture Notes in Computer Science) <br />
<br />
;[http://alfa.di.uminho.pt/~afp98/ Advanced Functional Programming: 3rd International School], AFP'98, Braga, Portugal, September 12-19, 1998, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cs.uu.nl/~johanj/afp/afp4/ Advanced Functional Programming: 4th International School], AFP 2002, Oxford, UK, August 19-24, 2002, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cs.ut.ee/afp04/ Advanced Functional Programming: 5th International School], AFP 2004, Tartu, Estonia, August 14-21, 2004, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
More advanced materials available from the [[Conferences|conference proceedings]], and the [[Research papers]] collection.<br />
<br />
<br />
[[Category:Tutorials]]</div>Axman6https://wiki.haskell.org/index.php?title=Tutorials&diff=38280Tutorials2011-01-18T12:42:20Z<p>Axman6: /* Best places to start */</p>
<hr />
<div>==Introductions to Haskell==<br />
<br />
These are the recommended places to start learning, short of buying a textbook.<br />
<br />
=== Best places to start ===<br />
<br />
;[http://learnyouahaskell.com Learn You a Haskell for Great Good!]<br />
: Nicely illustrated tutorial showing Haskell concepts while interacting in GHCi. Written and drawn by Miran Lipovača.<br />
<br />
;[http://darcs.haskell.org/yaht/yaht.pdf Yet Another Haskell Tutorial]<br />
:By Hal Daume III et al. A recommended tutorial for Haskell that is still under construction but covers already much ground. Also a classic text. Now available [http://en.wikibooks.org/wiki/Haskell/YAHT as a wikibook].<br />
<br />
;[http://en.wikibooks.org/wiki/Haskell Haskell Wikibook] <br />
:A communal effort by several authors to produce the definitive Haskell textbook. Its very much a work in progress at the moment, and contributions are welcome.<br />
<br />
;[http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Write Yourself a Scheme in 48 Hours in Haskell]<br />
:A Haskell Tutorial, by Jonathan Tang. Most Haskell tutorials on the web seem to take a language-reference-manual approach to teaching. They show you the syntax of the language, a few language constructs, and then have you construct a few simple functions at the interactive prompt. The "hard stuff" of how to write a functioning, useful program is left to the end, or sometimes omitted entirely. This tutorial takes a different tack. You'll start off with command-line arguments and parsing, and progress to writing a fully-functional Scheme interpreter that implements a good-sized subset of R5RS Scheme. Along the way, you'll learn Haskell's I/O, mutable state, dynamic typing, error handling, and parsing features. By the time you finish, you should be fairly fluent in both Haskell and Scheme.<br />
<br />
;[http://acm.wustl.edu/functional/haskell.php How to Learn Haskell]<br />
:Some students at Washington University in St. Louis documented the path they took to learning Haskell and put together a nice meta-tutorial to guide beginners through some of the available resources. Experienced programmers looking for some quick code examples may be interested in their [http://acm.wustl.edu/functional/hs-breads.php breadcrumbs].<br />
<br />
=== More tutorials ===<br />
<br />
;[http://www.haskell.org/tutorial/ A Gentle Introduction to Haskell] :By Paul Hudak, John Peterson, and Joseph H. Fasel. The title is misleading. Some knowledge of another functional programming language is expected. The emphasis is on the type system and those features which are really new in Haskell (compared to other functional programming languages). A classic, but not for the faint of heart (it's not so gentle). Also available in [http://gorgonite.developpez.com/livres/traductions/haskell/gentle-haskell/ French] and [http://www.rsdn.ru/article/haskell/haskell_part1.xml Russian].<br />
<br />
;[[H-99: Ninety-Nine Haskell Problems]]<br />
:A collection of programming puzzles, with Haskell solutions. Solving these is a great way to get into Haskell programming.<br />
<br />
;[http://www.haskell.org/~pairwise/intro/intro.html Haskell Tutorial for C Programmers]<br />
:By Eric Etheridge. From the intro: "This tutorial assumes that the reader is familiar with C/C++, Python, Java, or Pascal. I am writing for you because it seems that no other tutorial was written to help students overcome the difficulty of moving from C/C++, Java, and the like to Haskell."<br />
<br />
;[http://www-106.ibm.com/developerworks/edu/os-dw-linuxhask-i.html Beginning Haskell] <br />
:From IBM developerWorks. This tutorial targets programmers of imperative languages wanting to learn about functional programming in the language Haskell. If you have programmed in languages such as C, Pascal, Fortran, C++, Java, Cobol, Ada, Perl, TCL, REXX, JavaScript, Visual Basic, or many others, you have been using an imperative paradigm. This tutorial provides a gentle introduction to the paradigm of functional programming, with specific illustrations in the Haskell 98 language. (Free registration required.)<br />
<br />
;[http://www.informatik.uni-bonn.de/~ralf/teaching/Hskurs_toc.html Online Haskell Course] <br />
:By Ralf Hinze (in German).<br />
<br />
;[http://www.cs.chalmers.se/~rjmh/tutorials.html Tutorial Papers in Functional Programming].<br />
:A collection of links to other Haskell tutorials, from John Hughes.<br />
<br />
;[http://www.cs.ou.edu/cs1323h/textbook/haskell.shtml Two Dozen Short Lessons in Haskell] <br />
:By Rex Page. A draft of a textbook on functional programming, available by ftp. It calls for active participation from readers by omitting material at certain points and asking the reader to attempt to fill in the missing information based on knowledge they have already acquired. The missing information is then supplied on the reverse side of the page. <br />
<br />
;[ftp://ftp.geoinfo.tuwien.ac.at/navratil/HaskellTutorial.pdf Haskell-Tutorial] <br />
:By Damir Medak and Gerhard Navratil. The fundamentals of functional languages for beginners. <br />
<br />
;[http://video.s-inf.de/#FP.2005-SS-Giesl.(COt).HD_Videoaufzeichnung Video Lectures] <br />
:Lectures (in English) by Jürgen Giesl. About 30 hours in total, and great for learning Haskell. The lectures are 2005-SS-FP.V01 through 2005-SS-FP.V26. Videos 2005-SS-FP.U01 through 2005-SS-FP.U11 are exercise answer sessions, so you probably don't want those.<br />
<br />
;[http://www.cs.utoronto.ca/~trebla/fp/ Albert's Functional Programming Course] <br />
:A 15 lesson introduction to most aspects of Haskell.<br />
<br />
;[http://www.iceteks.com/articles.php/haskell/1 Introduction to Haskell]<br />
:By Chris Dutton, An "attempt to bring the ideas of functional programming to the masses here, and an experiment in finding ways to make it easy and interesting to follow".<br />
<br />
;[http://www.csc.depauw.edu/~bhoward/courses/0203Spring/csc122/haskintro/ An Introduction to Haskell]<br />
:A brief introduction, by Brian Howard.<br />
<br />
;[http://web.syntaxpolice.org/lectures/haskellTalk/slides/index.html Introduction to Haskell]<br />
:By Isaac Jones (2003).<br />
<br />
;[http://www.linuxjournal.com/article/9096 Translating Haskell into English]<br />
:By Shannon Behrens, a glimpse of the Zen of Haskell, without requiring that they already be Haskell converts.<br />
<br />
;[http://www.shlomifish.org/lecture/Perl/Haskell/slides/ Haskell for Perl Programmers]<br />
:Brief introduction to Haskell, with a view to what perl programmers are interested in<br />
<br />
;[http://lisperati.com/haskell/ How To Organize a Picnic on a Computer]<br />
:Fun introduction to Haskell, step by step building of a program to seat people at a planned picnic, based on their similarities using data from a survey and a map of the picnic location.<br />
<br />
;[http://cs.wwc.edu/KU/PR/Haskell.html Haskell Tutorial]<br />
<br />
;[http://www.lisperati.com/haskell/ Conrad Barski's Haskell tutorial .. with robots]<br />
<br />
;[[Media:Introduction.pdf|Frederick Ross's Haskell introduction]]<br />
<br />
;[http://de.wikibooks.org/wiki/Haskell Dirk's Haskell Tutorial]<br />
:in German for beginners by a beginner. Not so deep, but with a lot examples with very small steps.<br />
<br />
;[http://www.crsr.net/Programming_Languages/SoftwareTools/index.html Software Tools in Haskell]<br />
:A tutorial for advanced readers<br />
<br />
<br />
== Motivation for using Haskell ==<br />
<br />
;[http://www.cse.chalmers.se/~rjmh/Papers/whyfp.html Why Functional Programming Matters] <br />
:By [http://www.cse.chalmers.se/~rjmh/ John Hughes], The Computer Journal, Vol. 32, No. 2, 1989, pp. 98 - 107. Also in: David A. Turner (ed.): Research Topics in Functional Programming, Addison-Wesley, 1990, pp. 17 - 42.<BR> Exposes the advantages of functional programming languages. Demonstrates how higher-order functions and lazy evaluation enable new forms of modularization of programs.<br />
<br />
;[[Why Haskell matters]] <br />
:Discussion of the advantages of using Haskell in particular. An excellent article.<br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1997/224/index.html Higher-order + Polymorphic = Reusable] <br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]. Unpublished, May 1997.<BR> <STRONG>Abstract:</STRONG> This paper explores how certain ideas in object oriented languages have their correspondents in functional languages. In particular we look at the analogue of the iterators of the C++ standard template library. We also give an example of the use of constructor classes which feature in Haskell 1.3 and Gofer.<br />
<br />
;[http://www-128.ibm.com/developerworks/java/library/j-cb07186.html Explore functional programming with Haskell]<br />
:Introduction to the benefits of functional programming in Haskell by Bruce Tate.<br />
<br />
== Blog articles ==<br />
<br />
There are a large number of tutorials covering diverse Haskell topics<br />
published as blogs. Some of the best of these articles are collected<br />
here:<br />
<br />
;[[Blog articles]]<br />
<br />
==Practical Haskell==<br />
<br />
These tutorials examine using Haskell to writing complex real-world applications<br />
<br />
;[http://research.microsoft.com/%7Esimonpj/Papers/marktoberdorf Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell]<br />
:Simon Peyton Jones. Presented at the 2000 Marktoberdorf Summer School. In "Engineering theories of software construction", ed Tony Hoare, Manfred Broy, Ralf Steinbruggen, IOS Press, ISBN 1-58603-1724, 2001, pp47-96. The standard reference for monadic IO in GHC/Haskell. <br><strong>Abstract:</strong>Functional programming may be beautiful, but to write real applications we must grapple with awkward real-world issues: input/output, robustness, concurrency, and interfacing to programs written in other languages.<br />
<br />
;[[Hitchhikers Guide to the Haskell]]<br />
: Tutorial for C/Java/OCaml/... programers by Dmitry Astapov. From the intro: "This text intends to introduce the reader to the practical aspects of Haskell from the very beginning (plans for the first chapters include: I/O, darcs, Parsec, QuickCheck, profiling and debugging, to mention a few)".<br />
<br />
;[http://haskell.org/haskellwiki/IO_inside Haskell I/O inside: Down the Rabbit's Hole]<br />
:By Bulat Ziganshin (2006), a comprehensive tutorial on using IO monad.<br />
<br />
;[http://web.archive.org/web/20060622030538/http://www.reid-consulting-uk.ltd.uk/docs/ffi.html A Guide to Haskell's Foreign Function Interface]<br />
:A guide to using the foreign function interface extension, using the rich set of functions in the Foreign libraries, design issues, and FFI preprocessors.<br />
<br />
;[[Haskell IO for Imperative Programmers]]<br />
:A short introduction to IO from the perspective of an imperative programmer.<br />
<br />
;[[A brief introduction to Haskell|A Brief Introduction to Haskell]]<br />
:A translation of the article, [http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html Introduction to OCaml], to Haskell.<br />
<br />
;[[Roll your own IRC bot]]<br />
:This tutorial is designed as a practical guide to writing real world code in Haskell and hopes to intuitively motivate and introduce some of the advanced features of Haskell to the novice programmer, including monad transformers. Our goal is to write a concise, robust and elegant IRC bot in Haskell.<br />
<br />
;[http://haskell.org/gtk2hs/docs/tutorial/glade/ Glade Tutorial (GUI Programming)]<br />
:For the absolute beginner in both Glade and Gtk2Hs. Covers the basics of Glade and how to access a .glade file and widgets in Gtk2Hs. Estimated learning time: 2 hours.<br />
;[http://www.muitovar.com/glade/es-index.html Tutorial de Glade]<br />
:A Spanish translation of the Glade tutorial<br />
<br />
;[http://www.muitovar.com/gtk2hs/index.html Gtk2Hs Tutorial]<br />
: An extensive Gtk2Hs programming guide, based on the GTK+2.0 tutorial by Tony Gale and Ian Main. This tutorial on GUI programming with Gtk2Hs has 22 chapters in 7 sections, plus an appendix on starting drawing with Cairo. A Spanish translation and source code of the examples are also available.<br />
<br />
;Applications of Functional Programming<br />
:Colin Runciman and David Wakeling (ed.), UCL Press, 1995, ISBN 1-85728-377-5 HB. From the cover:<blockquote>This book is unique in showcasing real, non-trivial applications of functional programming using the Haskell language. It presents state-of-the-art work from the FLARE project and will be an invaluable resource for advanced study, research and implementation.</blockquote><br />
<br />
;[[DealingWithBinaryData]] a guide to bytestrings, the various <tt>Get</tt> monads and the <tt>Put</tt> monad.<br />
<br />
;[[Internationalization of Haskell programs]]<br />
:Short tutorial on how to use GNU gettext utility to make applications, written on Haskell, multilingual.<br />
<br />
===Testing===<br />
<br />
;[http://blog.moertel.com/articles/2006/10/31/introductory-haskell-solving-the-sorting-it-out-kata Small overview of QuickCheck]<br />
<br />
;[[Introduction to QuickCheck]]<br />
<br />
==Reference material==<br />
<br />
;[http://haskell.org/haskellwiki/Category:Tutorials A growing list of Haskell tutorials on a diverse range of topics]<br />
:Available on this wiki<br />
<br />
;[http://haskell.org/haskellwiki/Category:How_to "How to"-style tutorials and information]<br />
<br />
;[http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelude.html A Tour of the Haskell Prelude (basic functions)] <br />
:By Bernie Pope and Arjan van IJzendoorn.<br />
<br />
;[http://cs.anu.edu.au/Student/comp1100/haskell/tourofsyntax.html Tour of the Haskell Syntax] <br />
:By Arjan van IJzendoorn.<br />
<br />
;[http://zvon.org/other/haskell/Outputglobal/index.html Haskell Reference] <br />
:By Miloslav Nic.<br />
<br />
;[http://members.chello.nl/hjgtuyl/tourdemonad.html A tour of the Haskell Monad functions]<br />
:By Henk-Jan van Tuyl.<br />
<br />
;[http://www.cse.unsw.edu.au/~en1000/haskell/inbuilt.html Useful Haskell functions]<br />
:An explanation for beginners of many Haskell functions that are predefined in the Haskell Prelude.<br />
<br />
;[http://www.cs.chalmers.se/Cs/Grundutb/Kurser/d1pt/d1pta/ListDoc/ Haskell's Standard List Functions]<br />
:A tour of the standard Haskell functions, directed by what you want to achieve<br />
<br />
;[http://haskell.org/ghc/docs/latest/html/libraries/ Documentation for the standard libraries]<br />
:Complete documentation of the standard Haskell libraries.<br />
<br />
;[http://www.haskell.org/haskellwiki/Category:Idioms Haskell idioms]<br />
:A collection of articles describing some common Haskell idioms. Often quite advanced.<br />
<br />
;[http://www.haskell.org/haskellwiki/Blow_your_mind Useful idioms]<br />
:A collection of short, useful Haskell idioms.<br />
<br />
;[http://www.haskell.org/haskellwiki/Programming_guidelines Programming guidelines]<br />
:Some Haskell programming and style conventions.<br />
<br />
;[http://www.md.chalmers.se/~rjmh/Combinators/LightningTour/index.htm Lightning Tour of Haskell]<br />
:By John Hughes, as part of a Chalmers programming course<br />
<br />
;[http://www.cs.chalmers.se/~augustss/AFP/manuals/haskeller.dvi.gz The Little Haskeller] <br />
:By Cordelia Hall and John Hughes. 9. November 1993, 26 pages. An introduction using the Chalmers Haskell B interpreter (hbi). Beware that it relies very much on the user interface of hbi which is quite different for other Haskell systems, and the tutorials cover Haskell 1.2 , not Haskell 98.<br />
<br />
;[http://www.cs.uu.nl/people/jeroen/courses/fp-eng.pdf Functional Programming]<br />
:By Jeroen Fokker, 1995. (153 pages, 600 KB). Textbook for learning functional programming with Gofer (an older implementation of Haskell). Here without Chapters&nbsp;6 and&nbsp;7.<br />
<br />
== Comparisons to other languages ==<br />
<br />
Articles constrasting feature of Haskell with other languages.<br />
<br />
;[http://programming.reddit.com/goto?id=nq1k Haskell versus Scheme]<br />
:Mark C. Chu-Carroll, Haskell and Scheme: Which One and Why?<br />
<br />
;[http://wiki.python.org/moin/PythonVsHaskell Comparing Haskell and Python]<br />
:A short overview of similarities and differences between Haskell and Python.<br />
<br />
;[http://programming.reddit.com/goto?id=nwm2 Monads in OCaml]<br />
:Syntax extension for monads in OCaml<br />
<br />
;[http://www.shlomifish.org/lecture/Perl/Haskell/slides/ Haskell for Perl programmers]<br />
:Short intro for perlers<br />
<br />
;[[A_brief_introduction_to_Haskell|Introduction to Haskell]] versus [http://www.cs.jhu.edu/~scott/pl/lectures/caml-intro.html Introduction to OCaml].<br />
<br />
;[http://www.thaiopensource.com/relaxng/derivative.html An algorithm for RELAX NG validation]<br />
:by James Clark (of RELAX NG fame). Describes an algorithm for validating an XML document against a RELAX NG schema, uses Haskell to describe the algorithm. The algorithm in Haskell and Java is then [http://www.donhopkins.com/drupal/node/117 discussed here].<br />
<br />
;[http://mult.ifario.us/articles/2006/10/11/first-steps-with-haskell-for-web-applications Haskell + FastCGI versus Ruby on Rails]<br />
:A short blog entry documenting performance results with ruby on rails and Haskell with fastcgi<br />
<br />
;[http://haskell.org/papers/NSWC/jfp.ps Haskell vs. Ada vs. C++ vs. Awk vs. ..., An Experiment in Software Prototyping Productivity] (postscript)<br />
:Paul Hudak and Mark P. Jones, 16 pages.<blockquote>Description of the results of an experiment in which several conventional programming languages, together with the functional language Haskell, were used to prototype a Naval Surface Warfare Center requirement for Geometric Region Servers. The resulting programs and development metrics were reviewed by a committee chosen by the US Navy. The results indicate that the Haskell prototype took significantly less time to develop and was considerably more concise and easier to understand than the corresponding prototypes written in several different imperative languages, including Ada and C++. </blockquote> <br />
<br />
;[http://www.osl.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf A Comparative Study of Language Support for Generic Programming] (pdf)<br />
:Ronald Garcia, Jaakko Jrvi, Andrew Lumsdaine, Jeremy G. Siek, and Jeremiah Willcock. In Proceedings of the 2003 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA'03), October 2003.<blockquote>An interesting comparison of generic programming support across languages, including: Haskell, SML, C++, Java, C#. Haskell supports all constructs described in the paper -- the only language to do so. </blockquote><br />
<br />
;[http://homepages.inf.ed.ac.uk/wadler/realworld/index.html Functional Programming in the Real World]<br />
:A list of functional programs applied to real-world tasks. The main criterion for being real-world is that the program was written primarily to perform some task, not primarily to experiment with functional programming. Functional is used in the broad sense that includes both `pure' programs (no side effects) and `impure' (some use of side effects). Languages covered include CAML, Clean, Erlang, Haskell, Miranda, Scheme, SML, and others.<br />
<br />
;[http://www.defmacro.org/ramblings/lisp-in-haskell.html Lisp in Haskell]<br />
:Writing A Lisp Interpreter In Haskell, a tutorial<br />
<br />
== Teaching Haskell ==<br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1997/208/index.html Where do I begin? A problem solving approach to teaching functional programming]<br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson]. In Krzysztof Apt, Pieter Hartel, and Paul Klint, editors, First International Conference on Declarative Programming Languages in Education. Springer-Verlag, September 1997. <br> <STRONG>Abstract:</STRONG> This paper introduces a problem solving method for teaching functional programming, based on Polya's `How To Solve It', an introductory investigation of mathematical method. We first present the language independent version, and then show in particular how it applies to the development of programs in Haskell. The method is illustrated by a sequence of examples and a larger case study. <br />
<br />
;[http://www.cs.ukc.ac.uk/pubs/1995/214/index.html Functional programming through the curriculum]<br />
:By [http://www.cs.ukc.ac.uk/people/staff/sjt/index.html Simon Thompson] and Steve Hill. In Pieter H. Hartel and Rinus Plasmeijer, editors, Functional Programming Languages in Education, LNCS 1022, pages 85-102. Springer-Verlag, December 1995. <br> <STRONG>Abstract:</STRONG> This paper discusses our experience in using a functional language in topics across the computer science curriculum. After examining the arguments for taking a functional approach, we look in detail at four case studies from different areas: programming language semantics, machine architectures, graphics and formal languages. <br />
<br />
;[http://www.cse.unsw.edu.au/~chak/papers/CK02a.html The Risks and Benefits of Teaching Purely Functional Programming in First Year]<br />
:By [http://www.cse.unsw.edu.au/~chak Manuel M. T. Chakravarty] and [http://www.cse.unsw.edu.au/~keller Gabriele Keller]. Journal of Functional Programming 14(1), pp 113-123, 2004. An earlier version of this paper was presented at Functional and Declarative Programming in Education (FDPE02). <br> <strong>Abstract</strong> We argue that teaching purely functional programming as such in freshman courses is detrimental to both the curriculum as well as to promoting the paradigm. Instead, we need to focus on the more general aims of teaching elementary techniques of programming and essential concepts of computing. We support this viewpoint with experience gained during several semesters of teaching large first-year classes (up to 600 students) in Haskell. These classes consisted of computer science students as well as students from other disciplines. We have systematically gathered student feedback by conducting surveys after each semester. This article contributes an approach to the use of modern functional languages in first year courses and, based on this, advocates the use of functional languages in this setting.<br />
<br />
<br />
==Using monads==<br />
<br />
See also the [[Monad]] HaskellWiki page.<br />
<br />
<br />
===Recommended tutorials===<br />
<br />
;[http://mvanier.livejournal.com/3917.html Mike Vanier's monad tutorial]<br />
:Recommended by David Balaban.<br />
<br />
;[http://www.haskell.org/all_about_monads/html/index.html All About Monads] <br />
:By Jeff Newbern. This tutorial aims to explain the concept of a monad and its application to functional programming in a way that is easy to understand and useful to beginning and intermediate Haskell programmers. Familiarity with the Haskell language is assumed, but no prior experience with monads is required. <br />
<br />
;[[Monads as computation]]<br />
:A tutorial which gives a broad overview to motivate the use of monads as an abstraction in functional programming and describe their basic features. It makes an attempt at showing why they arise naturally from some basic premises about the design of a library.<br />
<br />
;[[Monads as containers]]<br />
:A tutorial describing monads from a rather different perspective: as an abstraction of container-types, rather than an abstraction of types of computation.<br />
<br />
;[http://uebb.cs.tu-berlin.de/~magr/pub/Transformers.en.html Monad Transformers Step by Step]<br />
:By Martin Grabm&uuml;ller. A small tutorial on using monad transformers. In contrast to others found on the web, it concentrates on using them, not on their implementation.<br />
<br />
;[[What a Monad is not]]<br />
<br />
;[http://noordering.wordpress.com/2009/03/31/how-you-shouldnt-use-monad/ How you should(n’t) use Monads]<br />
<br />
;[http://www.sampou.org/haskell/a-a-monads/html/index.html モナドのすべて [All About Monads]]<br />
:A translation of Jeff Newbern's tutorial "All About Monads" into Japanese.<br />
<br />
===Parser===<br />
<br />
;[http://www.haskell.org/sitewiki/images/c/c6/ICMI45-paper-en.pdf The Parser monad and other monad (i.e. a monad with state and I/O string)]. <br />
:The parser monad is used to build modular, flexible, parsers. <br />
<br />
;[http://www.haskell.org/sitewiki/images/c/c6/ICMI45-paper-en.pdf How to build a monadic interpreter in one day] (pdf)<br />
:By Dan Popa. A small tutorial on how to build a language in one day, using the Parser Monad in the front end and a monad with state and I/O string in the back end. Read it if you are interested in learning: <br />
:# language construction and <br />
:# interpreter construction<br />
<br />
===More tutorials===<br />
<br />
;[http://stefan-klinger.de/files/monadGuide.pdf The Haskell Programmer's Guide to the IO Monad - Don't Panic.] <br />
:By Stefan Klinger. This report scratches the surface of category theory, an abstract branch of algebra, just deep enough to find the monad structure. It seems well written.<br />
<br />
;[http://www.prairienet.org/~dsb/monads.htm A (hopefully) painless introduction to monads] <br />
:By Dan Bensen. A straightforward beginner's guide with intuitive explanations and examples.<br />
<br />
;[http://www-users.mat.uni.torun.pl/~fly/materialy/fp/haskell-doc/Monads.html What the hell are Monads?] <br />
:By Noel Winstanley. A basic introduction to monads, monadic programming and IO. This introduction is presented by means of examples rather than theory, and assumes a little knowledge of Haskell. <br />
<br />
;[http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm Monads for the Working Haskell Programmer -- a short tutorial]<br />
:By Theodore Norvell. <br />
<br />
;[http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html You Could Have Invented Monads! (And Maybe You Already Have.)]<br />
:A short tutorial on monads, introduced from a pragmatic approach, with less category theory references <br />
<br />
;[http://www.cs.chalmers.se/~augustss/AFP/monads.html Systematic Design of Monads]<br />
:By John Hughes and Magnus Carlsson. Many useful monads can be designed in a systematic way, by successively adding facilities to a trivial monad. The capabilities that can be added in this way include state, exceptions, backtracking, and output. Here we give a brief description of the trivial monad, each kind of extension, and sketches of some interesting operations that each monad supports.<br />
<br />
;[[Meet Bob The Monadic Lover]]<br />
:By Andrea Rossato. A by-the-author-supposed-to-be funny and short introduction to Monads, with code but without any reference to category theory: what monads look like and what they are useful for, from the perspective of a ... lover. (There is also the slightly more serious [[The Monadic Way]] by the same author.)<br />
<br />
;[http://www.haskell.org/pipermail/haskell-cafe/2006-November/019190.html Monstrous Monads]<br />
:Andrew Pimlott's humourous introduction to monads, using the metaphor of "monsters".<br />
<br />
;[http://strabismicgobbledygook.wordpress.com/2010/03/06/a-state-monad-tutorial/ A State Monad Tutorial]<br />
:A detailed tutorial with simple but practical examples.<br />
<br />
;Computational monads on Reddit, by [http://programming.reddit.com/info/ox6s/comments/coxiv tmoertel] and [http://programming.reddit.com/info/ox6s/comments/coxoh dons].<br />
<br />
;[http://www.loria.fr/~kow/monads/index.html Of monads and space suits]<br />
:By Eric Kow.<br />
<br />
;[[The Monadic Way]]<br />
<br />
;[http://www.alpheccar.org/fr/posts/show/60 Three kind of monads] : sequencing, side effects or containers<br />
<br />
;[[Simple monad examples]]<br />
<br />
;[http://en.wikipedia.org/wiki/Monads_in_functional_programming Article on monads on Wikipedia]<br />
<br />
;[[IO inside]] page<br />
:Explains why I/O in Haskell is implemented with a monad.<br />
<br />
;[http://haskell.org/haskellwiki/Blog_articles#Monads Blog articles]<br />
<br />
;[[Monad Transformers Explained]]<br />
<br />
;[http://www.muitovar.com/monad/moncow.html The Greenhorn's Guide to becoming a Monad Cowboy]<br />
:Covers basics, with simple examples, in a ''for dummies'' style. Includes monad transformers and monadic functions. Estimated learning time 2-3 days.<br />
<br />
;[http://ertes.de/articles/monads.html Understanding Haskell Monads]<br />
<br />
;[http://www.reddit.com/r/programming/comments/64th1/monads_in_python_in_production_code_you_can_and/c02u9mb A very clear explanation by 808140]<br />
<br />
;[[MonadCont under the hood]]<br />
:A detailed description of the ''Cont'' data type and its monadic operations, including the class ''MonadCont''.<br />
<br />
See also [[Research papers/Monads and arrows]]<br />
<br />
<br />
<br />
==Workshops on advanced functional programming==<br />
<br />
;[http://compilers.iecc.com/comparch/article/95-04-024 Advanced Functional Programming: 1st International Spring School on Advanced Functional Programming Techniques], Bastad, Sweden, May 24 - 30, 1995. Tutorial Text (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cse.ogi.edu/PacSoft/conf/summerschool96.html Advanced Functional Programming: 2nd International School], Olympia, Wa, Usa, August 26-30, 1996 Tutorial Text (Lecture Notes in Computer Science) <br />
<br />
;[http://alfa.di.uminho.pt/~afp98/ Advanced Functional Programming: 3rd International School], AFP'98, Braga, Portugal, September 12-19, 1998, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cs.uu.nl/~johanj/afp/afp4/ Advanced Functional Programming: 4th International School], AFP 2002, Oxford, UK, August 19-24, 2002, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
;[http://www.cs.ut.ee/afp04/ Advanced Functional Programming: 5th International School], AFP 2004, Tartu, Estonia, August 14-21, 2004, Revised Lectures (Lecture Notes in Computer Science) <br />
<br />
More advanced materials available from the [[Conferences|conference proceedings]], and the [[Research papers]] collection.<br />
<br />
<br />
[[Category:Tutorials]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=35055AusHac20102010-06-24T14:00:49Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! '''AusHac2010 will be held at UNSW, from the 16th to the 18th of July.'''<br />
<br />
If you're interested in coming, '''please [http://axman6.wufoo.com/forms/aushac-2010-sign-up-20/ sign up] (v2.0, you must sign up to get network access)''', and put your name down on the list below, along with your IRC nickname if you're on #haskell. Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
If you need further information, feel free to email Alex at axman6@gmail.com or Ivan at Ivan.Miljenovic@gmail.com .<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
As mentioned above, the date has now been set for the 16th - 18th of July.<br />
<br />
===Where===<br />
<br />
We will be holding the hackathon in the [http://maps.google.com/maps?cid=9827534508363927277&hl=en&ie=UTF8&hq=&hnear=&ll=-33.918168,151.231077&spn=0.010773,0.022702&t=h&z=16&iwloc=A Computer Science and Engineering building at UNSW] (Bilding K17), in room 113.<br />
<br />
Ben Lippmeier has booked the room from 1:00 pm on Friday until late on Sunday night, and is looking into seeing if those using the room before us could finish earlier, or on another day.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up-20/ sign up page]'''. Please add your name and email there (your details will be kept secret) and then add your details below (so other people can see who's coming). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there.<br />
<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
! Comments<br />
|-<br />
| Axman6<br />
| [[User:Axman6|Alex Mason]]<br />
| Undergrad @ ANU<br />
| <br />
| Friday sometime<br />
| Sunday night<br />
|<br />
| Organiser<br />
|-<br />
| Mounty<br />
| [[User:Mounty|Michael Mounteney]]<br />
| Haskell user<br />
| <br />
| Saturday morning<br />
| Saturday evening<br />
|<br />
| Participant<br />
|-<br />
| ivanm<br />
| [[user:ivanm|Ivan Miljenovic]]<br />
| PhD student @ ANU<br />
| 0416 195 883<br />
| Friday sometime<br />
| Sunday night<br />
| Somewhere cheap<br />
| Organiser<br />
|}<br />
<br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Repa====<br />
'''What:''' "Regular, shape-polymorphic, parallel arrays in Haskell", a library for array computations using regular arrays, which aims to produce very efficient code which can be easily and automatically parallelised, producing very high performance computations on multicore systems. ([http://www.cse.unsw.edu.au/~chak/papers/repa.pdf PDF])<br />
<br />
'''Who:''' Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie, Alex<br />
<br />
==== Notification library ====<br />
'''What:''' write a library for use with libnotify, growl, etc. (note that there is already fdo-notify and GrowlNotify, so this project isn't very original; however, a wrapper library might be nice).<br />
<br />
'''Who:''' Ivan<br />
<br />
==== Library re-builder ====<br />
'''What:''' extend [http://hackage.haskell.org/package/haskell-updater haskell-updater] to use with cabal-install, Arch, etc.<br />
<br />
'''Who:''' Ivan (willing to help out if anyone else is interested; is not planning on doing the conversions himself)<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]<br />
<br />
== Historic information ==<br />
<br />
The old "who's interested" table:<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td></td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td></td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td></td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td></td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td></td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td></td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td></td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td></td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td></td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td></td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>-</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td></td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table></div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=35054AusHac20102010-06-24T13:58:04Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! '''AusHac2010 will be held at UNSW, from the 16th to the 18th of July.'''<br />
<br />
If you're interested in coming, '''please [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up]''', and put your name down on the list below, along with your IRC nickname if you're on #haskell. Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
If you need further information, feel free to email Alex at axman6@gmail.com or Ivan at Ivan.Miljenovic@gmail.com .<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
As mentioned above, the date has now been set for the 16th - 18th of July.<br />
<br />
===Where===<br />
<br />
We will be holding the hackathon in the [http://maps.google.com/maps?cid=9827534508363927277&hl=en&ie=UTF8&hq=&hnear=&ll=-33.918168,151.231077&spn=0.010773,0.022702&t=h&z=16&iwloc=A Computer Science and Engineering building at UNSW] (Bilding K17), in room 113.<br />
<br />
Ben Lippmeier has booked the room from 1:00 pm on Friday until late on Sunday night, and is looking into seeing if those using the room before us could finish earlier, or on another day.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up page]'''. Please add your name and email there (your details will be kept secret) and then add your details below (so other people can see who's coming). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there.<br />
<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
! Comments<br />
|-<br />
| Axman6<br />
| [[User:Axman6|Alex Mason]]<br />
| Undergrad @ ANU<br />
| <br />
| Friday sometime<br />
| Sunday night<br />
|<br />
| Organiser<br />
|-<br />
| Mounty<br />
| [[User:Mounty|Michael Mounteney]]<br />
| Haskell user<br />
| <br />
| Saturday morning<br />
| Saturday evening<br />
|<br />
| Participant<br />
|-<br />
| ivanm<br />
| [[user:ivanm|Ivan Miljenovic]]<br />
| PhD student @ ANU<br />
| 0416 195 883<br />
| Friday sometime<br />
| Sunday night<br />
| Somewhere cheap<br />
| Organiser<br />
|}<br />
<br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Repa====<br />
'''What:''' "Regular, shape-polymorphic, parallel arrays in Haskell", a library for array computations using regular arrays, which aims to produce very efficient code which can be easily and automatically parallelised, producing very high performance computations on multicore systems. ([http://www.cse.unsw.edu.au/~chak/papers/repa.pdf PDF])<br />
<br />
'''Who:''' Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie, Alex<br />
<br />
==== Notification library ====<br />
'''What:''' write a library for use with libnotify, growl, etc. (note that there is already fdo-notify and GrowlNotify, so this project isn't very original; however, a wrapper library might be nice).<br />
<br />
'''Who:''' Ivan<br />
<br />
==== Library re-builder ====<br />
'''What:''' extend [http://hackage.haskell.org/package/haskell-updater haskell-updater] to use with cabal-install, Arch, etc.<br />
<br />
'''Who:''' Ivan (willing to help out if anyone else is interested; is not planning on doing the conversions himself)<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]<br />
<br />
== Historic information ==<br />
<br />
The old "who's interested" table:<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td></td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td></td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td></td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td></td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td></td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td></td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td></td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td></td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td></td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td></td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>-</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td></td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table></div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34493AusHac20102010-04-09T02:16:02Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! '''AusHac2010 will be held at UNSW, from the 16th to the 18th of July.'''<br />
<br />
If you're interested in coming, '''please [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up]''', and put your name down on the list below, along with your IRC nickname if you're on #haskell. Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
If you need further information, feel free to email Alex at axman6@gmail.com or Ivan at Ivan.Miljenovic@gmail.com .<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
As mentioned above, the date has now been set for the 16th - 18th of July.<br />
<br />
===Where===<br />
<br />
We will be holding the hackathon in the [http://maps.google.com/maps?cid=9827534508363927277&hl=en&ie=UTF8&hq=&hnear=&ll=-33.918168,151.231077&spn=0.010773,0.022702&t=h&z=16&iwloc=A Computer Science and Engineering building at UNSW] (Bilding K17), in room 113.<br />
<br />
Ben Lippmeier has booked the room from 1:00 pm on Friday until late on Sunday night, and is looking into seeing if those using the room before us could finish earlier, or on another day.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up page]'''. Please add your name and email there (your details will be kept secret) and then add your details below (so other people can see who's coming). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there.<br />
<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
! Comments<br />
|-<br />
| Axman6<br />
| [[User:Axman6|Alex Mason]]<br />
| Undergrad @ ANU<br />
| <br />
| Friday sometime<br />
| Sunday night<br />
|<br />
| Organiser<br />
|-<br />
| ivanm<br />
| [[user:ivanm|Ivan Miljenovic]]<br />
| PhD student @ ANU<br />
| 0416 195 883<br />
| Friday sometime<br />
| Sunday night<br />
| Somewhere cheap<br />
| Organiser<br />
|}<br />
<br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Repa====<br />
'''What:''' "Regular, shape-polymorphic, parallel arrays in Haskell", a library for array computations using regular arrays, which aims to produce very efficient code which can be easily and automatically parallelised, producing very high performance computations on multicore systems. ([http://www.cse.unsw.edu.au/~chak/papers/repa.pdf PDF])<br />
<br />
'''Who:''' Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie<br />
<br />
==== Notification library ====<br />
'''What:''' write a library for use with libnotify, growl, etc. (note that there is already fdo-notify and GrowlNotify, so this project isn't very original; however, a wrapper library might be nice).<br />
<br />
'''Who:''' Ivan<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]<br />
<br />
== Historic information ==<br />
<br />
The old "who's interested" table:<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td></td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td></td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td></td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td></td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td></td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td></td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td></td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td></td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td></td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td></td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>-</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td></td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table></div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34492AusHac20102010-04-09T02:12:01Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! '''AusHac2010 will be held at UNSW, from the 16th to the 18th of July.'''<br />
<br />
If you're interested in coming, '''please [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up]''', and put your name down on the list below, along with your IRC nickname if you're on #haskell. Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
If you need further information, feel free to email Alex at axman6@gmail.com or Ivan at Ivan.Miljenovic@gmail.com .<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
As mentioned above, the date has now been set for the 16th - 18th of July.<br />
<br />
===Where===<br />
<br />
We will be holding the hackathon in the [http://maps.google.com/maps?cid=9827534508363927277&hl=en&ie=UTF8&hq=&hnear=&ll=-33.918168,151.231077&spn=0.010773,0.022702&t=h&z=16&iwloc=A Computer Science and Engineering building at UNSW] (Bilding K17), in room 113.<br />
<br />
Ben Lippmeier has booked the room from 1:00 pm on Friday until late on Sunday night, and is looking into seeing if those using the room before us could finish earlier, or on another day.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up page]'''. Please add your name and email there (your details will be kept secret) and then add your details below (so other people can see who's coming). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there.<br />
<br />
<br />
{| class="wikitable"<br />
! Nickname<br />
! Real Name<br />
! Affiliation<br />
! Mobile #<br />
! Arriving<br />
! Departing<br />
! Accomodation<br />
! Comments<br />
|-<br />
| Axman6<br />
| [[User:Axman6|Alex Mason]]<br />
| Undergrad @ ANU<br />
| <br />
| Friday sometime<br />
| Sunday night<br />
|<br />
| Organiser<br />
|-<br />
| ivanm<br />
| [[user:ivanm|Ivan Miljenovic]]<br />
| PhD student @ ANU<br />
| 0416 195 883<br />
| Friday sometime<br />
| Sunday night<br />
| Somewhere cheap<br />
| Organiser<br />
|}<br />
<br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Repa====<br />
'''What:''' "Regular, shape-polymorphic, parallel arrays in Haskell", a library for array computations using regular arrays, which aims to produce very efficient code which can be easily and automatically parallelised, producing very high performance computations on multicore systems.<br />
<br />
'''Who:''' Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie<br />
<br />
==== Notification library ====<br />
'''What:''' write a library for use with libnotify, growl, etc. (note that there is already fdo-notify and GrowlNotify, so this project isn't very original; however, a wrapper library might be nice).<br />
<br />
'''Who:''' Ivan<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]<br />
<br />
== Historic information ==<br />
<br />
The old "who's interested" table:<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td></td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td></td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td></td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td></td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td></td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td></td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td></td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td></td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td></td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td></td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>-</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td></td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table></div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34257AusHac20102010-03-23T03:12:25Z<p>Axman6: Added map link</p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! '''AusHac2010 will be held at UNSW, from the 16th to the 18th of July.'''<br />
<br />
If you're interested in coming, '''please [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up]''', and put your name down on the list below, along with your IRC nickname if you're on #haskell. Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
As mentioned above, the date has now been set for the 16th - 18th of July.<br />
<br />
===Where===<br />
<br />
We will be holding the hackathon in the [http://maps.google.com/maps?cid=9827534508363927277&hl=en&ie=UTF8&hq=&hnear=&ll=-33.918168,151.231077&spn=0.010773,0.022702&t=h&z=16&iwloc=A Computer Science and Engineering building at UNSW] (Bilding K17), in room 113.<br />
<br />
Ben Lippmeier has booked the room from 1:00 pm on Friday until late on Sunday night, and is looking into seeing if those using the room before us could finish earlier, or on another day.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up page]'''. Please add your name and email there (your details will be kept secret). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there. '''Please don't add your email address''', I've kept mine here so I can be contacted. We'll get your address from the sign up page.<br />
<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td></td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td></td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td></td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td></td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td></td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td></td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td></td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td></td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td></td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>-</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td></td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34256AusHac20102010-03-23T02:43:59Z<p>Axman6: Removed everyone's email addresses, and confirmed dated</p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! '''AusHac2010 will be held at UNSW, from the 16th to the 18th of July.'''<br />
<br />
If you're interested in coming, '''please [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up]''', and put your name down on the list below, along with your IRC nickname if you're on #haskell. Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
As mentioned above, the date has now been set for the 16th - 18th of July.<br />
<br />
===Where===<br />
<br />
Ben Lippmeier has booked a room from 1:00 pm on Friday until Late on Sunday night, and is looking into seeing if those using the room before us could finish earlier, or on another day.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up page]'''. Please add your name and email there (your details will be kept secret). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there. '''Please don't add your email address''', I've kept mine here so I can be contacted. We'll get your address from the sign up page.<br />
<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td></td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td></td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td></td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td></td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td></td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td></td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td></td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td></td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td></td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>-</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td></td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie<br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34248AusHac20102010-03-22T09:56:03Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up]''', and put your name down on the list below, along with your IRC nickname if you're on #haskell. Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up page]'''. Please add your name and email there (your details will be kept secret). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there, but feel free to remove your email address.<br />
<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td>liamoc@cse.unsw.edu.au</td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td>erikd@mega-nerd.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>ben.d.sinclair@gmail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td>florbitous <at> gmail <dot> com </td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td>poisonthemon@gmail.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td>@haskell.org</td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td>alt.mattr@gmail.com</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie<br />
<br />
=== Dates ===<br />
If you want to propose a date, add it to the list below.<br />
<br />
It has been proposed that we have the date set at the weekend of the 16th-18th of July. (I [Axman6] would prefer it to be a week earlier, because the 19th is the first day of uni at ANU and UNSW). <br />
<br />
<table border="1"><br />
<tr><br />
<td>Date</td><br />
<td>Who can make it</td><br />
<td>Who can't</td><br />
<td>Comments</td><br />
</tr><br />
<br />
<tr><br />
<td>July 9th-11th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>Manuel Chakravarty</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>July 16th-18th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>-</td><br />
<td>This ends the day before ANU and UNSW terms begin</td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34247AusHac20102010-03-22T09:54:44Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
'''We now have a [http://axman6.wufoo.com/forms/aushac-2010-sign-up/ sign up page]'''. Please add your name and email there (your details will be kept secret). Sorry to all those who have put their name down below, We might keep the table around, so that everyone can see who is going to be there, but feel free to remove your email address.<br />
<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td>liamoc@cse.unsw.edu.au</td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td>erikd@mega-nerd.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>ben.d.sinclair@gmail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Bernie Pope</td><br />
<td>bjpop</td><br />
<td>florbitous <at> gmail <dot> com </td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Stephen Gream</td><br />
<td>Fallen_Demon</td><br />
<td>poisonthemon@gmail.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Jens Petersen</td><br />
<td>juhp</td><br />
<td>@haskell.org</td><br />
<td>Weekends</td><br />
<td>earlier better</td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Matt Roberts</td><br />
<td>altmattr</td><br />
<td>alt.mattr@gmail.com</td><br />
<td></td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish, Jens<br />
<br />
====MPI bindings====<br />
'''What:''' The Message Passing Interface [http://en.wikipedia.org/wiki/Message_Passing_Interface MPI] is a popular library/standard used in distributed high performance computing systems . An [http://www.foldr.org/~michaelw/hmpi/ old Haskell binding] exists, but has suffered severe bit rot. It would be nice to get this working again, and then try to build some nicer abstractions on top (such as mapReduce).<br />
<br />
'''Who:''' Bernie<br />
<br />
=== Dates ===<br />
If you want to propose a date, add it to the list below.<br />
<br />
It has been proposed that we have the date set at the weekend of the 16th-18th of July. (I [Axman6] would prefer it to be a week earlier, because the 19th is the first day of uni at ANU and UNSW). <br />
<br />
<table border="1"><br />
<tr><br />
<td>Date</td><br />
<td>Who can make it</td><br />
<td>Who can't</td><br />
<td>Comments</td><br />
</tr><br />
<br />
<tr><br />
<td>July 9th-11th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>Manuel Chakravarty</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>July 16th-18th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>-</td><br />
<td>This ends the day before ANU and UNSW terms begin</td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34200AusHac20102010-03-19T22:10:44Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td>liamoc@cse.unsw.edu.au</td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>Organiser</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td>erikd@mega-nerd.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>ben.d.sinclair@gmail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish<br />
<br />
=== Dates ===<br />
If you want to propose a date, add it to the list below.<br />
<br />
It has been proposed that we have the date set at the weekend of the 16th-18th of July. (I [Axman6] would prefer it to be a week earlier, because the 19th is the first day of uni at ANU and UNSW). <br />
<br />
<table border="1"><br />
<tr><br />
<td>Date</td><br />
<td>Who can make it</td><br />
<td>Who can't</td><br />
<td>Comments</td><br />
</tr><br />
<br />
<tr><br />
<td>July 9th-11th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>Manuel Chakravarty</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>July 16th-18th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>-</td><br />
<td>This ends the day before ANU and UNSW terms begin</td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34199AusHac20102010-03-19T22:10:11Z<p>Axman6: Linked to my User page</p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>[[User:Axman6|Alex Mason]]</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td>liamoc@cse.unsw.edu.au</td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td>erikd@mega-nerd.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>ben.d.sinclair@gmail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish<br />
<br />
=== Dates ===<br />
If you want to propose a date, add it to the list below.<br />
<br />
It has been proposed that we have the date set at the weekend of the 16th-18th of July. (I [Axman6] would prefer it to be a week earlier, because the 19th is the first day of uni at ANU and UNSW). <br />
<br />
<table border="1"><br />
<tr><br />
<td>Date</td><br />
<td>Who can make it</td><br />
<td>Who can't</td><br />
<td>Comments</td><br />
</tr><br />
<br />
<tr><br />
<td>July 9th-11th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>Manuel Chakravarty</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>July 16th-18th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>-</td><br />
<td>This ends the day before ANU and UNSW terms begin</td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]<br />
<br />
[[Category:Events]]<br />
<br />
[[Category:Hackathon]]</div>Axman6https://wiki.haskell.org/index.php?title=User:Axman6&diff=34198User:Axman62010-03-19T22:09:16Z<p>Axman6: </p>
<hr />
<div>'''Name:''' Alex Mason<br/><br />
'''Web site:''' [http://random.axman6.com/blog/ Data.Random blog]<br/><br />
'''Who am I:''' I'm a student at the [http://anu.edu.au/ ANU] in Canberra, Australia, studying for my Engineering and IT double degree<br/><br />
<br />
=== Things I've done ===<br />
<br />
Co-organiser of the first Australian Haskell Hackathon: [[AusHac2010]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34178AusHac20102010-03-19T05:44:20Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<tr><br />
<td>Liam O'Connor-Davis</td><br />
<td>kamatsu</td><br />
<td>liamoc@cse.unsw.edu.au</td><br />
<td>All the UNSW midyear break.</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td>erikd@mega-nerd.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Ben Sinclair</td><br />
<td>bens</td><br />
<td>ben.d.sinclair@gmail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Michael Mounteney</td><br />
<td>mounty?</td><br />
<td></td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish<br />
<br />
=== Dates ===<br />
If you want to propose a date, add it to the list below.<br />
<br />
It has been proposed that we have the date set at the weekend of the 16th-18th of July. (I [Axman6] would prefer it to be a week earlier, because the 19th is the first day of uni at ANU and UNSW). <br />
<br />
<table border="1"><br />
<tr><br />
<td>Date</td><br />
<td>Who can make it</td><br />
<td>Who can't</td><br />
<td>Comments</td><br />
</tr><br />
<br />
<tr><br />
<td>July 9th-11th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>Manuel Chakravarty</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>July 16th-18th</td><br />
<td>Alex Mason<br />Ivan Miljenovic<br/>Liam O'Connor-Davis<br/>Mark Wotton</td><br />
<td>-</td><br />
<td>This ends the day before ANU and UNSW terms begin</td><br />
</tr><br />
</table><br />
<br />
== Accommodation ==<br />
<br />
=== Hostels ===<br />
If you're looking for somewhere cheap to stay near UNSW then there are a [http://www.hostelworld.com/hostels/Sydney/Coogee few back-packers in Coogee].<br />
It's about a 10 minute bus ride from Coogee Beach to UNSW. Shared rooms are AUD$30 - 40.<br />
<br />
For something a bit further out, you could also try one of the [http://www.yha.com.au/hostels/search/region.cfm?regionid=62 Sydney YHA hostels]. The Glebe one is walking distance to Darling Harbour, though it takes about 50 min to get to UNSW via light rail then bus. Private rooms with shared facilities are about AUD$80. Shared rooms are AUD$30 - 40.<br />
<br />
If you want to say across the road from Central station, and don't mind hanging out with English gap-year kids, then you try [http://www.wakeup.com.au/ WakeUp].<br />
<br />
If you like to party then [http://www.evasbackpackers.com.au/ Evas Backpackers] is a short stumble home from Kings Cross. <br />
<br />
I'd avoid [http://www.sydneycentralonwentworth.com.au/ SydneyCentralOnWentworth]. It has a pretty website but the rooms are small and dingy (benl23 stayed there in 2009)<br />
<br />
Note that hostels tend to be busiest on Friday and Saturday nights, so it's good to book early.<br />
<br />
=== Colleges ===<br />
For something more up-market you could try one of [http://www.housing.unsw.edu.au/housing/short_term/short_term.php?p=overview the UNSW residential Colleges]. This site also has more links to hotels and hostels.<br />
<br />
=== Hotels ===<br />
If you have AUD$120 - 150 per night and aren't organised then [http://www.lastminute.com.au/hotels.html LastMinute] is a good place to find a hotel. You get the best prices if you book 2-3 days in advance.<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34166AusHac20102010-03-19T00:39:25Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td>erikd@mega-nerd.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish<br />
<br />
=== Dates ===<br />
If you want to propose a date, add it to the list below.<br />
<br />
It has been proposed that we have the date set at the weekend of the 16th-18th of July. (I [Axman6] would prefer it to be a week earlier, because the 19th is the first day of uni at ANU and UNSW). <br />
<br />
<table border="1"><br />
<tr><br />
<td>Date</td><br />
<td>Who can make it</td><br />
<td>Who can't</td><br />
<td>Comments</td><br />
</tr><br />
<br />
<tr><br />
<td>July 9th-11th</td><br />
<td>Alex Mason<br />Ivan Miljenovic</td><br />
<td>Manuel Chakravarty</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>July 16th-18th</td><br />
<td>Alex Mason<br />Ivan Miljenovic</td><br />
<td>-</td><br />
<td>This ends the day before ANU and UNSW terms begin</td><br />
</tr><br />
</table><br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34163AusHac20102010-03-18T23:59:16Z<p>Axman6: Added Dates table</p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
<td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
<tr><br />
<td>Erik de Castro Lopo</td><br />
<td>m3ga</td><br />
<td>erikd@mega-nerd.com</td><br />
<td>Weekends</td><br />
<td></td><br />
<td></td><br />
</tr><br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel, Erik<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish<br />
<br />
=== Dates ===<br />
If you want to propose a date, add it to the list below.<br />
<br />
It has been proposed that we have the date set at the weekend of the 16th-18th of July. (I [Axman6] would prefer it to be a week earlier, because the 19th is the first day of uni at ANU and UNSW). <br />
<br />
<table border="1"><br />
<tr><br />
<td>Date</td><br />
<td>Who can make it</td><br />
<td>Comments</td><br />
</tr><br />
<br />
<tr><br />
<td>July 9th-11th</td><br />
<td>Alex Mason</td><br />
<td>-</td><br />
</tr><br />
<br />
<tr><br />
<td>July 16th-18th</td><br />
<td>Alex Mason</td><br />
<td>This ends the day before ANU and UNSW terms begin</td><br />
</tr><br />
</table><br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34154AusHac20102010-03-18T20:25:13Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
<tr><br />
<td>Tony Morris</td><br />
<td>dibblego</td><br />
<td>code@tmorris.net</td><br />
<td>Nothing specific</td><br />
<td>-</td><br />
<td>Tentative, depending on health</td><br />
</tr><br />
<br />
<tr><br />
<td>Manuel Chakravarty</td><br />
<td>TacticalGrace</td><br />
<td>chak@justtesting.org</td><br />
<td>I'm away 4-11 July; will probably not be able to attend all of it regardless of date</td><br />
<td>Probably weekend of the 18th July</td><br />
<td>Will help getting a room at UNSW</td><br />
</tr><br />
<br />
<tr><br />
<td>Mark Wotton</td><br />
td>blackdog</td><br />
<td>mwotton@gmail.com</td><br />
<td>flexible, but weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>David Terei</td><br />
<td>dterei</td><br />
<td>dave.terei@gmail.com</td><br />
<td>I'm away from April - start of August. Probably can't attend given proposed dates</td><br />
<td>Any weekend after August 19th</td><br />
<td></td><br />
</tr><br />
<br />
<tr><br />
<td>Hamish Mackenzie</td><br />
<td>hamishmack</td><br />
<td>hamish.k.mackenzie@googlemail.com</td><br />
<td>Any weekend</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Ben Lippmeier</td><br />
<td>benl23</td><br />
<td>benl@ouroborus.net</td><br />
<td>flexible</td><br />
<td></td><br />
<td></td><br />
</tr><br />
<tr><br />
<td>Stephen Blackheath</td><br />
<td>blackh</td><br />
<td>naughty.biscuit.stephen@blacksapphire.com</td><br />
<td>Any time</td><br />
<td></td><br />
<td>Please fix date soon if poss</td><br />
</tr><br />
<br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:''' I (Ivan) last year floated the idea of replacing the current default array-based Graph data type with an extensible set of classes with default instances. There's various interest about this around and I've done some work on it, but if there's anyone else coming it'd be better to bounce ideas together about how to define such classes.<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M, Manuel<br />
<br />
====Accelerate====<br />
'''What:''' [http://hackage.haskell.org/package/accelerate Accelerate] is a Haskell EDSL for regular array computations. The aim is to make it generate so blindingly fast code that the C folks start to cry. An LLVM backend is in very early stages of development and a CUDA GPU backend is good enough to run some first small Accelerate programs.<br />
<br />
'''Who:''' Manuel, Alex M<br />
<br />
====Hubris====<br />
'''What:''' [http://github.com/mwotton/hubris Hubris] is a bridge between Ruby and Haskell. There are two main options - working on Hubris itself (adding instances for more data types, making it easier to install, chasing the 64-bit linking bug...) or actually building something cool with it. Open to either. (Oh, one other idea - using Hubris to export QuickCheck to Ruby directly. RushCheck looks a bit moribund these days...)<br />
<br />
'''Who:''' Mark<br />
<br />
====Leksah====<br />
'''What:''' [http://leksah.org/ Leksah] is a Haskell IDE written in Haskell. Goal for 1.0 is mainly to fix issues in 0.8 rather than add new features, but it would also be nice to make some more progress on replacing GtkSourceView with Yi. Support for running QuickCheck and HUnit may be something we could slip into 1.0.<br />
<br />
'''Who:''' Hamish<br />
<br />
=== Dates ===<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34115AusHac20102010-03-17T11:27:49Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
</table><br />
<br />
== Discussion ==<br />
<br />
=== Possible Projects ===<br />
<br />
====Generic graph class====<br />
'''What:'''<br />
<br />
'''Who:''' Ivan M<br />
<br />
====Gloss-based plots====<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for plotting. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
====GHC LLVM backend====<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M<br />
<br />
=== Dates ===<br />
<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34114AusHac20102010-03-17T11:24:54Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
</table><br />
<br />
= Discussion =<br />
<br />
== Possible Projects ==<br />
<br />
===Generic graph class===<br />
'''What:'''<br />
<br />
'''Who:''' Ivan M<br />
<br />
===Gloss-based plots===<br />
'''What:''' Either an alternative graphing back end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for graphing/charging. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see. (We may look into writing some other library that's better suited than Gloss, as Gloss is aimed at students learning haskell, and wanting to just get something drawn)<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
===GHC LLVM backend===<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34113AusHac20102010-03-17T11:22:22Z<p>Axman6: </p>
<hr />
<div>If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
</table><br />
<br />
= Discussion =<br />
<br />
== Possible Projects ==<br />
<br />
===Generic graph class===<br />
'''What:'''<br />
<br />
'''Who:''' Ivan M<br />
<br />
===Gloss-based plots===<br />
'''What:''' Either just a front end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for graphing/charging. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see.<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
===GHC LLVM backend===<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34112AusHac20102010-03-17T11:21:45Z<p>Axman6: </p>
<hr />
<div>= AusHac2010 =<br />
<br />
If you've found this page, you use Haskell, ''and'' live in Australia (or at the very least able and willing to travel here), then you're in the right place! We're looking into organising a Haskell [[Hackathon]] some time during the middle of 2010, and this where it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to add it to the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
===Why===<br />
<br />
Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some (potentially) useful work done!<br />
<br />
===When===<br />
<br />
A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
===Where===<br />
<br />
Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
===Who===<br />
<br />
If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
<br />
<tr><br />
<td>[[:User:ivanm|Ivan Miljenovic]]</td><br />
<td>ivanm</td><br />
<td>Ivan <dot> Miljenovic <at> gmail <dot> com</td><br />
<td>*shrug* lazy PhD student, so whenever</td><br />
<td>&nbsp;&nbsp; <=== </td><br />
<td>ditto</td><br />
</tr><br />
<br />
</table><br />
<br />
= Discussion =<br />
<br />
== Possible Projects ==<br />
<br />
===Generic graph class===<br />
'''What:'''<br />
<br />
'''Who:''' Ivan M<br />
<br />
===Gloss-based plots===<br />
'''What:''' Either just a front end to Criterion that only relies on OpenGL (through the use of Gloss), or a library for graphing/charging. At the moment Gloss looks like it may only be suitable for bar type graphs, but we'll see.<br />
<br />
'''Who:''' Ivan M, Alex M<br />
<br />
===GHC LLVM backend===<br />
'''What:''' The recent work dome by David Terei on an LLVM backend for GHC has shown some fantastic results, and getting it to a point where it could become the default GHC backend is something a lot of people would really like to see.<br />
<br />
'''Who:''' Alex M<br />
<br />
== Related Links ==<br />
<br />
* [[OzHaskell]]</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34108AusHac20102010-03-17T11:00:11Z<p>Axman6: </p>
<hr />
<div>= AusHac2010 =<br />
<br />
If you've found this page, you use haskell, and live in Australia, then you're in the right place! We're looking into organising a a Haskell hackathon some time during the middle of 2010, and this were it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to ass it you the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
'''Why:''' Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some useful work done!<br />
<br />
'''When:''' A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
'''Where:''' Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
'''Who:''' If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table border="1px"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
</table><br />
<br />
= Discussion =</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34107AusHac20102010-03-17T10:58:29Z<p>Axman6: </p>
<hr />
<div>= AusHac2010 =<br />
<br />
If you've found this page, you use haskell, and live in Australia, then you're in the right place! We're looking into organising a a Haskell hackathon some time during the middle of 2010, and this were it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to ass it you the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
'''Why:''' Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some useful work done!<br />
<br />
'''When:''' A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
'''Where:''' Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
'''Who:''' If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table style="border: 1px solid black;"><br />
<tr><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</tr><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
</table><br />
<br />
= Discussion =</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34106AusHac20102010-03-17T10:57:30Z<p>Axman6: </p>
<hr />
<div>= AusHac2010 =<br />
<br />
If you've found this page, you use haskell, and live in Australia, then you're in the right place! We're looking into organising a a Haskell hackathon some time during the middle of 2010, and this were it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to ass it you the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
== What we've got so far ==<br />
<br />
'''Why:''' Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some useful work done!<br />
<br />
'''When:''' A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
'''Where:''' Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
'''Who:''' If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table style="border: 1px solid black;"><br />
<th><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</th><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
</table><br />
<br />
= Discussion =</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34105AusHac20102010-03-17T10:55:43Z<p>Axman6: </p>
<hr />
<div>== AusHac2010 ==<br />
<br />
If you've found this page, you use haskell, and live in Australia, then you're in the right place! We're looking into organising a a Haskell hackathon some time during the middle of 2010, and this were it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory). Also, if you've got something to discuss, feel free to ass it you the bottom of the page in the Discussion section (just to keep the rest of the page clean and helpful).<br />
<br />
= What we've got so far =<br />
<br />
'''Why:''' Because we miss out on all the fun they have up north, and we've got something to offer. It's also a great chance to meet all these people you talk to on IRC, or read their blogs, and just have a good time, while getting some useful work done!<br />
<br />
'''When:''' A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
* ANU: 7 June -> 18 July<br />
* UNSW: 29 June -> 18 July<br />
<br />
So so far we need a weekend between the 28th of June and the 18th of July.<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
'''Where:''' Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
'''Who:''' If you're interested in coming, please show your interest by adding your details to the list below (if you don't have an account, please email me (Axman6) your details and I'll add you).<br />
<br />
<table><br />
<th><br />
<td>Name</td><br />
<td>IRC Nickname</td><br />
<td>Email</td><br />
<td>Availability</td><br />
<td>Preferred date</td><br />
<td>Comment</td><br />
</th><br />
<br />
<tr><br />
<td>Alex Mason</td><br />
<td>Axman6</td><br />
<td>axman6@gmail.com</td><br />
<td>Probably any weekend during the ANU holidays</td><br />
<td>-</td><br />
<td>Organiser... sort of</td><br />
</tr><br />
<br />
</table><br />
<br />
= Discussion =</div>Axman6https://wiki.haskell.org/index.php?title=AusHac2010&diff=34104AusHac20102010-03-17T10:44:02Z<p>Axman6: </p>
<hr />
<div>== AusHac2010 ==<br />
<br />
If you've found this page, you use haskell, and live in Australia, then you're in the right place! We're looking into organising a a Haskell hackathon some time during the middle of 2010, and this were it shall be organised.<br />
<br />
If you're interested in coming, '''please''' put your name down on the list below, along with your IRC nickname if you're on #haskell, and possibly your email (We'll use this to let you know of any progress we've made, but it's not mandatory).<br />
<br />
= What we've got so far =<br />
<br />
'''When:''' A few dates have been discussed, mainly taking into account when the university holidays are for various universities:<br />
<br />
ANU: June 7 -> July 18<br />
UNSW: 29 June -> 18 July<br />
<br />
We're looking at organising it over a weekend, and I (Axman6) would quite like to have it start on a Friday, ending on Sunday. This does not at all mean that those who can’t make the Friday will miss out, the more people we have, the better. But I think that having more time will mean that we can get more done (which is the point right?).<br />
<br />
'''Where:''' Manuel Chakravarty and Ben Lippmeier have said there should be no problem finding a room at UNSW, with the only possible problem being Internet access for everyone, but hopefully something can be arranged by that time.<br />
<br />
'''Who:'''</div>Axman6https://wiki.haskell.org/index.php?title=Mac_OS_X&diff=32870Mac OS X2010-01-09T14:25:43Z<p>Axman6: Added notes about putting .cabal/bin in your PATH</p>
<hr />
<div>== GHC ==<br />
<br />
==== Important notes ====<br />
<br />
To get the most out of your GHC environment, you should '~/.cabal/bin' to your PATH environment variable before the path where you have GHC installed. This will allow you to get and use cabal-updates, as well as other programs shipped with GHC like hsc2hs.<br />
<br />
In you ~/.profile, add the line:<br />
<br />
<code>export PATH="~/.cabal/bin:$PATH";</code><br />
<br />
<br />
=== Mac OS X 10.5 (Leopard) ===<br />
<br />
To install GHC on Mac OS X 10.5 (Leopard), there are the following options:<br />
* install the [http://hackage.haskell.org/platform/ Haskell Platform]<br />
* install [http://www.macports.org MacPort]'s [http://trac.macports.org/browser/trunk/dports/lang/ghc/Portfile ghc] package<br />
<br />
=== Mac OS X 10.6 (Snow Leopard) ===<br />
Mac OS X 10.6.x (Snow Leopard) works with GHC, after you apply a simple patch.<br />
The problem is that GHC generates 32bit code, but gcc on Snow Leopard defaults to 64bit code on machines with processors that support it. The patch simply tells GHC to tell gcc to work in 32bit:<br />
<br />
* Install the [http://hackage.haskell.org/platform/ Haskell Platform]<br />
* Open <code>/Library/Frameworks/GHC.framework/Versions/Current/usr/bin/ghc-6.10.4</code> in a text editor<br />
* Insert <code>-optc-m32 -opta-m32 -optl-m32</code> just before the last parameter.<br />
<br />
<br />
The last line in that file is rather long, and should now end like <code> -dynload wrapped -optc-m32 -opta-m32 -optl-m32 ${1+"$@"}</code><br />
<br />
<br />
Don't be tempted to just put an edited local copy of the script in ~/bin/ghc, or edit all the various GHC files in /usr/bin. There is a maze of twisty symlinks that all eventually lead to the above script, and fixing just it is far simpler.<br />
<br />
See also [http://passingcuriosity.com/2009/haskell-on-snow-leopard/ Haskell on Snow Leopard].<br />
<br />
Many packages need hsc2hs. To make it work correctly you need similar hackery:<br />
<br />
* Open <code>/usr/bin/hsc2hs</code><br />
* Insert <code>--cflag="-m32" --lflag="-m32"</code> before $tflag<br />
<br />
Affected packages include things like zlib and mmap. Building them on Snow Leopard without the above trick leads to nasty bugs in packages depending on them (including darcs). For darcs built on an affected system symptoms include messages like "incompatible zlib version" and "memory allocation failed".<br />
<br />
To uninstall ghc call:<br />
<br />
<code><br />
sudo /Library/Frameworks/GHC.framework/Tools/Uninstaller<br />
</code><br />
<br />
== HUGS ==<br />
<br />
* install [http://www.macports.org MacPort]'s [http://trac.macports.org/browser/trunk/dports/lang/hugs98/Portfile hugs98] package.<br />
<br />
== Editors with Haskell support ==<br />
<br />
=== Open Source ===<br />
<br />
* [http://aquamacs.org/ AquaMacs], a graphical Emacs version<br />
* [http://eclipsefp.sourceforge.net/ Eclipse] with the [http://eclipsefp.sourceforge.net/ EclipseFP] plugin<br />
* [http://www.gnu.org/software/emacs/ Emacs], is installed on every Mac<br />
* [http://leksah.org/ Leksah]<br />
* [http://code.google.com/p/macvim/ MacVim], a graphical Vim version<br />
* [http://www.vim.org/ Vim], is installed on every Mac<br />
* [http://haskell.org/haskellwiki/Yi Yi] (written in Haskell itself!), is available through cabal-install<br />
<br />
=== Commercial ===<br />
<br />
[http://www.codingmonkeys.de/subethaedit/ SubEthaEdit]:<br />
<br />
[[Image:SubEthaEdit.png]]<br />
<br />
[http://macromates.com/ TextMate]:<br />
<br />
[[Image:TextMate.png]]<br />
<br />
and [http://tuppis.com/smultron/ Smultron]:<br />
<br />
[[Image:Smultron.png]]<br />
<br />
TextEdit is Mac's default text editor, a very basic editor that works fine for most uses, you must however be careful to put it into plain text mode using the Format menu.<br />
<br />
== Shipping Installable Haskell Applications ==<br />
<br />
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mkbndl mkbndl] builds installable Mac OSX applications from your Haskell project.<br />
<br />
== Links ==<br />
* [[Using Haskell in an Xcode Cocoa project]]; a description of how to add a Haskell module (callable from C) to an Xcode/Cocoa/Interface builder project on your Mac.<br />
* [[Mac OS X Common Installation Paths]]: an effort to standardize where things go on a Mac OS X installation<br />
[[Category:OS]]</div>Axman6https://wiki.haskell.org/index.php?title=Arrow_tutorial&diff=32813Arrow tutorial2010-01-04T04:56:36Z<p>Axman6: Changed the ASCII diagram for the part after hOutput</p>
<hr />
<div>[[Category:Tutorials]]<br />
[[Category:Arrow]]<br />
<haskell><br />
<br />
> {-# LANGUAGE Arrows #-}<br />
> module ArrowFun where<br />
> import Control.Arrow<br />
> import Control.Category<br />
> import Prelude hiding (id,(.))<br />
<br />
</haskell><br />
<br />
== The Arrow ==<br />
Arrow a b c represents a process that takes as input something of<br />
type b and outputs something of type c.<br />
<br />
Arr builds an arrow out of a function. This function is<br />
arrow-specific. Its signature is<br />
<br />
<haskell><br />
<br />
arr :: (Arrow a) => (b -> c) -> a b c<br />
<br />
</haskell><br />
<br />
Arrow composition is achieved with (>>>). This takes two arrows<br />
and chains them together, one after another. It is also arrow-<br />
specific. Its signature is:<br />
<br />
<haskell><br />
<br />
(>>>) :: (Arrow a) => a b c -> a c d -> a b d<br />
<br />
</haskell><br />
<br />
First and second make a new arrow out of an existing arrow. They<br />
perform a transformation (given by their argument) on either<br />
the first or the second item of a pair. These definitions are<br />
arrow-specific. Their signatures are:<br />
<br />
<haskell><br />
<br />
first :: (Arrow a) => a b c -> a (b, d) (c, d)<br />
second :: (Arrow a) => a b c -> a (d, b) (d, c)<br />
<br />
</haskell><br />
<br />
First and second may seem pretty strange at first, but they'll make sense <br />
in a few minutes.<br />
<br />
That's it for the arrow-specific definitions.<br />
<br />
== A Simple Arrow ==<br />
Let's define a really simple arrow as an example. Our simple arrow is <br />
just a function mapping an input to an output. We don't really need <br />
arrows for something this simple, but we could use something this <br />
simple to explain arrows.<br />
<br />
<haskell><br />
<br />
> newtype SimpleFunc a b = SimpleFunc {<br />
> runF :: (a -> b)<br />
> }<br />
><br />
> instance Arrow SimpleFunc where<br />
> arr f = SimpleFunc f<br />
> first (SimpleFunc f) = SimpleFunc (mapFst f)<br />
> where mapFst g (a,b) = (g a, b)<br />
> second (SimpleFunc f) = SimpleFunc (mapSnd f)<br />
> where mapSnd g (a,b) = (a, g b)<br />
><br />
> instance Category SimpleFunc where<br />
> (SimpleFunc g) . (SimpleFunc f) = SimpleFunc (g . f)<br />
> id = arr id<br />
<br />
</haskell><br />
<br />
== Some Arrow Operations ==<br />
Now lets define some operations that are generic to all arrows.<br />
<br />
Split is an arrow that splits a single value into a pair of duplicate<br />
values:<br />
<br />
<haskell><br />
<br />
> split :: (Arrow a) => a b (b, b)<br />
> split = arr (\x -> (x,x))<br />
<br />
</haskell><br />
<br />
Unsplit is an arrow that takes a pair of values and combines them<br />
to return a single value:<br />
<br />
<haskell><br />
<br />
> unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d<br />
> unsplit = arr . uncurry <br />
> -- arr (\op (x,y) -> x `op` y)<br />
<br />
</haskell><br />
<br />
(***) combines two arrows into a new arrow by running the two arrows<br />
on a pair of values (one arrow on the first item of the pair and one arrow on the <br />
second item of the pair).<br />
<br />
<haskell><br />
<br />
f *** g = first f >>> second g<br />
<br />
</haskell><br />
<br />
(&&&) combines two arrows into a new arrow by running the two arrows on <br />
the same value:<br />
<br />
<haskell><br />
<br />
f &&& g = split >>> first f >>> second g<br />
-- = split >>> f *** g<br />
<br />
</haskell><br />
<br />
LiftA2 makes a new arrow that combines the output from two arrows using <br />
a binary operation. It works by splitting a value and operating on <br />
both halfs and then combining the result:<br />
<br />
<haskell><br />
<br />
> liftA2 :: (Arrow a) => (b -> c -> d) -> a e b -> a e c -> a e d<br />
> liftA2 op f g = split >>> first f >>> second g >>> unsplit op<br />
> -- = f &&& g >>> unsplit op<br />
<br />
</haskell><br />
<br />
<br />
== An Example ==<br />
Now let's build something using our simple arrow definition and<br />
some of the tools we just created. We start with two simple<br />
arrows, f and g. F halves its input and g triples its input and<br />
adds one:<br />
<br />
<haskell><br />
<br />
> f, g :: SimpleFunc Int Int<br />
> f = arr (`div` 2)<br />
> g = arr (\x -> x*3 + 1)<br />
<br />
</haskell><br />
<br />
We can combine these together using liftA2:<br />
<br />
<haskell><br />
<br />
> h :: SimpleFunc Int Int<br />
> h = liftA2 (+) f g<br />
><br />
> hOutput :: Int<br />
> hOutput = runF h 8<br />
<br />
</haskell><br />
<br />
What is h? How does it work? <br />
The process defined by h is (split >>> first f >>> second g >>> unsplit (+)).<br />
Lets work through an application of h to some value, 8:<br />
<br />
8 -> (8, 8) split<br />
(8, 8) -> (4, 8) first f (x `div` 2 of the first element)<br />
(4, 8) -> (4, 25) second g (3*x + 1 of the second element)<br />
(4, 25) -> 29 applies (+) to tuple elements.<br />
<br />
+------> f ---------+<br />
| v<br />
8 ---> (split) (unsplit (+)) ----> 29<br />
| ^<br />
+------> g ---------+<br />
<br />
so we see that h is a new arrow that when applied to 8, applies 8 to f <br />
and applies 8 to g and adds the results.<br />
<br />
A lot of juggling occurred to get the plumbing right since<br />
h wasn't defined as a linear combination of arrows. GHC has<br />
a do-notation that simplifies this in a similar way to how<br />
do-notation simplifies monadic computation. To use this<br />
notation you must specify the -farrows flag. The h function<br />
can be defined as:<br />
<br />
<haskell><br />
<br />
> h' :: SimpleFunc Int Int<br />
> h' = proc x -> do<br />
> fx <- f -< x<br />
> gx <- g -< x<br />
> returnA -< (fx + gx)<br />
><br />
> hOutput' :: Int<br />
> hOutput' = runF h' 8<br />
<br />
</haskell><br />
<br />
<br />
== Kleisli Arrows ==<br />
Let's move on to something a little fancier now: Kleisli arrows. <br />
A Kleisli arrow (Kleisli m a b) is the arrow (a -> m b) for all<br />
monads. It's defined in Control.Arrows similarly to our SimpleFunc:<br />
<br />
<haskell><br />
<br />
newtype Kleisli m a b = Kleisli {<br />
runKleisli :: (a -> m b) <br />
}<br />
<br />
</haskell><br />
<br />
It comes complete with its own definitions for arr, first, second and<br />
(>>>). This means that all multi-value functions (a -> [b]) are already <br />
defined as Kleisli arrows (because [] is a monad)! (>>>) performs<br />
composition, keeping track of all the multiple results. Split, (&&&)<br />
and (***) are all defined as before. So for example:<br />
<br />
<haskell><br />
<br />
> plusminus, double, h2 :: Kleisli [] Int Int<br />
> plusminus = Kleisli (\x -> [x, -x])<br />
> double = arr (* 2)<br />
> h2 = liftA2 (+) plusminus double <br />
><br />
> h2Output :: [Int]<br />
> h2Output = runKleisli h2 8<br />
<br />
</haskell><br />
<br />
== A Teaser ==<br />
Finally, here is a little teaser. There is an arrow function called<br />
returnA which returns an identity arrow. There is an ArrowPlus class <br />
that includes a zeroArrow (which for the list monad is an arrow that <br />
always returns the empty list) and a <+> operator (which takes the <br />
results from two arrows and concatenates them). We can build up <br />
some pretty interesting string transformations (the multi-valued<br />
function String -> [String]) using Kleisli arrows:<br />
<br />
<haskell><br />
<br />
> main :: IO ()<br />
> main = do<br />
> let<br />
> prepend x = arr (x ++)<br />
> append x = arr (++ x)<br />
> withId t = returnA <+> t<br />
> xform = (withId $ prepend "<") >>><br />
> (withId $ append ">") >>><br />
> (withId $ ((prepend "!") >>> (append "!")))<br />
> xs = ["test", "foobar"] >>= (runKleisli xform)<br />
> mapM_ putStrLn xs<br />
<br />
</haskell><br />
<br />
An important observation here is that<br />
f >>> g<br />
<br />
is multi-valued composition (g . f), and<br />
(withId f) >>> (withId g) =<br />
(returnA <+> f) >>> (returnA <+> g) =<br />
((arr id) <+> f) >>> ((arr id) <+> g)<br />
<br />
which, when applied to an input x, returns all values:<br />
((id . id) x) ++ ((id . f) x) ++ ((id . g) x) ++ ((g . f) x) =<br />
x ++ (f x) ++ (g x) ++ ((g . f) x)<br />
<br />
which are all permutations of using arrows f and g.<br />
<br />
== Tutorial Meta ==<br />
The wiki file source is literate Haskell. Save the source in a file called ArrowFun.lhs to compile it (or run in GHCi).<br />
<br />
The code is adapted to GHC 6.10.1; use [http://www.haskell.org/haskellwiki/?title=Arrow_tutorial&oldid=15443] for older versions of GHC and other Haskell implementations.<br />
<br />
* Original version - Nov 19, 2006, Tim Newsham.<br />
\</div>Axman6https://wiki.haskell.org/index.php?title=Twitter&diff=26595Twitter2009-02-23T03:52:56Z<p>Axman6: Added Axman6 <_<</p>
<hr />
<div>'''Haskell community members on Twitter'''<br />
<br />
* Bryan O’Sullivan ([http://twitter.com/bos31337 bos31337]) <br />
* Brandon Allbery ([http://twitter.com/allbery_b allberry_b]) <br />
* alpheccar ([http://twitter.com/alpheccar alpheccar])<br />
* Arnar Birgisson ([http://twitter.com/arnarbi arnarbi]) <br />
* Chris Eidhof ([http://twitter.com/chriseidhof chriseidhof]) <br />
* Conal Elliott ([http://twitter.com/conal conal]) <br />
* Conrad Parker ([http://twitter.com/conradparker conradparker]) <br />
* Don Stewart ([http://twitter.com/donsbot donsbot]) <br />
* Eelco Lempsink ([http://twitter.com/eeclo eeclo]) <br />
* Galois, Inc. ([http://twitter.com/galoisinc galoisinc]) <br />
* Jake McArthur ([http://twitter.com/geezusfreeek geezusfreeek]) <br />
* Pepe Iborra ([http://twitter.com/hate_pick_nick hate_pick_nick]) <br />
* John Goerzen ([http://twitter.com/jgoerzen jgoerzen]) <br />
* Eugene Kirpichov ([http://twitter.com/jkff jkff]) <br />
* Kazuya Sakakihara ([http://twitter.com/kazooya kazooya]) <br />
* Edward Kmett ([http://twitter.com/kmett kmett]) <br />
* Matthew Podwysocki ([http://twitter.com/mattpodwysocki mattpodwysocki]) <br />
* Mark Reid ([http://twitter.com/mdreid mdreid]) <br />
* Andy Adams-Moran ([http://twitter.com/morabbin morabbin]) <br />
* Neil Bartlett ([http://twitter.com/njbartlett njbartlett]) <br />
* Paul Brown ([http://twitter.com/paulrbrown paulrbrown]) <br />
* Shae Erisson ([http://twitter.com/shapr shapr]) <br />
* Sigbjorn Finne ([http://twitter.com/sigbjorn_finne sigbjorn_finne]) <br />
* Stefan Holdermans ([http://twitter.com/_dblhelix _dblhelix])<br />
* Dan Piponi ([http://twitter.com/sigfpe sigfpe]) <br />
* Spencer Janssen ([http://twitter.com/spencerjanssen spencerjanssen]) <br />
* Isaac Jones ([http://twitter.com/SyntaxPolice SyntaxPolice]) <br />
* Manuel Chakravarty ([http://twitter.com/TacticalGrace TacticalGrace]) <br />
* Tom Moertel ([http://twitter.com/tmoertel tmoertel]) <br />
* Thomas Sutton ([http://twitter.com/thsutton thsutton]) <br />
* Creighton Hogg ([http://twitter.com/wchogg wchogg]) <br />
* Jeff Wheeler ([http://twitter.com/jeffwheeler jeffwheeler])<br />
* Daniel Peebles ([http://twitter.com/pumpkingod pumpkingod])<br />
* Simon Marlow ([http://twitter.com/simonmar simonmar])<br />
* Andrew Wagner ([http://twitter.com/arwagner chessguy])<br />
* Magnus Therning ([http://twitter.com/magthe magthe])<br />
* Jan Xie ([http://twitter.com/flowerborn flowerborn])<br />
* Wouter Swierstra ([http://twitter.com/wouterswierstra wouterswierstra])<br />
* Tristan Allwood ([http://twitter.com/TotallyToRA TotallyToRA])<br />
* Benedict Eastaugh ([http://twitter.com/extralogical extralogical])<br />
* Alex Mason ([http://twitter.com/axman66 Axman6])<br />
<br />
'''Haskell buzz on Twitter'''<br />
<br />
* [http://twitter.com/paytonrules/statuses/946501437 Officially amazed at the Haskell chat room. I asked a simple question there, and they went nuts on it. In a good way.]<br />
* [http://twitter.com/lallysingh/statuses/945333684 Haskell has interactive plotting commands for charts/graphs/etc. That's it, I'm officially in love]<br />
* [http://twitter.com/gimboland/statuses/944893593 God, I love Haskell]<br />
* [http://twitter.com/tsmosca/statuses/943950292 Ease of Haskell vs. Java: amazing!]<br />
* [http://twitter.com/arnax/statuses/943659297 The joy of opening a mind to Haskell :-)]<br />
* [http://twitter.com/mattpodwysocki/statuses/942618649 Aw, sweet, building a MP3 decoder in Haskell. Geek explosion ensues]<br />
* [http://twitter.com/rbp/statuses/942546816 You know, haskell actually pretty much rules :)]<br />
* [http://twitter.com/pavan_mishra/statuses/941707547 Awed by Haskell]<br />
* [http://twitter.com/clehene/statuses/939600495 I can haskell from iPhone with hugs98]<br />
<br />
[[Category:Community]]</div>Axman6https://wiki.haskell.org/index.php?title=Monad/ST&diff=25971Monad/ST2009-01-20T12:38:46Z<p>Axman6: </p>
<hr />
<div>{{Standard class|ST|module=Control.Monad.ST|module-doc=Control-Monad-ST|package=base}}<br />
<br />
The ST monad provides support for ''strict'' state threads.<br />
<br />
<br />
==A discussion on the Haskell irc ==<br />
From #haskell (see 13:05:37 in the [http://tunes.org/~nef/logs/haskell/07.02.07 log] ):<br />
<br />
* TuringTest: ST lets you implement algorithms that are much more efficient with mutable memory used internally. But the whole "thread" of computation cannot exchange mutable state with the outside world, it can only exchange immutable state.<br />
<br />
* TuringTest: chessguy: You pass in normal Haskell values and then use ST to allocate mutable memory, then you initialize and play with it, then you put it away and return a normal Haskell value.<br />
<br />
* sjanssen: a monad that has mutable references and arrays, but has a "run" function that is referentially transparent<br />
<br />
* emu: in-place qsort within ST monad: [http://hpaste.org/274 http://hpaste.org/274]<br />
<br />
* DapperDan2: it strikes me that ST is like a lexical scope, where all the variables/state disappear when the function returns.<br />
[[Category:Standard classes]] [[Category:Monad]]<br />
<br />
<br />
==An explanation in Haskell-Cafe==<br />
<br />
The ST monad lets you use update-in-place, but is escapable (unlike IO). <br />
ST actions have the form:<br />
<br />
<haskell><br />
ST s α<br />
</haskell><br />
<br />
Meaning that they return a value of type α, and execute in "thread" s.<br />
All reference types are tagged with the thread, so that actions can only<br />
affect references in their own "thread".<br />
<br />
Now, the type of the function used to escape ST is:<br />
<br />
<haskell><br />
runST :: forall α. (forall s. ST s α) -> α<br />
</haskell><br />
<br />
The action you pass must be universal in s, so inside your action you<br />
don't know what thread, thus you cannot access any other threads, thus<br />
<hask>runST</hask> is pure. This is very useful, since it allows you to implement<br />
externally pure things like in-place quicksort, and present them as pure<br />
functions ∀ e. Ord e ⇒ Array e → Array e; without using any unsafe<br />
functions.<br />
<br />
But that type of <hask>runST</hask> is illegal in Haskell-98, because it needs a<br />
universal quantifier *inside* the function-arrow! In the jargon, that<br />
type has rank 2; haskell 98 types may have rank at most 1.<br />
<br />
See http://www.haskell.org/pipermail/haskell-cafe/2007-July/028233.html<br />
<br />
Could we *please* see an example.<br />
<br />
Sure thing...<br />
<br />
== A few simple examples ==<br />
<br />
In this example, we define a version of the function sum, but do it in a way which more like how it would be done in imperative languages, where a variable is updated, rather than a new value is formed and passed to the next iteration of the function. While in place modifications of the STRef n are occurring, something that would usually be considered a side effect, it is all done in a safe way which is deterministic. The result is that we get the benefits of being able to modify memory in place, while still producing a pure function with the use of runST.<br />
<br />
<haskell><br />
import Control.Monad.ST<br />
import Data.STRef<br />
import Control.Monad<br />
<br />
<br />
sumST :: Num a => [a] -> a<br />
sumST xs = runST $ do -- runST takes out stateful code and makes it pure again.<br />
<br />
n <- newSTRef 0 -- Create an STRef (place in memory to store values)<br />
<br />
forM_ xs $ \x -> do -- For each element of xs ..<br />
modifySTRef n (+x) -- add it to what we have in n.<br />
<br />
readSTRef n -- read the value of n, and return it.<br />
<br />
<br />
</haskell><br />
<br />
An implementation of foldl using the ST monad (a lot like sum, and in fact sum can be defined in terms of foldlST):<br />
<br />
<haskell><br />
foldlST :: (a -> b -> a) -> a -> [b] -> a<br />
foldlST f acc xs = runST $ do<br />
acc' <- newSTRef acc -- Create a variable for the accumulator<br />
<br />
forM_ xs $ \x -> do -- For each x in xs...<br />
<br />
a <- readSTRef acc' -- read the accumulator<br />
writeSTRef acc' (f a x) -- apply f to the accumulator and x<br />
<br />
readSTRef acc' -- and finally read the result<br />
</haskell><br />
<br />
An example of the Fibonacci function running in constant** space:<br />
<br />
<haskell><br />
fibST :: Integer -> Integer<br />
fibST n = <br />
if n < 2<br />
then n<br />
else runST $ do<br />
x <- newSTRef 0<br />
y <- newSTRef 1<br />
fibST' n x y<br />
<br />
where fibST' 0 x _ = readSTRef x<br />
fibST' n x y = do<br />
x' <- readSTRef x<br />
y' <- readSTRef y<br />
writeSTRef x y'<br />
writeSTRef y (x'+y')<br />
fibST' (n-1) x y<br />
</haskell><br />
**(Since we're using Integers, technically it's not constant space, as they grow in size when they get bigger, but we can ignore this.)</div>Axman6https://wiki.haskell.org/index.php?title=Monad/ST&diff=25970Monad/ST2009-01-20T12:17:43Z<p>Axman6: </p>
<hr />
<div>{{Standard class|ST|module=Control.Monad.ST|module-doc=Control-Monad-ST|package=base}}<br />
<br />
The ST monad provides support for ''strict'' state threads.<br />
<br />
<br />
==A discussion on the Haskell irc ==<br />
From #haskell (see 13:05:37 in the [http://tunes.org/~nef/logs/haskell/07.02.07 log] ):<br />
<br />
* TuringTest: ST lets you implement algorithms that are much more efficient with mutable memory used internally. But the whole "thread" of computation cannot exchange mutable state with the outside world, it can only exchange immutable state.<br />
<br />
* TuringTest: chessguy: You pass in normal Haskell values and then use ST to allocate mutable memory, then you initialize and play with it, then you put it away and return a normal Haskell value.<br />
<br />
* sjanssen: a monad that has mutable references and arrays, but has a "run" function that is referentially transparent<br />
<br />
* emu: in-place qsort within ST monad: [http://hpaste.org/274 http://hpaste.org/274]<br />
<br />
* DapperDan2: it strikes me that ST is like a lexical scope, where all the variables/state disappear when the function returns.<br />
[[Category:Standard classes]] [[Category:Monad]]<br />
<br />
<br />
==An explanation in Haskell-Cafe==<br />
<br />
The ST monad lets you use update-in-place, but is escapable (unlike IO). <br />
ST actions have the form:<br />
<br />
<haskell><br />
ST s α<br />
</haskell><br />
<br />
Meaning that they return a value of type α, and execute in "thread" s.<br />
All reference types are tagged with the thread, so that actions can only<br />
affect references in their own "thread".<br />
<br />
Now, the type of the function used to escape ST is:<br />
<br />
<haskell><br />
runST :: forall α. (forall s. ST s α) -> α<br />
</haskell><br />
<br />
The action you pass must be universal in s, so inside your action you<br />
don't know what thread, thus you cannot access any other threads, thus<br />
<hask>runST</hask> is pure. This is very useful, since it allows you to implement<br />
externally pure things like in-place quicksort, and present them as pure<br />
functions ∀ e. Ord e ⇒ Array e → Array e; without using any unsafe<br />
functions.<br />
<br />
But that type of <hask>runST</hask> is illegal in Haskell-98, because it needs a<br />
universal quantifier *inside* the function-arrow! In the jargon, that<br />
type has rank 2; haskell 98 types may have rank at most 1.<br />
<br />
See http://www.haskell.org/pipermail/haskell-cafe/2007-July/028233.html<br />
<br />
Could we *please* see an example.<br />
<br />
== A simple example ==<br />
<br />
In this example, we define a version of the function sum, but do it in a way which more like how it would be done in imperative languages, where a variable is updated, rather than a new value is formed and passed to the next iteration of the function. While in place modifications of the STRef n are occurring, something that would usually be considered a side effect, it is all done in a safe way which is deterministic. The result is that we get the benefits of being able to modify memory in place, while still producing a pure function with the use of runST.<br />
<br />
<haskell><br />
import Control.Monad.ST<br />
import Data.STRef<br />
import Control.Monad<br />
<br />
<br />
sumST :: Num a => [a] -> a<br />
sumST xs = runST $ do -- runST takes out stateful code and makes it pure again.<br />
<br />
n <- newSTRef 0 -- Create an STRef (place in memory to store values)<br />
<br />
forM_ xs $ \x -> do -- For each element of xs ..<br />
modifySTRef n (+x) -- add it to what we have in n.<br />
<br />
readSTRef n -- read the value of n, and return it.<br />
<br />
<br />
</haskell><br />
<br />
An implementation of foldl using the ST monad (a lot like sum, and in fact sum can be defined in terms of foldlST):<br />
<br />
<haskell><br />
foldlST :: (a -> b -> a) -> a -> [b] -> a<br />
foldlST f acc xs = runST $ do<br />
acc' <- newSTRef acc -- Create a variable for the accumulator<br />
<br />
forM_ xs $ \x -> do -- For each x in xs...<br />
<br />
a <- readSTRef acc' -- read the accumulator<br />
writeSTRef acc' (f a x) -- apply f to the accumulator and x<br />
<br />
readSTRef acc' -- and finally read the result<br />
</haskell></div>Axman6https://wiki.haskell.org/index.php?title=Monad/ST&diff=25937Monad/ST2009-01-18T13:38:00Z<p>Axman6: </p>
<hr />
<div>{{Standard class|ST|module=Control.Monad.ST|module-doc=Control-Monad-ST|package=base}}<br />
<br />
The ST monad provides support for ''strict'' state threads.<br />
<br />
<br />
==A discussion on the Haskell irc ==<br />
From #haskell (see 13:05:37 in the [http://tunes.org/~nef/logs/haskell/07.02.07 log] ):<br />
<br />
* TuringTest: ST lets you implement algorithms that are much more efficient with mutable memory used internally. But the whole "thread" of computation cannot exchange mutable state with the outside world, it can only exchange immutable state.<br />
<br />
* TuringTest: chessguy: You pass in normal Haskell values and then use ST to allocate mutable memory, then you initialize and play with it, then you put it away and return a normal Haskell value.<br />
<br />
* sjanssen: a monad that has mutable references and arrays, but has a "run" function that is referentially transparent<br />
<br />
* emu: in-place qsort within ST monad: [http://hpaste.org/274 http://hpaste.org/274]<br />
<br />
* DapperDan2: it strikes me that ST is like a lexical scope, where all the variables/state disappear when the function returns.<br />
[[Category:Standard classes]] [[Category:Monad]]<br />
<br />
<br />
==An explanation in Haskell-Cafe==<br />
<br />
The ST monad lets you use update-in-place, but is escapable (unlike IO). <br />
ST actions have the form:<br />
<br />
<haskell><br />
ST s α<br />
</haskell><br />
<br />
Meaning that they return a value of type α, and execute in "thread" s.<br />
All reference types are tagged with the thread, so that actions can only<br />
affect references in their own "thread".<br />
<br />
Now, the type of the function used to escape ST is:<br />
<br />
<haskell><br />
runST :: forall α. (forall s. ST s α) -> α<br />
</haskell><br />
<br />
The action you pass must be universal in s, so inside your action you<br />
don't know what thread, thus you cannot access any other threads, thus<br />
<hask>runST</hask> is pure. This is very useful, since it allows you to implement<br />
externally pure things like in-place quicksort, and present them as pure<br />
functions ∀ e. Ord e ⇒ Array e → Array e; without using any unsafe<br />
functions.<br />
<br />
But that type of <hask>runST</hask> is illegal in Haskell-98, because it needs a<br />
universal quantifier *inside* the function-arrow! In the jargon, that<br />
type has rank 2; haskell 98 types may have rank at most 1.<br />
<br />
See http://www.haskell.org/pipermail/haskell-cafe/2007-July/028233.html<br />
<br />
Could we *please* see an example.<br />
<br />
== A simple example ==<br />
<br />
In this example, we define a version of the function sum, but do it in a way which more like how it would be done in imperative languages, where a variable is updated, rather than a new value is formed and passed to the next iteration of the function. While in place modifications of the STRef n are occurring, something that would usually be considered a side effect, it is all done in a safe way which is deterministic. The result is that we get the benefits of being able to modify memory in place, while still producing a pure function with the use of runST.<br />
<br />
<haskell><br />
import Control.Monad.ST<br />
import Data.STRef<br />
import Control.Monad<br />
<br />
<br />
sumST :: Num a => [a] -> a<br />
sumST xs = runST $ do -- runST takes out stateful code and makes it pure again.<br />
<br />
n <- newSTRef 0 -- Create an STRef (place in memory to store values)<br />
<br />
forM_ xs $ \x -> do -- For each element of xs ..<br />
modifySTRef n (+x) -- add it to what we have in n.<br />
<br />
readSTRef n -- read the value of n, and return it.<br />
<br />
<br />
</haskell></div>Axman6https://wiki.haskell.org/index.php?title=Monad/ST&diff=25936Monad/ST2009-01-18T13:33:17Z<p>Axman6: Added a simple example</p>
<hr />
<div>{{Standard class|ST|module=Control.Monad.ST|module-doc=Control-Monad-ST|package=base}}<br />
<br />
The ST monad provides support for ''strict'' state threads.<br />
<br />
<br />
==A discussion on the Haskell irc ==<br />
From #haskell (see 13:05:37 in the [http://tunes.org/~nef/logs/haskell/07.02.07 log] ):<br />
<br />
* TuringTest: ST lets you implement algorithms that are much more efficient with mutable memory used internally. But the whole "thread" of computation cannot exchange mutable state with the outside world, it can only exchange immutable state.<br />
<br />
* TuringTest: chessguy: You pass in normal Haskell values and then use ST to allocate mutable memory, then you initialize and play with it, then you put it away and return a normal Haskell value.<br />
<br />
* sjanssen: a monad that has mutable references and arrays, but has a "run" function that is referentially transparent<br />
<br />
* emu: in-place qsort within ST monad: [http://hpaste.org/274 http://hpaste.org/274]<br />
<br />
* DapperDan2: it strikes me that ST is like a lexical scope, where all the variables/state disappear when the function returns.<br />
[[Category:Standard classes]] [[Category:Monad]]<br />
<br />
<br />
==An explanation in Haskell-Cafe==<br />
<br />
The ST monad lets you use update-in-place, but is escapable (unlike IO). <br />
ST actions have the form:<br />
<br />
<haskell><br />
ST s α<br />
</haskell><br />
<br />
Meaning that they return a value of type α, and execute in "thread" s.<br />
All reference types are tagged with the thread, so that actions can only<br />
affect references in their own "thread".<br />
<br />
Now, the type of the function used to escape ST is:<br />
<br />
<haskell><br />
runST :: forall α. (forall s. ST s α) -> α<br />
</haskell><br />
<br />
The action you pass must be universal in s, so inside your action you<br />
don't know what thread, thus you cannot access any other threads, thus<br />
<hask>runST</hask> is pure. This is very useful, since it allows you to implement<br />
externally pure things like in-place quicksort, and present them as pure<br />
functions ∀ e. Ord e ⇒ Array e → Array e; without using any unsafe<br />
functions.<br />
<br />
But that type of <hask>runST</hask> is illegal in Haskell-98, because it needs a<br />
universal quantifier *inside* the function-arrow! In the jargon, that<br />
type has rank 2; haskell 98 types may have rank at most 1.<br />
<br />
See http://www.haskell.org/pipermail/haskell-cafe/2007-July/028233.html<br />
<br />
Could we *please* see an example.<br />
<br />
== A simple example ==<br />
<br />
In this example, we define a version of the function sum, but do it in a way which should use constant space to compute the answer. While in place modifications of the STRef n are occurring, something that would usually be considered a side effect, it is all done in a safe way which is deterministic. The result is that we get the benefits of being able to modify memory in place, while still producing a pure function with the use of runST.<br />
<br />
<haskell><br />
import Control.Monad.ST<br />
import Data.STRef<br />
import Control.Monad<br />
<br />
<br />
sumST :: Num a => [a] -> a<br />
sumST xs = runST $ do -- runST takes out stateful code and makes it pure again.<br />
n <- newSTRef 0 -- Create an STRef (place in memory to store values)<br />
forM_ xs $ \x -> do -- For each element of xs ..<br />
-- (forM_ is just flip mapM_)<br />
modifySTRef n (+x) -- add it to what we have in n.<br />
readSTRef n -- read the value of n, and return it.<br />
<br />
<br />
</haskell></div>Axman6https://wiki.haskell.org/index.php?title=Haskell_logos/New_logo_ideas&diff=25017Haskell logos/New logo ideas2008-12-18T09:25:22Z<p>Axman6: </p>
<hr />
<div>'''The great 2009 Haskell logo contest'''<br />
<br />
The Haskell logo has [http://www.willamette.edu/~fruehr/logos/intro.html changed over time], and the current "new" logo reflects the<br />
advanced features of Haskell. However, it is looking rather dated, and doesn't necessarily reflect the mature Haskell we have now.<br />
<br />
So, time to find a new logo. Something reflecting the modern emphasis of<br />
Haskell on purity and simplicity.<br />
<br />
Please submit logo-sized (not overly large) versions of your logo with optional text, with a preferably white background (such as for use on haskell.org).<br />
<br />
Please submit your entries here, and attach your name to them please. To be eligible,<br />
they will need to be visible on this page (e.g. uploaded, or link to the image). The image should be freely available (a suitable freely distributable license). Entries not displayed here won't be eligible.<br />
<br />
''The deadline for submissions is December 31, 2008, after which the top few submissions will be voted on by the community to decide a winner!''<br />
<br />
----<br />
[[Image:unsafeHaskell.png]]<br />
[[User:Beelsebob|Beelsebob]] 09:09, 18 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:haskell-cjay2.png]]<br />
<br />
Available as [[Media:Haskell-cjay2.svg|svg]] (inkscape). Fonts: FreeSerif for lambda, >> and the arrow head; Impact Label for "Haskell" (all free).<br />
<br />
[[User:Cjay|cjay]] 03:49, 18 December 2008 (UTC)<br />
<br />
----<br />
<br />
My attempt at a new Haskell logo:<br />
<br />
[[Image:Haskell_jdr.png]]<br />
<br />
So I guess the standalone version would then be:<br />
<br />
[[Image:Haskell_h_jdr.png]]<br />
<br />
[http://www.voetsjoeba.com Jeroen De Ridder]<br />
<br />
----<br />
<br />
[http://galois.com/~dons/images/logo-3-curved.png http://galois.com/~dons/images/logo-3-curved.png]<br />
<br />
[http://article.gmane.org/gmane.comp.lang.haskell.cafe/49072 George Pollard]<br />
<br />
----<br />
<br />
[[Image:Jeff-heard-1.png]]<br />
<br />
[http://thread.gmane.org/gmane.comp.lang.haskell.cafe/48892/focus=48893 Jeff Heard]. <br />
<br />
----<br />
<br />
Here's an attempt to depict the polish, elegance, and purity of Haskell by merging the H and lambda into an iconic gem.<br />
<br />
[[Image:Haskell2v3.png]]<br />
<br />
Made in Inkscape, with an SVG available.<br />
<br />
--[[User:Chromakode|Chromakode]] 03:18, 17 December 2008 (UTC)<br />
<br />
----<br />
<br />
All credit goes to Darrin Thompson for posting the ASCII inspiration for this to haskell-cafe. I, Jeff Wheeler, just mocked it up to look<br />
pretty. Here are two interpretations:<br />
<br />
[http://media.nokrev.com/junk/haskell-logos/logo1.png http://media.nokrev.com/junk/haskell-logos/logo1.png]<br />
<br />
[http://media.nokrev.com/junk/haskell-logos/logo2.png http://media.nokrev.com/junk/haskell-logos/logo2.png]<br />
<br />
Two with rounded edges:<br />
<br />
[http://media.nokrev.com/junk/haskell-logos/logo8.png http://media.nokrev.com/junk/haskell-logos/logo8.png]<br />
<br />
[http://media.nokrev.com/junk/haskell-logos/logo9.png http://media.nokrev.com/junk/haskell-logos/logo9.png]<br />
<br />
Here's a icon-sized version:<br />
<br />
[http://media.nokrev.com/junk/haskell-logos/logo4.png http://media.nokrev.com/junk/haskell-logos/logo4.png]<br />
<br />
The first two without an background:<br />
<br />
[http://media.nokrev.com/junk/haskell-logos/logo6.png http://media.nokrev.com/junk/haskell-logos/logo6.png] [http://media.nokrev.com/junk/haskell-logos/logo7.png http://media.nokrev.com/junk/haskell-logos/logo7.png]<br />
<br />
--[[User:Jeffwheeler|Jeffwheeler]] 02:42, 17 December 2008 (UTC)<br />
----<br />
Mix and match<br />
<br />
[http://relapse-software.net/haskell_7.png http://relapse-software.net/haskell_7.png]<br />
----<br />
More mix and match, borrowing bind-lambda icon, star/flower idea, and font/verbiage from other submissions...(Raspoutine Classic font, [[Media:Haskell-Symstar.svg|SVG]] available).<br />
[[Image:Haskell-Symstar.png|Haskell - Logo variant]]<br />
<br />
--[[User:Rgreayer|Rgreayer]] 21:39, 17 December 2008 (UTC)<br />
----<br />
I really like the logo above. Here are some variations. The font name is ModeNine.<br />
<br />
<br />
[[Image:Haskellvariations1.jpg|Haskell - Logo Variations A]]<br />
<br />
[[Image:Haskellvariations2.jpg|Haskell - Logo Variations B]]<br />
<br />
--[[User:Reified|Reified]] 14:48, 17 December 2008 (UTC)<br />
<br />
----<br />
<br />
A different logo idea, using toddler's letter blocks to convey the simplicity of Haskell. Exact block look and font used can be changed,<br />
but this is the basic idea.<br />
<br />
[[Image:Haskell_logo_ideas_4_falconnl.png]]<br />
<br />
--[[User:FalconNL|FalconNL]] 23:29, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:Stupidb123logo.jpg]]<br />
<br />
--[[User:Stupidb123|Stupidb123]] 12:40, 16 December 2008 (UTC)<br />
<br />
----<br />
"The lightbulb lady" (concept: a lady/lightbulb made out of an inverted lambda, hope it catches...).<br />
Font: Museo Sans 500 (free of charge, add to the cart [http://new.myfonts.com/fonts/exljbris/museo-sans/500/ here]).<br />
<br />
[[Image:The_lady.png]]<br />
<br />
-- [[User:eu-prleu-peupeu]]<br />
----<br />
Just another version of the initial spreadshirt variant. <br />
The black background is now part of the logo. The text should be optional.<br />
<br />
[[Image:haskell_spreadshirt_logo.png|400px]]<br />
<br />
[[User:Frosch03|Frosch03]] 11:41, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
Made with Inkscape. The source in SVG is available [http://www.gburri.org/bordel/logo_haskell_gburri.svg here].<br />
Font : [http://www.dafont.com/raspoutine.font?nb_ppp=50&text=Haskell Raspoutine (free)].<br />
<br />
[[Image:haskel_logo_preview_gburri.png]]<br />
<br />
[[User:Gburri|Gburri]] 09:58, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
Closer to what I had in mind originally:<br />
<br />
[[Image:Haskell-flower3.png]]<br />
<br />
<br />
Probably went too far:<br />
<br />
[[Image:Haskell-flower2.png]]<br />
<br />
<br />
First attempt:<br />
<br />
[[Image:Haskell-flower.png]]<br />
<br />
--[[User:Tanimoto|tanimoto]] 06:09, 17 December 2008 (UTC)<br />
<br />
----<br />
<br />
A different take on the lambda-in-a-circle logo that looks less like the Half Life logo. Probably fits better than the monadic sequence<br />
operator in my other submission.<br />
<br />
[[Image:Haskell_logo_ideas_2_falconnl.png]]<br />
<br />
Update:<br />
Slight change and added letters, this time in the free Fonce Sans [http://liquisoft.deviantart.com/art/Fonce-Sans-Regular-Trial-25092730]<br />
font. I like Officina better, but if the font has to be free this is a reasonable substitute.<br />
<br />
[[Image:Haskell_logo_idea_3_falconnl.png]]<br />
<br />
--[[User:FalconNL|FalconNL]] 08:34, 16 December 2008 (GMT +1)<br />
<br />
----<br />
<br />
Very quick attempt:<br />
<br />
[[Image:BurkeLibbey_Haskell.png]]<br />
<br />
The main font is [http://www.josbuivenga.demon.nl/diavlo.html Diavlo] (free). The lambda is in Candara, which I believe ships with Vista<br />
and/or XP. Not sure of the licensing there. If there's significant interest in this, I'll redo it as a vector graphic.<br />
<br />
-- [[User:Burke|Burke]] 02:33, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
On behalf of the Ministry of Safety and Happiness I would like to promote the meme suggesting that Haskell is the programming language of<br />
choice for the Illuminati.<br />
<br />
[[Image:Haskell proceed.png]]<br />
<br />
--[[User:CznpyHrnjwczky|CznpyHrnjwczky]] 05:31, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
More of a mascotte, though she could be used in a logo as well.<br />
<br />
This is Monica Monad, and she's a Warm Fuzzy Thing. Just giving a face to SPJ's alternative name for monads :)<br />
<br />
Her main purpose would be to present tutorials.<br />
<br />
[[Image:Monica_monad_falconnl.png]]<br />
<br />
--[[User:FalconNL|FalconNL]] 00:52, 16 December 2008 (GMT +1)<br />
<br />
----<br />
<br />
A slightly different take on the Haskell logo, as the lambda-in-a-circle looks a bit too much like the Half Life logo for my taste. This<br />
one references monads instead of lambda calculus. Three possible slogans, emphasizing the fun that comes from programming in Haskell.<br />
Number 2 and 3 also reference function composition. Number 3 is my personal favourite.<br />
<br />
[[Image:Haskell_logo_ideas_falconnl.png]]<br />
<br />
Update: a combination of my two logos on a t-shirt. This time with function arrows to indicate the causal relationships: because Haskell is<br />
pure, it's simple. Because it's simple, it's fun.<br />
<br />
[[Image:Haskell_logo_ideas_tshirt_falconnl.png]]<br />
<br />
--[[User:FalconNL|FalconNL]] 22:58, 15 December 2008 (GMT +1)<br />
<br />
: Yummy. What's the font? Is it free? [[User:Porges|Porges]] 21:59, 15 December 2008 (UTC)<br />
: Unfortunately, no. The font is called Officina Sans. Is that a problem? [[User:FalconNL|FalconNL]] 00:02, 16 December 2008 (GMT +1)<br />
<br />
----<br />
<br />
Simple, clean:<br />
<br />
[http://hpsg.fu-berlin.de/~rsling/img/haskell-shirt.jpeg http://hpsg.fu-berlin.de/~rsling/img/haskell-shirt.jpeg]<br />
<br />
I really like this t-shirt logo, by the way. Gets my vote so far. — [[User:Chrisdone|Chrisdone]] 00:18, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
Minor tweak to the above:<br />
<br />
[[Image:HaskellLogo-v2.png]]<br />
<br />
----<br />
<br />
Minor modification of the t-shirt logo, the lambda was a bit skewed in my opinion:<br />
<br />
[[Image:tshirt-logo-mod.png]]<br />
<br />
And another modification of the same theme:<br />
<br />
[[Image:tshirt-logo-mod-inv.png]]<br />
<br />
--[[User:Sebastiaan|Sebastiaan]] 13:29, 15 December 2008 (UTC)<br />
: I really like this one. A font other than Arial would be nice ;) [[User:Porges|Porges]] 21:25, 15 December 2008 (UTC)<br />
<br />
[[Image:HaskellLogoTShirtWhite.png]] -- [[User:Chrisdone|Chrisdone]] 23:19, 15 December 2008 (UTC)<br />
<br />
<br />
<br />
----<br />
<br />
Some ideas. Supposed to resemble a lambda abstraction. I realise there are no formal parameters. ---- [[User:Chrisdone|Chrisdone]] 00:12,<br />
15 December 2008 (UTC)<br />
<br />
[http://chrisdone.com/haskell-blah.png http://chrisdone.com/haskell-blah-thumb.png]<br />
<br />
----<br />
<br />
Here's another one; lambda is Gentium SIL, Haskell is MgOpen Cosmetica, tagline is MgOpen Canonica Italic. [[User:Porges|Porges]] 21:25, 15<br />
December 2008 (UTC)<br />
<br />
[[Image:Haskell Logo.png]]<br />
<br />
----<br />
<br />
Another take. A bit simpler, more symmetrical.<br />
<br />
[[Image:haskelllogobeshers.png]]<br />
<br />
----<br />
<br />
[[Image:Haskell-logo.png]]<br />
<br />
The logo uses Kautiva Bold as (non-free) font.<br />
<br />
--[[User:Eelco|Eelco]] 07:43, 15 December 2008 (UTC)<br />
<br />
This one is dedicated to Derek Elkins, to sooth his eyes after having them hurt on the previous logo:<br />
<br />
[[Image:Haskell-logo-funny.png]]<br />
<br />
--[[User:Eelco|Eelco]] 08:53, 15 December 2008 (UTC)<br />
: Makes sense. Comic Sans is the *Official Font of Haskell*, after all.<br />
<br />
----<br />
[[Image:HaskellLogoTDavie.png]]<br />
<br />
[[Image:HaskellLogoTDavie.pdf]] (vector pdf version)<br />
<br />
[[Image:HaskellLogoTDavie2.png]]<br />
<br />
[[User:Beelsebob|Beelsebob]] 08:32, 15 December 2008 (UTC)<br />
<br />
---- <br />
<br />
[http://relapse-software.net/haskell_0.png http://relapse-software.net/haskell_0.png]<br />
<br />
[http://relapse-software.net/haskell_1.png http://relapse-software.net/haskell_1.png]<br />
<br />
----<br />
<br />
[http://relapse-software.net/haskell_5.png http://relapse-software.net/haskell_5.png]<br />
<br />
<br />
[http://relapse-software.net/haskell_2.png http://relapse-software.net/haskell_2.png]<br />
<br />
[http://relapse-software.net/haskell_3.png http://relapse-software.net/haskell_3.png]<br />
<br />
----<br />
<br />
Logo fun using Blender:<br />
<br />
[[Image:HsLogosMB.png|center|Haskell Logo idea with lambda as mascot]]<br />
<br />
I tried to give the lambda sign an ''alive'' feeling. --[[User:GokhanSan|GokhanSan]] 12:49, 15 December 2008 (UTC)<br />
: Middle one looks a bit too much like the ghostbusters logo :D [[User:Porges|Porges]] 21:25, 15 December 2008 (UTC)<br />
:: Hmm, I wonder if it's the choice of colors. Then again, with a minor alteration, we get a FreeBSD icon candidate:<br />
[[Image:HsLogoMB-BSD.png|beastie]] ;-) --[[User:GokhanSan|GokhanSan]] 08:52, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:HaskellLogoIdea05.gif]]<br />
<br />
Not sure about the colour. I tried to pick the purple from the current logo. Although the lower lambda is rotated there is<br />
[http://poinikastas.csad.ox.ac.uk/browseGlyphs.shtml historic precedence] for other forms of the letter. The lambda takes the angle from<br />
the 'k'. Font is News Gothic. Feel free to play with the concept. [[User:Rk|Rk]] 11:13, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
<br />
More vectorial Haskell logo concepts. Using inkscape and the popular [http://inde-graphics.deviantart.com/art/advent-font-57338302 advent<br />
font] (CC at-nc-nd).<br />
<br />
[[Image:Haskell_infinitylambda.png]]<br />
[[Image:Haskell_halfhalfinfinitylambda.png]]<br />
[[Image:Haskell_3qhalfinfinitylambda.png]]<br />
<br />
Vectorial images (svg):<br />
<br />
[http://haskell.org/sitewiki/images/8/86/Haskell_infinitylambda.svg 1]<br />
[http://haskell.org/sitewiki/images/d/df/Haskell_halfinfinitylambda.svg 2]<br />
[http://haskell.org/sitewiki/images/6/66/Haskell_3qhalfinfinitylambda.svg 3]<br />
<br />
* [[User:alvivi|alvivi]] 19:28, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:Haskell-pure.png|haskell::pure]]<br />
<br />
--[[User:Rgreayer|Rgreayer]] 20:44, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
Find a font where 'k' looks like a reverse lambda (after removing the "stalk"). For example:<br />
<br />
[[Image:Kaskell.png|Kaskell]]<br />
<br />
Note this example uses Monotype Corsiva which is not a free font. If the basic approach looks good, we can find a similar free font that<br />
works.<br />
<br />
--[[User:Orenbenkiki|OrenBenKiki]] 01:40, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:Haskell.png|Haskellll]]<br />
<br />
Illustrator, vector art available, apologies to GokhanSan<br />
<br />
--[[User:Mpeter|Mpeter]] 10:18, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
<br />
[http://relapse-software.net/haskell_6.png http://relapse-software.net/haskell_6.png]<br />
<br />
----<br />
<br />
[[Image:Haskell3.png|Haskell]]<br />
[[Image:Haskell4.png|Haskell]]<br />
<br />
Inkscape, vector art available.<br />
<br />
--[[User:Chromakode|Chromakode]] 07:14, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
I'll probably regret this...<br />
<br />
[[Image:NarleyYeeaaahh.jpg|Haskell - Narwals, YEEAAAAHH!!]]<br />
<br />
(Created with PAINT.NET)<br />
<br />
--[[User:Reified|Reified]] 07:20, 16 December 2008 (UTC)<br />
----<br />
<br />
The general idea is that it's just "Haskell" but with w lambda instead of the a. The font here is Myriad Pro but this would work with any<br />
good sans-serif font. It's color-agnostic, so it can be easily printer, presented as white on black or changed to a different color.<br />
<br />
[[Image:Haskell_logo_bonus.png]]<br />
<br />
[[Image:Haskell_logo_bonus2.png]]<br />
<br />
--[[User:BONUS|BONUS]] 14:40, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[image:Axman6-logo-1.0.png]]<br />
<br />
In black:<br />
<br />
[[Image:Axman6-logo-1.1.png]]<br />
<br />
[[Image:Axman6-logo-1.1-small.png]]<br />
<br />
--[[User:Axman6|Axman6]] 15:16, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[image:Haskell_girl.jpg]]<br />
<br />
<br />
Oh, didn't know png's would work.<br />
--[[User:Tindrum|Tindrum]] 17:12, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[image:Haskell_logo.png]]<br />
<br />
It is mutually recursive...<br />
Here is the [[Media:Haskell logo.svg|svg]].<br />
<br />
Second version:<br />
<br />
[[image:Haskell2_logo.png]]<br />
<br />
And the [[Media:Haskell2 logo.svg|svg]].<br />
<br />
--[[User:Trontonic|Trontonic]] 20:39, 16 December 2008 (UTC)<br />
<br />
----<br />
This is a variation on my [http://t-shirts.cafepress.com/item/lambda-revolution-fitted-tshirt/96543210 Cafepress t-shirt]. The PNG is<br />
generated from an Inkscape SVG.<br />
<br />
[[Image:Haskell-logo-revolution.png]]<br />
<br />
[[User:PaulJohnson|PaulJohnson]] 21:08, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:haskell-cjay.png]]<br />
<br />
Available as [[Media:Haskell-cjay.svg|svg]] (inkscape). Fonts: FreeSerif for lambda and >>. Bitstream Vera and FreeMono for other (afaik<br />
all free to use)<br />
<br />
[[User:Cjay|cjay]] 22:45, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
http://conal.net/Pan/Gallery/haskell-powered%20on%20white%20tiled%20360.png<br />
<br />
One I made with [http://conal.net/Pan/Gallery Pan] (purely functional image synthesis in Haskell) some years back. See also the<br />
[http://conal.net/Pan/Gallery/haskell-powered%20on%20white%20tiled%20720.png 720 square version]. I have a few sizes up to 2250 pixels<br />
square.<br />
<br />
[[User:Conal|Conal]] 03:40, 17 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[image:Haskell_lambda.png]]<br />
<br />
Just kidding :P<br />
<br />
--[[User:Trontonic|Trontonic]] 05:04, 17 December 2008 (UTC)<br />
<br />
----<br />
=== Cale Gibbard ===<br />
[[Image:Haskell-logo-6up.png]]<br />
<br />
[http://haskell.org/haskellwiki/Image:Haskell-logo-6up.svg Inkscape SVG]<br />
<br />
I originally had no specific mountain in mind, but Don Stewart pointed out that this might be representative of Mt. Hood in Portland, Oregon, where Haskell was named.<br />
<br />
Regardless, I thought a summit, bathed in the pure mountain air would be a decent symbol for Haskell, the peak of contemporary programming. :)<br />
<br />
[[User:CaleGibbard|CaleGibbard]] 05:55, 17 December 2008 (UTC)<br />
:Here's a modified version with a slightly funkier font :) I think that it matches the lines of the image better... [[User:Porges|Porges]] 03:14, 18 December 2008 (UTC)<br />
<br />
[[Image:Testhask.png]]<br />
----<br />
<br />
Probably not a good choice for a logo:<br />
<br />
[[Image:Hazard lambda cracked 2.png]]<br />
<br />
----<br />
<br />
[[Image:Haskell_Ribbons.png]]<br />
<br />
[http://slipgate.za.net/~korpse/misc/Haskell_Ribbons.svg SVG]<br />
<br />
Simplicity.<br />
<br />
(It is possible that the font may need to be replaced with a free alternative.)<br />
<br />
[[User:Jonathanj|JonathanJ]] 16:34, 17 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:Haskelllogosmax.png]]<br />
<br />
Available as SVG.<br />
<br />
[[User:MaxRabkin|MaxRabkin]] 05:37, 18 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:DoHaskell.png]]<br />
<br />
--[[User:Warren|Warren]] 07:26, 18 December 2008 (UTC)<br />
<br />
----<br />
<br />
A slight variation of the ">\=" logo:<br />
<br />
[[Image:haskell-logo-doublef.png]]<br />
<br />
Not that it's worth much:). Available as [[Media:haskell-logo-doublef.svg|SVG]].<br />
<br />
[[User:Doublef|DoubleF]] 07:36, 18 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:haskell-apankrat.png]]<br />
<br />
The idea for this [http://en.wikipedia.org/wiki/Wordmark_(graphic_identity) wordmark] is to modify ''A'' to resemble λ and through this tie together the "Haskell" to the "Lambda". Modified ''A'' also works well as a standalone logo:<br />
<br />
[[Image:haskell-symbol-apankrat.png]]<br />
<br />
Note that ''any'' logo based on the unmodified λ symbol may look ambiguous to the people outside of Haskell community. While the λ in the context of programming languages is clearly associated with functional programming, it ''is'' a lowercase Greek L and so it's reasonable for an outsider to associate it with '''L'''isp, and not Haskell.<br />
<br />
PS. I just scrolled up and saw BONUS'es entry (14:40, 16 December 2008). While its idea is close, I think using pure λ in place of an A doesn't work because it effectively turn the name into H-L-skell.<br />
<br />
[[User:Apankrat|Apankrat]] 07:38, 18 December 2008 (UTC)</div>Axman6https://wiki.haskell.org/index.php?title=File:Axman6-logo-1.1-small.png&diff=25016File:Axman6-logo-1.1-small.png2008-12-18T09:22:57Z<p>Axman6: Small badge logo</p>
<hr />
<div>Small badge logo</div>Axman6https://wiki.haskell.org/index.php?title=File:Axman6-logo-1.1.png&diff=25015File:Axman6-logo-1.1.png2008-12-18T09:19:19Z<p>Axman6: Black version</p>
<hr />
<div>Black version</div>Axman6https://wiki.haskell.org/index.php?title=Haskell_logos/New_logo_ideas&diff=24890Haskell logos/New logo ideas2008-12-16T15:16:05Z<p>Axman6: </p>
<hr />
<div>'''The great 2009 Haskell logo contest'''<br />
<br />
The Haskell logo has [http://www.willamette.edu/~fruehr/logos/intro.html changed over time], and the current "new" logo reflects the advanced features of Haskell. However, it is looking rather dated, and doesn't necessarily reflect the mature Haskell we have now.<br />
<br />
So, time to find a new logo. Something reflecting the modern emphasis of<br />
Haskell on purity and simplicity.<br />
<br />
Please submit your entries here, and attach your name to them. To be eligible,<br />
you will need to upload them.<br />
<br />
<br />
----<br />
<br />
[[Image:Stupidb123logo.jpg]]<br />
<br />
--[[User:Stupidb123|Stupidb123]] 12:40, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
Just another version of the initial spreadshirt variant. <br />
The black background is now part of the logo. The text should be optional.<br />
<br />
[[Image:haskell_spreadshirt_logo.png|400px]]<br />
<br />
[[User:Frosch03|Frosch03]] 11:41, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
Made with Inkscape (SVG). Font : Calibri.<br />
<br />
[[Image:Haskell logo v1.png]]<br />
<br />
[[Image:Haskell logo v2.png]]<br />
<br />
[[User:Gburri|Gburri]] 09:58, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
Many submissions are putting a lambda inside a circle, so I thought about reversing the idea and forming a circle using lambdas. My drawing on paper was much cooler, because it looked like a flower, but I'm terrible at inkscape.<br />
<br />
Please feel free to reuse this idea.<br />
<br />
[[Image:Haskell-flower.png]]<br />
<br />
--[[User:Tanimoto|tanimoto]] 07:43, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
A different take on the lambda-in-a-circle logo that looks less like the Half Life logo. Probably fits better than the monadic sequence operator in my other submission.<br />
<br />
[[Image:Haskell_logo_ideas_2_falconnl.png]]<br />
<br />
Update:<br />
Slight change and added letters, this time in the free Fonce Sans [http://liquisoft.deviantart.com/art/Fonce-Sans-Regular-Trial-25092730] font. I like Officina better, but if the font has to be free this is a reasonable substitute.<br />
<br />
[[Image:Haskell_logo_idea_3_falconnl.png]]<br />
<br />
--[[User:FalconNL|FalconNL]] 08:34, 16 December 2008 (GMT +1)<br />
<br />
----<br />
<br />
Very quick attempt:<br />
<br />
[[Image:BurkeLibbey_Haskell.png]]<br />
<br />
The main font is [http://www.josbuivenga.demon.nl/diavlo.html Diavlo] (free). The lambda is in Candara, which I believe ships with Vista and/or XP. Not sure of the licensing there. If there's significant interest in this, I'll redo it as a vector graphic.<br />
<br />
-- [[User:Burke|Burke]] 02:33, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
On behalf of the Ministry of Safety and Happiness I would like to promote the meme suggesting that Haskell is the programming language of choice for the Illuminati.<br />
<br />
[[Image:Haskell proceed.png]]<br />
<br />
--[[User:CznpyHrnjwczky|CznpyHrnjwczky]] 05:31, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
More of a mascotte, though she could be used in a logo as well.<br />
<br />
This is Monica Monad, and she's a Warm Fuzzy Thing. Just giving a face to SPJ's alternative name for monads :)<br />
<br />
Her main purpose would be to present tutorials.<br />
<br />
[[Image:Monica_monad_falconnl.png]]<br />
<br />
--[[User:FalconNL|FalconNL]] 00:52, 16 December 2008 (GMT +1)<br />
<br />
----<br />
<br />
A slightly different take on the Haskell logo, as the lambda-in-a-circle looks a bit too much like the Half Life logo for my taste. This one references monads instead of lambda calculus. Three possible slogans, emphasizing the fun that comes from programming in Haskell. Number 2 and 3 also reference function composition. Number 3 is my personal favourite.<br />
<br />
[[Image:Haskell_logo_ideas_falconnl.png]]<br />
<br />
--[[User:FalconNL|FalconNL]] 22:58, 15 December 2008 (GMT +1)<br />
<br />
: Yummy. What's the font? Is it free? [[User:Porges|Porges]] 21:59, 15 December 2008 (UTC)<br />
: Unfortunately, no. The font is called Officina Sans. Is that a problem? [[User:FalconNL|FalconNL]] 00:02, 16 December 2008 (GMT +1)<br />
<br />
----<br />
<br />
Simple, clean:<br />
<br />
[http://hpsg.fu-berlin.de/~rsling/img/haskell-shirt.jpeg http://hpsg.fu-berlin.de/~rsling/img/haskell-shirt.jpeg]<br />
<br />
I really like this t-shirt logo, by the way. Gets my vote so far. — [[User:Chrisdone|Chrisdone]] 00:18, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
Minor tweak to the above:<br />
<br />
[[Image:HaskellLogo-v2.png]]<br />
<br />
----<br />
<br />
Minor modification of the t-shirt logo, the lambda was a bit skewed in my opinion:<br />
<br />
[[Image:tshirt-logo-mod.png]]<br />
<br />
And another modification of the same theme:<br />
<br />
[[Image:tshirt-logo-mod-inv.png]]<br />
<br />
--[[User:Sebastiaan|Sebastiaan]] 13:29, 15 December 2008 (UTC)<br />
: I really like this one. A font other than Arial would be nice ;) [[User:Porges|Porges]] 21:25, 15 December 2008 (UTC)<br />
<br />
[[Image:HaskellLogoTShirtWhite.png]] -- [[User:Chrisdone|Chrisdone]] 23:19, 15 December 2008 (UTC)<br />
<br />
<br />
<br />
----<br />
<br />
Some ideas. Supposed to resemble a lambda abstraction. I realise there are no formal parameters. ---- [[User:Chrisdone|Chrisdone]] 00:12, 15 December 2008 (UTC)<br />
<br />
[http://chrisdone.com/haskell-blah.png http://chrisdone.com/haskell-blah-thumb.png]<br />
<br />
----<br />
<br />
Here's another one; lambda is Gentium SIL, Haskell is MgOpen Cosmetica, tagline is MgOpen Canonica Italic. [[User:Porges|Porges]] 21:25, 15 December 2008 (UTC)<br />
<br />
[[Image:Haskell Logo.png]]<br />
<br />
----<br />
<br />
Another take. A bit simpler, more symmetrical.<br />
<br />
[[Image:haskelllogobeshers.png]]<br />
<br />
----<br />
<br />
[[Image:Haskell-logo.png]]<br />
<br />
The logo uses Kautiva Bold as (non-free) font.<br />
<br />
--[[User:Eelco|Eelco]] 07:43, 15 December 2008 (UTC)<br />
<br />
This one is dedicated to Derek Elkins, to sooth his eyes after having them hurt on the previous logo:<br />
<br />
[[Image:Haskell-logo-funny.png]]<br />
<br />
--[[User:Eelco|Eelco]] 08:53, 15 December 2008 (UTC)<br />
: Makes sense. Comic Sans is the *Official Font of Haskell*, after all.<br />
<br />
----<br />
[[Image:HaskellLogoTDavie.png]]<br />
<br />
[[Image:HaskellLogoTDavie.pdf]] (vector pdf version)<br />
<br />
[[User:Beelsebob|Beelsebob]] 08:32, 15 December 2008 (UTC)<br />
<br />
---- <br />
<br />
[http://relapse-software.net/haskell_0.png http://relapse-software.net/haskell_0.png]<br />
<br />
[http://relapse-software.net/haskell_1.png http://relapse-software.net/haskell_1.png]<br />
<br />
----<br />
<br />
[http://relapse-software.net/haskell_5.png http://relapse-software.net/haskell_5.png]<br />
<br />
<br />
[http://relapse-software.net/haskell_2.png http://relapse-software.net/haskell_2.png]<br />
<br />
[http://relapse-software.net/haskell_3.png http://relapse-software.net/haskell_3.png]<br />
<br />
----<br />
<br />
Logo fun using Blender:<br />
<br />
[[Image:HsLogosMB.png|center|Haskell Logo idea with lambda as mascot]]<br />
<br />
I tried to give the lambda sign an ''alive'' feeling. --[[User:GokhanSan|GokhanSan]] 12:49, 15 December 2008 (UTC)<br />
: Middle one looks a bit too much like the ghostbusters logo :D [[User:Porges|Porges]] 21:25, 15 December 2008 (UTC)<br />
:: Hmm, I wonder if it's the choice of colors. Then again, with a minor alteration, we get a FreeBSD icon candidate: [[Image:HsLogoMB-BSD.png|beastie]] ;-) --[[User:GokhanSan|GokhanSan]] 08:52, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:HaskellLogoIdea05.gif]]<br />
<br />
Not sure about the colour. I tried to pick the purple from the current logo. Although the lower lambda is rotated there is [http://poinikastas.csad.ox.ac.uk/browseGlyphs.shtml historic precedence] for other forms of the letter. The lambda takes the angle from the 'k'. Font is News Gothic. Feel free to play with the concept. [[User:Rk|Rk]] 11:13, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
<br />
More vectorial Haskell logo concepts. Using inkscape and the popular [http://inde-graphics.deviantart.com/art/advent-font-57338302 advent font] (CC at-nc-nd).<br />
<br />
[[Image:Haskell_infinitylambda.png]]<br />
[[Image:Haskell_halfhalfinfinitylambda.png]]<br />
[[Image:Haskell_3qhalfinfinitylambda.png]]<br />
<br />
Vectorial images (svg):<br />
<br />
[http://haskell.org/sitewiki/images/8/86/Haskell_infinitylambda.svg 1]<br />
[http://haskell.org/sitewiki/images/d/df/Haskell_halfinfinitylambda.svg 2]<br />
[http://haskell.org/sitewiki/images/6/66/Haskell_3qhalfinfinitylambda.svg 3]<br />
<br />
* [[User:alvivi|alvivi]] 19:28, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:Haskell-pure.png|haskell::pure]]<br />
<br />
--[[User:Rgreayer|Rgreayer]] 20:44, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
Find a font where 'k' looks like a reverse lambda (after removing the "stalk"). For example:<br />
<br />
[[Image:Kaskell.png|Kaskell]]<br />
<br />
Note this example uses Monotype Corsiva which is not a free font. If the basic approach looks good, we can find a similar free font that works.<br />
<br />
--[[User:Orenbenkiki|OrenBenKiki]] 01:40, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[Image:Haskell.png|Haskellll]]<br />
<br />
Illustrator, vector art available, apologies to GokhanSan<br />
<br />
--[[User:Mpeter|Mpeter]] 10:18, 15 December 2008 (UTC)<br />
<br />
----<br />
<br />
<br />
[http://relapse-software.net/haskell_6.png http://relapse-software.net/haskell_6.png]<br />
<br />
----<br />
<br />
[[Image:Haskell4.png|Haskell]]<br />
<br />
Inkscape, vector art available.<br />
<br />
--[[User:Chromakode|Chromakode]] 07:14, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
I'll probably regret this...<br />
<br />
[[Image:NarleyYeeaaahh.jpg|Haskell - Narwals, YEEAAAAHH!!]]<br />
<br />
(Created with PAINT.NET)<br />
<br />
--[[User:Reified|Reified]] 07:20, 16 December 2008 (UTC)<br />
----<br />
<br />
The general idea is that it's just "Haskell" but with w lambda instead of the a. The font here is Myriad Pro but this would work with any good sans-serif font. It's color-agnostic, so it can be easily printer, presented as white on black or changed to a different color.<br />
<br />
[[Image:Haskell_logo_bonus.png]]<br />
<br />
[[Image:Haskell_logo_bonus2.png]]<br />
<br />
--[[User:BONUS|BONUS]] 14:40, 16 December 2008 (UTC)<br />
<br />
----<br />
<br />
[[image:Axman6-logo-1.0.png]]<br />
<br />
--[[User:Axman6|Axman6]] 15:16, 16 December 2008 (UTC)</div>Axman6https://wiki.haskell.org/index.php?title=File:Axman6-logo-1.0.png&diff=24888File:Axman6-logo-1.0.png2008-12-16T15:11:55Z<p>Axman6: First attempt at a simple haskell logo</p>
<hr />
<div>First attempt at a simple haskell logo</div>Axman6https://wiki.haskell.org/index.php?title=Applications_and_libraries/Concurrency_and_parallelism&diff=23344Applications and libraries/Concurrency and parallelism2008-10-07T12:20:32Z<p>Axman6: </p>
<hr />
<div>'''Concurrent and Parallel Programming'''<br />
<br />
Haskell has been designed for parallel and concurrent programming since<br />
its inception. In particular, Haskell's [http://haskell.org/haskellwiki/Why_Haskell_matters purity] greatly simplifies reasoning about<br />
parallel programs. This page lists libraries and extensions for programming<br />
concurrent and parallel applications in Haskell. See also the<br />
[[Research_papers/Parallelism_and_concurrency|research papers]] on<br />
parallel and concurrent Haskell.<br />
<br />
Collected tutorials and information on multicore programming with Haskell:<br />
<br />
* [http://haskell.org/haskellwiki/Haskell_for_multicores Haskell for multicores]<br />
<br />
== SMP Haskell ==<br />
<br />
;[http://haskell.org/haskellwiki/GHC/Concurrency Multiprocessor GHC]<br />
:As of GHC 6.5, [http://www.haskell.org/ghc/dist/current/docs/users_guide/sec-using-smp.html GHC supports] running programs in [http://www.haskell.org/ghc/dist/current/docs/users_guide/lang-parallel.html parallel] on an SMP or multicore machine, and has been used successfully on up to 40 cpus.<br />
<br />
== Concurrency==<br />
<br />
;[http://haskell.org/haskellwiki/GHC/Concurrency Concurrent Haskell]<br />
:GHC has supported concurrency via forkIO and MVars for more than a<br />
decade, and its threading support [http://shootout.alioth.debian.org/gp4/benchmark.php?test=threadring&lang=all is very fast].<br />
* [http://haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Control-Concurrent.html Documentation]<br />
* [http://haskell.org/haskellwiki/Concurrency_demos Examples]<br />
<br />
;[[WrapConc | Wrapped Concurrency]]<br />
:A wrapper around Control.Concurrency and Control.Exception that provides versions of forkIO that have more guarantees.<br />
<br />
== Concurrent channels ==<br />
<br />
;Control.Concurrent.Chan: channels allow threads to pass messages to each other<br />
* [http://haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Control-Concurrent-Chan.html Documentation]<br />
<br />
== Software transactional memory ==<br />
<br />
;[[Software transactional memory|Software Transactional Memory]]<br />
:GHC supports a sophisticated version of software transactional memory. Software Transactional Memory (STM) is a new way to coordinate concurrent threads.<br />
* [http://haskell.org/ghc/docs/latest/html/libraries/stm/Control-Concurrent-STM.html Documentation]<br />
* The paper [http://research.microsoft.com/~simonpj/papers/stm/index.htm Composable memory transactions]. <br />
* The paper [http://research.microsoft.com/~simonpj/papers/stm/lock-free.htm Lock-free data structures using Software Transactional Memory in Haskell] gives further examples of concurrent programming using STM.<br />
<br />
== Parallel strategies == <br />
<br />
;Control.Parallel<br />
:Parallel evaluation stratagies may be hinted, which is a much lighter way to achieve paralellism than to use explicit concurrency primitives.<br />
* [http://haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Control-Parallel-Strategies.html Documentation]. ''-- Broken?''<br />
* The [http://www.haskell.org/ghc/dist/current/docs/parallel/Control-Parallel-Strategies.html HEAD version] of the same contains more information.<br />
* The [http://www.macs.hw.ac.uk/~dsg/gph/papers/html/Strategies/strategies.html original paper]<br />
<br />
== Data Parallel Haskell ==<br />
<br />
;[http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell Data Parallel Haskell]<br />
:Implicitly parallel, high performance (nested) arrays, supporting large multicore programming.<br />
<br />
== Unified events and threads ==<br />
<br />
;[http://www.seas.upenn.edu/~lipeng/homepage/unify.html User-level events and threads]<br />
:Ultra lightweight, user level threads for GHC Haskell, layered over epoll. Supports up to 10 million lightweight threads. Experimental.<br />
<br />
== Feedback-directed implicit parallelism ==<br />
<br />
[http://research.microsoft.com/~tharris/papers/2007-fdip.pdf Implicit parallelism in Haskell, and a feedback-directed mechanism to increase its granularity]<br />
<br />
== Parallel Haskell ==<br />
<br />
;[http://www.macs.hw.ac.uk/~dsg/gph/ GpH: Glasgow Parallel Haskell]<br />
:A complete, GHC-based implementation of the parallel Haskell extension GpH and of evaluation strategies is available. Extensions of the runtime-system and language to improve performance and support new platforms are under development.<br />
<br />
== Distributed Haskell ==<br />
<br />
;[http://www.macs.hw.ac.uk/~dsg/gdh/ GdH: Glasgow Distributed Haskell]<br />
:GdH supports distributed stateful interactions on multiple locations. It is a conservative extension of both Concurrent Haskell and GpH, enabling the distribution of the stateful IO threads of the former on the multiple locations of the latter. The programming model includes forking stateful threads on remote locations, explicit communication over channels, and distributed exception handling.<br />
<br />
;[http://www.macs.hw.ac.uk/~dubois/mhaskell Mobile Haskell (mHaskell)]<br />
:Mobile Haskell supports both strong and weak mobility of computations across open networks. The mobility primitives are higher-order polymorphic channels. Mid-level abstractions like remote evaluation, analogous to Java RMI, are readily constructed. High-level mobility skeletons like mobile map and mobile fold encapsulate common patterns of mobile computation.<br />
<br />
;[http://www.mathematik.uni-marburg.de/~eden Eden]<br />
:Eden extends Haskell with a small set of syntactic constructs for explicit process specification and creation. While providing enough control to implement parallel algorithms efficiently, it frees the programmer from the tedious task of managing low-level details by introducing automatic communication (via head-strict lazy lists), synchronisation, and process handling.<br />
<br />
== MPI ==<br />
<br />
;[http://www.foldr.org/~michaelw/hmpi/ hMPI]<br />
:hMPI is an acronym for HaskellMPI. It is a Haskell binding conforming to MPI (Message Passing Interface) standard 1.1/1.2. The programmer is in full control over the communication between the nodes of a cluster.<br />
<br />
== Distributed Haskell: Ports ==<br />
<br />
;[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ports-0.4.3.2 The Haskell Ports Library (HPL)]<br />
:Ports are an abstraction for modelling variables whose values evolve over time without the need to resort to mutable variable, such as IORefs. More precisely, a port represents all values that a time-dependent variable successively takes as a stream, where each element of the stream corresponds to a state change - we can also say that a port represents a time series. Moreover, a port supports concurrent construction of the time series, or stream of values.<br />
<br />
== Modelling concurrent and distributed systems ==<br />
<br />
;[http://www.cs.kent.ac.uk/~cr3/HCPN/ HCPN: Haskell-Coloured Petri Nets]<br />
:Haskell-Coloured Petri Nets (HCPN) are an instance of high-level Petri Nets, in which anonymous tokens are replaced by Haskell data objects (and transitions can operate on that data, in addition to moving it around). This gives us a hybrid graphical/textual modelling formalism for Haskell, especially suited for modelling concurrent and distributed systems.<br />
<br />
== Communicating Haskell Processes ==<br />
<br />
;[http://www.cs.kent.ac.uk/projects/ofa/chp/ CHP: Communicating Haskell Processes]<br />
:CHP is built on the ideas of CSP (Communicating Sequential Processes), featuring encapsulated parallel processes (no shared data!) communicating over synchronous channels. This is a very composable mode that also allows choice on communications, so that a process may offer to either read on one channel or write on another, but will only take the first that is available.</div>Axman6https://wiki.haskell.org/index.php?title=CAF&diff=23320CAF2008-10-06T16:03:48Z<p>Axman6: Added redirect</p>
<hr />
<div>#REDIRECT [[Constant applicative form]]</div>Axman6