From gvidal at dsic.upv.es Wed Jan 2 04:06:15 2008 From: gvidal at dsic.upv.es (German Vidal) Date: Wed Jan 2 04:00:16 2008 Subject: [Haskell] SAS 2008 Third Call for Papers Message-ID: PLEASE POST --> SAS 2008 at the Technical University of Valencia We are happy to announce that SAS 2008, the Static Analysis Symposium, will take place at the Technical University of Valencia: Submission of abstract: January 12, 2008 Submission of full paper: January 19, 2008 Notification: March 7, 2008 Camera-ready version: April 5, 2008 Conference: July 16-18, 2008 Please see: http://www.dsic.upv.es/~sas2008/ ** The submission site is now open ** Maria Alpuente, German Vidal (PC co-chairs) --------------------------------------------------------------------------- Call for papers Static Analysis Symposium - SAS 2008 16-18 July 2008, Valencia, Spain (co-located with LOPSTR 2008) url http://www.dsic.upv.es/~sas2008 email sas2008@dsic.upv.es Static Analysis is increasingly recognized as a fundamental tool for high performance implementations and verification of programming languages and systems. The series of Static Analysis Symposia has served as the primary venue for presentation of theoretical, practical, and application advances in the area. The technical programme for SAS 2008 will consist of invited lectures and presentations of refereed papers. Contributions are welcome on all aspects of static analysis, including, but not limited to: abstract domains abstract interpretation abstract testing compiler optimizations control flow analysis data flow analysis model checking program specialization security analysis theoretical analysis frameworks type based analysis verification systems Submissions can address any programming paradigm, including concurrent, constraint, functional, imperative, logic, and object-oriented programming. Survey papers, that present some aspect of the above topics from a new perspective, and application papers, that describe experience with industrial applications, are also welcome. Papers must describe original work, be written and presented in English, and must not substantially overlap with papers that have been published, or that are simultaneously submitted to a journal or a conference with refereed proceedings. Submitted papers should be at most 15 pages formatted in LNCS style (excluding bibliography and well-marked appendices not intended for publication). PC members are not required to read the appendices, and thus papers should be intelligible without them. The conference proceedings is planned to be published by Springer-Verlag in the Lecture Notes in Computer Science series. Invited Speakers Roberto Giacobazzi (Universita' degli Studi di Verona, Italy) Ben Liblit (University of Wisconsin-Madison, USA) PC co-chairs Maria Alpuente (Technical University of Valencia, Spain) German Vidal (Technical University of Valencia, Spain) PC members Elvira Albert (Complutense University of Madrid, Spain) Roberto Bagnara (University of Parma, Italy) Maurice Bruynooghe (Katholieke Universiteit Leuven, Belgium) Radhia Cousot (CNRS & Ecole Polytechnique, France) Javier Esparza (Technical University of Munchen, Germany) Sandro Etalle (University of Twente, The Netherlands) Moreno Falaschi (University of Siena, Italy) Stephen Fink (IBM T.J. Watson Research Center, USA) John Gallagher (Roskilde University, Denmark) Maria del Mar Gallardo (University of Malaga, Spain) Chris Hankin (Imperial College, UK) Manuel Hermenegildo (Technical University of Madrid, Spain) Julia Lawall (University of Copenhagen, Denmark) Alexey Loginov (IBM T.J. Watson Research Center, USA) Hanne Riis Nielson (Technical University of Denmark, Denmark) David Schmidt (Kansas State University, USA) Harald Sondergaard (University of Melbourne, Australia) Tachio Terauchi (Tohoku University, Japan) Ji Wang (National Laboratory for Parallel and Distributed Processing, China) Organizing committee chair Alicia Villanueva (Technical University of Valencia, Spain) Important dates Submission of abstract: January 12, 2008 Submission of full paper: January 19, 2008 Notification: March 7, 2008 Camera-ready version: April 5, 2008 Conference: July 16-18, 2008 --------------------------------------------------------------------------- From waldmann at imn.htwk-leipzig.de Wed Jan 2 12:27:22 2008 From: waldmann at imn.htwk-leipzig.de (Johannes Waldmann) Date: Wed Jan 2 12:21:29 2008 Subject: [Haskell] Empty instance declaration In-Reply-To: <20071228222413.warof1vwg48css4w@webmail.spamcop.net> References: <9ffec2b60712190530v1c21e4f0x7f506b48e6f14773@mail.gmail.com> <9ffec2b60712270834y29e7f5c0ie9042bcbdccb7e5b@mail.gmail.com> <20071228222413.warof1vwg48css4w@webmail.spamcop.net> Message-ID: <477BC97A.9090405@imn.htwk-leipzig.de> ajb@spamcop.net wrote: > One thing that hasn't come up yet is that empty instance declarations are > the only decent option (that I know of) that we have in the absence of > real class aliases. I agree. I use this in my code in a number of places. It helps to write readable signatures. Best regards, Johannes Waldmann. From dons at galois.com Thu Jan 3 02:16:42 2008 From: dons at galois.com (Don Stewart) Date: Thu Jan 3 02:10:47 2008 Subject: [Haskell] announcing qtHaskell-1.1.1, the first preview release of qtHaskell In-Reply-To: References: Message-ID: <20080103071642.GF2806@scytale.galois.com> dth.tss: > For all interested in Haskell GUIs, there is now a first preview release > of qtHaskell - a set of Haskell bindings for Trolltech's Qt available at > > [1]http://qthaskell.sourceforge.net > > Any feedback, comments etc welcome > > Merry Christmas > > David Harley > > P.S. if anyone can get the system to build and work on a non-linux or > Windows environment - in particular MacOs - could the let me know the > precise install steps required. > Will this be uploaded to hackage.haskell.org? -- Don (P.S. excellent work!) From simonpj at microsoft.com Thu Jan 3 08:12:42 2008 From: simonpj at microsoft.com (Simon Peyton-Jones) Date: Thu Jan 3 08:06:40 2008 Subject: [Haskell] garbage collection of Concurrent Haskell threads? In-Reply-To: References: Message-ID: The GC discards an MVar when there are only blocked readers on it. But there can be any number of blocked readers. So long as the read remains in the future, however, the GC doesn't recover it, because it has no way to know that the thread will only read it and not write it. Your idea of splitting the MVar into two halves, a read end and a write end, might well improve this situation somewhat. But, like finalisers, it's dangerous to rely on reachability arguments for anything that's really important. Boehm's article on finalisers explains why. My guess is that the same remarks would apply to MVars. Simon From: conal.elliott@gmail.com [mailto:conal.elliott@gmail.com] On Behalf Of Conal Elliott Sent: 24 December 2007 18:49 To: Simon Peyton-Jones Cc: haskell@haskell.org Subject: Re: [Haskell] garbage collection of Concurrent Haskell threads? Thanks, Simon. If I understand the mechanism you're describing, it discards readers of an empty MVar when there are no other references to the MVar *because* the MVar can never get written. And if there are other readers but no writers, then I'm guessing GC wouldn't know that, and none of the readers get discarded. Is that so? I think Baker & Hewitt's trick was analogous to discarding writers of an already full MVar when there are readers (readMVar) but no takers (takeMVar). (Though not quite, since readMVar is implemented via takeMVar & putMVar.) I guess that effectively means IVars instead of MVars. In either direction (blocked reader or blocked writer), the interface of MVars (or IVars) would seem to prevent an accurate analysis, since GC wouldn't know whether a Var reference was for reading or writing. Right? A simple solution might be to hide the Var itself and instead expose reader and writer halves. If there's an analysis problem at all, does that solution make sense? Cheers, - Conal On Dec 24, 2007 1:02 AM, Simon Peyton-Jones > wrote: GHC already garbage-collects threads that are blocked on an MVar that is otherwise inaccessible (and hence cannot be updated). More precisely, GHC sends the thread an asynchronous exception (ThreadBlocked or something), so that it has a chance to clean up. So perhaps the GC you want is already implemented? Simon From: haskell-bounces@haskell.org [mailto:haskell-bounces@haskell.org] On Behalf Of Conal Elliott Sent: 24 December 2007 00:15 To: haskell@haskell.org Subject: [Haskell] garbage collection of Concurrent Haskell threads? The classic paper "The Incremental Garbage Collection of Processes" (http://citeseer.ist.psu.edu/baker77incremental.html) describes "futures" and how particularly garbage collecting them when their pending result is no longer referenced. I've been playing with an implementation of futures in Concurrent Haskell ( http://haskell.org/haskellwiki/Reactive), using MVars, and I'm stumped about how to GC non-winning threads in a race between futures ("parallel or"). I'm having winner kill loser, which seems to work fine, though is potentially dangerous w.r.t locked resources. Still, the elegance of a GC-based solution appeals to me. Has anyone explored process GC ideas for Concurrent Haskell (or STM)? Futures are implemented using Concurrent Haskell's MVars. I first tried using STM and TVars, simply using orElse to implement mappend for futures. However, I didn't see how to avoid nesting "atomically", which yielded a run-time error. If anyone has ideas about using STM & TVars for futures, I'd love to hear. Thanks, - Conal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080103/08309d17/attachment.htm From Malcolm.Wallace at cs.york.ac.uk Thu Jan 3 08:23:03 2008 From: Malcolm.Wallace at cs.york.ac.uk (Malcolm Wallace) Date: Thu Jan 3 08:22:08 2008 Subject: [Haskell] Empty instance declaration In-Reply-To: <20071228222413.warof1vwg48css4w@webmail.spamcop.net> References: <9ffec2b60712190530v1c21e4f0x7f506b48e6f14773@mail.gmail.com> <9ffec2b60712270834y29e7f5c0ie9042bcbdccb7e5b@mail.gmail.com> <20071228222413.warof1vwg48css4w@webmail.spamcop.net> Message-ID: <20080103132303.28e47f6a.Malcolm.Wallace@cs.york.ac.uk> ajb@spamcop.net wrote: > One thing that hasn't come up yet is that empty instance declarations > are the only decent option (that I know of) that we have in the > absence of real class aliases. It does seem to me that compilers could reasonably distinguish between incomplete definition: > > class (Monad m, Ord t) => ReVars m t where { } > > instance (Monad m, Ord t) => ReVars m t where { } and intentionally incomplete definition: class (Monad m, Ord t) => ReVars m t instance (Monad m, Ord t) => ReVars m t Both syntaxes (with and without the 'where') are currently legal, but the latter is more obviously deliberate (at least to this human reader). Regards, Malcolm From Marnix.Klooster at infor.com Thu Jan 3 10:02:25 2008 From: Marnix.Klooster at infor.com (Marnix Klooster) Date: Thu Jan 3 09:56:22 2008 Subject: [Haskell] garbage collection of Concurrent Haskell threads? In-Reply-To: References: Message-ID: <06BF843FBE391649BE41713BC59889AD0314C31B@nlbawexmb1.infor.com> Hello Simon, For the record: I assume that by "Boehm's article on finalisers" you mean: @inproceedings{DBLP :conf/popl/Boehm03, author = {Hans-Juergen Boehm}, title = {Destructors, finalizers, and synchronization}, booktitle = {POPL}, year = {2003}, pages = {262-272}, ee = {http://doi.acm.org/10.1145/640128.604153}, bibsource = {DBLP, http://dblp.uni-trier.de} } (which is also at http://citeseer.ist.psu.edu/boehm03destructors.html)? Groetjes, <>< Marnix -- Marnix Klooster | Software Engineer, ERP LN Enterprise Server | Infor | (+31 or 0)342-428511 | marnix.klooster@infor.com | Infor Global Solutions (Barneveld) BV | P.O. box 143 | 3770 AC Barneveld | The Netherlands ________________________________ From: haskell-bounces@haskell.org [mailto:haskell-bounces@haskell.org] On Behalf Of Simon Peyton-Jones Sent: Thursday, 3 January, 2008 14:13 To: Conal Elliott Cc: haskell@haskell.org Subject: RE: [Haskell] garbage collection of Concurrent Haskell threads? The GC discards an MVar when there are only blocked readers on it. But there can be any number of blocked readers. So long as the read remains in the future, however, the GC doesn't recover it, because it has no way to know that the thread will only read it and not write it. Your idea of splitting the MVar into two halves, a read end and a write end, might well improve this situation somewhat. But, like finalisers, it's dangerous to rely on reachability arguments for anything that's really important. Boehm's article on finalisers explains why. My guess is that the same remarks would apply to MVars. Simon From: conal.elliott@gmail.com [mailto:conal.elliott@gmail.com] On Behalf Of Conal Elliott Sent: 24 December 2007 18:49 To: Simon Peyton-Jones Cc: haskell@haskell.org Subject: Re: [Haskell] garbage collection of Concurrent Haskell threads? Thanks, Simon. If I understand the mechanism you're describing, it discards readers of an empty MVar when there are no other references to the MVar *because* the MVar can never get written. And if there are other readers but no writers, then I'm guessing GC wouldn't know that, and none of the readers get discarded. Is that so? I think Baker & Hewitt's trick was analogous to discarding writers of an already full MVar when there are readers (readMVar) but no takers (takeMVar). (Though not quite, since readMVar is implemented via takeMVar & putMVar.) I guess that effectively means IVars instead of MVars. In either direction (blocked reader or blocked writer), the interface of MVars (or IVars) would seem to prevent an accurate analysis, since GC wouldn't know whether a Var reference was for reading or writing. Right? A simple solution might be to hide the Var itself and instead expose reader and writer halves. If there's an analysis problem at all, does that solution make sense? Cheers, - Conal On Dec 24, 2007 1:02 AM, Simon Peyton-Jones wrote: GHC already garbage-collects threads that are blocked on an MVar that is otherwise inaccessible (and hence cannot be updated). More precisely, GHC sends the thread an asynchronous exception (ThreadBlocked or something), so that it has a chance to clean up. So perhaps the GC you want is already implemented? Simon From: haskell-bounces@haskell.org [mailto:haskell-bounces@haskell.org] On Behalf Of Conal Elliott Sent: 24 December 2007 00:15 To: haskell@haskell.org Subject: [Haskell] garbage collection of Concurrent Haskell threads? The classic paper "The Incremental Garbage Collection of Processes" (http://citeseer.ist.psu.edu/baker77incremental.html) describes "futures" and how particularly garbage collecting them when their pending result is no longer referenced. I've been playing with an implementation of futures in Concurrent Haskell ( http://haskell.org/haskellwiki/Reactive), using MVars, and I'm stumped about how to GC non-winning threads in a race between futures ("parallel or"). I'm having winner kill loser, which seems to work fine, though is potentially dangerous w.r.t locked resources. Still, the elegance of a GC-based solution appeals to me. Has anyone explored process GC ideas for Concurrent Haskell (or STM)? Futures are implemented using Concurrent Haskell's MVars. I first tried using STM and TVars, simply using orElse to implement mappend for futures. However, I didn't see how to avoid nesting "atomically", which yielded a run-time error. If anyone has ideas about using STM & TVars for futures, I'd love to hear. Thanks, - Conal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080103/1aefee4a/attachment-0001.htm From waldmann at imn.htwk-leipzig.de Thu Jan 3 14:43:53 2008 From: waldmann at imn.htwk-leipzig.de (Johannes Waldmann) Date: Thu Jan 3 14:37:50 2008 Subject: [Haskell] Data.Tree.drawTree more spacefilling? Message-ID: <477D3AF9.2010708@imn.htwk-leipzig.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dear all, I'm looking for a Data.Tree.drawTree that is a bit more "spacefilling" (put some subtrees side by side). Thanks - Johannes Waldmann, Leipzig. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4-svn0 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHfTr53ZnXZuOVyMIRAhqkAKCkXFRyqtR+6KaTnFf2msAGd1hf1QCeOFpB /WMg+//boG/vAos+yO0iHZo= =P13d -----END PGP SIGNATURE----- From stephan.friedrichs at tu-bs.de Sat Jan 5 13:35:19 2008 From: stephan.friedrichs at tu-bs.de (Stephan Friedrichs) Date: Sat Jan 5 13:29:18 2008 Subject: [Haskell] Question concerning the "Data Parallel Haskell: a status report" paper Message-ID: <477FCDE7.3060909@tu-bs.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Haskellers, the paper "Data Parallel Haskell: a status report" (Chakravarty, Leshchinskiy, Peyton Jones, Keller and Marlow) is an important source of my seminar handout about skeletons and parallelisation. It contains code samples concerning the ArrElem type family: class ArrElem e where data [:e:] (!:) :: [:e:] -> Int -> e and various instance declarations, e.g.: class ArrElem Int where -- sic! -- ... My question is: Is "class ArrElem Int" a typo and should be "instance ArrElem Int" or did I get something wrong? Thanks in advance and a happy new year - Stephan - -- Fr?her hie? es ja: Ich denke, also bin ich. Heute wei? man: Es geht auch so. - Dieter Nuhr -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.8 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkd/zecACgkQyui/cGVQfkizigCdHZ7DrL+v+OcyHZDF8hWk9jO7 fQEAnR5niACeaSASPLzMqfclirzjHPRU =Yvj6 -----END PGP SIGNATURE----- From dons at galois.com Sat Jan 5 19:20:46 2008 From: dons at galois.com (Don Stewart) Date: Sat Jan 5 19:14:43 2008 Subject: [Haskell] Haskell Weekly News: Issue 68 - January 05, 2008 Message-ID: <20080106002046.GA18375@scytale.galois.com> --------------------------------------------------------------------------- Haskell Weekly News Issue 68 - January 05, 2008 --------------------------------------------------------------------------- Welcome to issue 68 of HWN, a newsletter covering developments in the [1]Haskell community. This HWN features new releases of the GHC and nhc98 Haskell compilers, a pre-release of darcs 2.0, several new user groups formed, and of course, more than 100 updated and new libraries 1. http://haskell.org/ Announcements GHC 6.8.2. The GHC Team [2]announced the release of GHC 6.8.2, featuring optimisation improvements, improvements to ghci and fixes to standalone deriving. 2. http://www.haskell.org/ghc/download_ghc_682.html nhc98 1.2 released. Malcolm Wallace [3]announced the release of nhc98 1.2. 1.20 is a refreshed release with many of the current core library packages included, and a variety of small bugfixes since the last release. It successfully compiles and runs more programs from the nobench suite than jhc, hbc, Hugs, or yhc. It generates an interpreted bytecode that, on the whole runs faster than that generated by Hugs or yhc, and in many cases is also faster than ghci. Although nhc98 is written in Haskell, you don't need an existing Haskell compiler on your platform to build nhc98 - a C compiler will do. Hence, it is portable to almost any unix-like machine with a 32-bit compatibility mode. Many useful build tools come included: hmake (the inspiration for ghc --make), hi (interactive read-eval-print, like Hugs or ghci), cpphs (Haskell-aware replacement for cpp) and hsc2hs (preprocessor for FFI code) 3. http://article.gmane.org/gmane.comp.lang.haskell.general/15770 darcs 2.0.0pre2. David Roundy [4]announced the availability of the second prerelease of [5]darcs two, darcs 2.0.0pre2. This release fixes several severe performance bugs that were present in the first prerelease. These issues were identified and fixed thanks to the helpful testing of Simon Marlow and Peter Rockai. We also added support for compilation under ghc 6.4, so even more users should be able to test this release. 4. http://article.gmane.org/gmane.comp.lang.haskell.cafe/33483 5. http://darcs.net/ The Monad.Reader Issue 9: SoC special. Wouter Swierstra [6]announced a new issue of The Monad.Reader, a 'Summer of Code Special' - it consists of three articles from student participants of Google's Summer of Code, describing the projects they worked on. 6. http://article.gmane.org/gmane.comp.lang.haskell.cafe/31848 What's happening with Haskell? The 13th HCAR. Andres Loeh [7]announced the 13th edition of the Haskell Communities and Activities Report 7. http://www.haskell.org/communities/ Teach yourself gtk2hs in 21 hours. Hans van Thiel [8]announced a Gtk2Hs basics tutorial, based on the Tony Gale and Ian Main GTK+2.0 tutorial, is now available for review and comment. 8. http://article.gmane.org/gmane.comp.lang.haskell.cafe/32671 Minimalistic Haskell blog framework. Paul Brown [9]announced a lightweight, experimental blog publishing application, [10]perpubplat 9. http://article.gmane.org/gmane.comp.lang.haskell.cafe/34503 10. http://datapr0n.com/repos/perpubplat atom. Tom Hawkins [11]announced the release of atom 2007.12; atom is a domain-specific language embedded in Haskell for describing real-time control applications 11. http://www.haskell.org/pipermail/haskell-cafe/2007-December/035742.html Hackage New and updated libraries in [12]the Hackage library database. 12. http://hackage.haskell.org/ * bytestring 0.9.0.4. Uploaded by DonaldStewart. [13]bytestring: Fast, packed, strict and lazy byte arrays with a list interface. * uuagc 0.9.5. Uploaded by ArieMiddelkoop. [14]uuagc: Attribute Grammar System of Universiteit Utrecht. * uulib 0.9.5. Uploaded by ArieMiddelkoop. [15]uulib: Haskell Utrecht Tools Library. * llvm 0.0.2. Uploaded by BryanOSullivan. [16]llvm: Bindings to the LLVM compiler toolkit. * HDBC-sqlite3 1.1.3.1. Uploaded by JohnGoerzen. [17]HDBC-sqlite3: Sqlite v3 driver for HDBC. * HDBC-odbc 1.1.3.1. Uploaded by JohnGoerzen. [18]HDBC-odbc: ODBC driver for HDBC. * dimensional 0.7.2. Uploaded by BjornBuckwalter. [19]dimensional: Statically checked physical dimensions.. * uulib 0.9.5. Uploaded by ArieMiddelkoop. [20]uulib: Haskell Utrecht Tools Library. * hsc3 0.1. Uploaded by RohanDrape. [21]hsc3: Haskell SuperCollider. * hosc 0.1. Uploaded by RohanDrape. [22]hosc: Haskell Open Sound Control. 13. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-0.9.0.4 14. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uuagc-0.9.5 15. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uulib-0.9.5 16. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/llvm-0.0.2 17. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-sqlite3-1.1.3.1 18. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-odbc-1.1.3.1 19. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dimensional-0.7.2 20. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uulib-0.9.5 21. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsc3-0.1 22. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hosc-0.1 * GLFW 0.2. Uploaded by PaulLiu. [23]GLFW: A binding for GLFW, An OpenGL Framework. * control-timeout 0.1. Uploaded by AdamLangley. [24]control-timeout: Timeout handling. * hiccup 0.35. Uploaded by KyleConsalus. [25]hiccup: Relatively efficient Tcl interpreter with support for basic operations. * phooey 2.0. Uploaded by ConalElliott. [26]phooey: Functional user interfaces. * reactive 0.0. Uploaded by ConalElliott. [27]reactive: Simple foundation for functional reactive programming. * phooey 1.4. Uploaded by ConalElliott. [28]phooey: Functional user interfaces. * hburg 1.1.1. Uploaded by IgorBohm. [29]hburg: Haskell Bottom Up Rewrite Generator. * hinotify 0.2. Uploaded by LennartKolmodin. [30]hinotify: Haskell binding to INotify. * cabal-rpm 0.3.3. Uploaded by BryanOSullivan. [31]cabal-rpm: RPM package builder for Haskell Cabal source packages.. * codec-libevent 0.1. Uploaded by AdamLangley. [32]codec-libevent: Cross-platform structure serialisation. 23. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GLFW-0.2 24. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/control-timeout-0.1 25. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hiccup-0.35 26. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/phooey-2.0 27. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/reactive-0.0 28. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/phooey-1.4 29. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hburg-1.1.1 30. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hinotify-0.2 31. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-rpm-0.3.3 32. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/codec-libevent-0.1 * irc 0.4. Uploaded by TrevorElliott. [33]irc: A small library for parsing IRC messages.. * dlist 0.4. Uploaded by DonaldStewart. [34]dlist: Differences lists. * AutoForms 0.4.0. Uploaded by MadsLindstroem. [35]AutoForms: GUI library based upon generic programming (SYB3). * bktrees 0.2.1. Uploaded by JosefSvenningsson. [36]bktrees: A set data structure with approximate searching. * bktrees 0.2. Uploaded by JosefSvenningsson. [37]bktrees: A set data structure with approximate searching. * binary-strict 0.1. Uploaded by AdamLangley. [38]binary-strict: Binary deserialisation using strict ByteStrings. * haddock 0.9. Uploaded by SimonMarlow. [39]haddock: Haddock is a documentation-generation tool for Haskell libraries. * bytestring-mmap 0.2.0. Uploaded by DonaldStewart. [40]bytestring-mmap: mmap support for strict ByteStrings. * bytestring 0.9.0.3. Uploaded by DonaldStewart. [41]bytestring: Fast, packed, strict and lazy byte arrays with a list interface. * hiccup 0.3. Uploaded by KyleConsalus. [42]hiccup: Added by KyleConsalus, Wed Dec 19 17:00:42 PST 2007.. 33. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/irc-0.4 34. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dlist-0.4 35. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/AutoForms-0.4.0 36. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bktrees-0.2.1 37. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bktrees-0.2 38. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/binary-strict-0.1 39. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haddock-0.9 40. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-mmap-0.2.0 41. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-0.9.0.3 42. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hiccup-0.3 * cedict 0.1.1. Uploaded by JasonDusek. [43]cedict: Convenient Chinese character lookup.. * TypeCompose 0.3. Uploaded by ConalElliott. [44]TypeCompose: Type composition classes & instances. * bytestring-mmap 0.1.2. Uploaded by DonaldStewart. [45]bytestring-mmap: mmap support for strict ByteStrings. * bytestring 0.9.0.2. Uploaded by DonaldStewart. [46]bytestring: Fast, packed, strict and lazy byte arrays with a list interface. * bytestring-mmap 0.1.1. Uploaded by DonaldStewart. [47]bytestring-mmap: mmap support for strict ByteStrings. * mkcabal 0.3. Uploaded by DonaldStewart. [48]mkcabal: Generate cabal files for a Haskell project. * terminfo 0.1. Uploaded by Judah Jacobson. [49]terminfo: Haskell bindings to the terminfo library.. * Cabal 1.2.3.0. Uploaded by Duncan Coutts. [50]Cabal: A framework for packaging Haskell software. * hxt 7.4. Uploaded by UweSchmidt. [51]hxt: A collection of tools for processing XML with Haskell.. * X11 1.4.1. Uploaded by Spencer Janssen. [52]X11: A binding to the X11 graphics library. 43. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cedict-0.1.1 44. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/TypeCompose-0.3 45. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-mmap-0.1.2 46. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-0.9.0.2 47. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-mmap-0.1.1 48. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mkcabal-0.3 49. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/terminfo-0.1 50. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Cabal-1.2.3.0 51. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hxt-7.4 52. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-1.4.1 * dataenc 0.10.1. Uploaded by Magnus Therning. [53]dataenc: Data encoding library currently providing Uuencode, Base64, Base64Url, Base32, Base32Hex, and Base16.. * bytestringreadp 0.1. Uploaded by Gracjan Polak. [54]bytestringreadp: A ReadP style parser library for ByteString. * encoding 0.3. Uploaded by HenningGuenther. [55]encoding: A library for various character encodings. * hslua 0.2. Uploaded by Gracjan Polak. [56]hslua: A Lua language interpreter embedding in Haskell. * xmonad-contrib 0.5. Uploaded by Spencer Janssen. [57]xmonad-contrib: Third party extensions for xmonad. * xmonad 0.5. Uploaded by SpencerJanssen. [58]xmonad: A tiling window manager. * pandoc 0.45. Uploaded by John MacFarlane. [59]pandoc: Conversion between markup formats. * markov-chain 0.0.1. Uploaded by Henning Thielemann. [60]markov-chain: Markov Chains for generating random sequences with a user definable behaviour.. * parsedate 3000.0.0. Uploaded by Bjorn Bringert. [61]parsedate: Data and time parsing for CalendarTime. * hackage2hwn 0.1. Uploaded by Don Stewart. [62]hackage2hwn: Convert hackage = Hackage RSS feeds to Haskell Weekly News format. 53. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dataenc-0.10.1 54. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestringreadp-0.1 55. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/encoding-0.3 56. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hslua-0.2 57. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad-contrib-0.5 58. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad-0.5 59. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pandoc-0.45 60. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/markov-chain-0.0.1 61. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/parsedate-3000.0.0 62. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hackage2hwn-0.1 * hask-home 2007.12.6. Uploaded by BjornBringert. [63]hask-home: Generate homepages for cabal packages. * hmarkup 3000.0.1. Uploaded by BjornBringert. [64]hmarkup: Simple wikitext-like markup format implementation.. * hspread 0.2. Uploaded by AndreaVezzosi. [65]hspread: A client library for the spread toolkit. * pcap 0.4.2. Uploaded by BryanOSullivan. [66]pcap: A system-independent interface for user-level packet capture. * hogg 0.3.0. Uploaded by ConradParker. [67]hogg: Library and tools to manipulate the Ogg container format. * Finance-Quote-Yahoo 0.4.1. Uploaded by BradClawsie. [68]Finance-Quote-Yahoo: Obtain quote data from finance.yahoo.com. * Monadius 0.9.20071204. Uploaded by GwernBranwen. [69]Monadius: 2-D arcade scroller. * Shu-thing 1.0.20071203. Uploaded by GwernBranwen. [70]Shu-thing: A vector shooter game. * hmatrix 0.1.1.0. Uploaded by AlbertoRuiz. [71]hmatrix: Linear algebra and numerical computations. * HTTP 3001.0.3. Uploaded by BjornBringert. [72]HTTP: Added by BjornBringert, Fri Nov 30 14:50:55 PST 2007.. 63. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hask-home-2007.12.6 64. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmarkup-3000.0.1 65. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hspread-0.2 66. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcap-0.4.2 67. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hogg-0.3.0 68. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Finance-Quote-Yahoo-0.4.1 69. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Monadius-0.9.20071204 70. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shu-thing-1.0.20071203 71. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmatrix-0.1.1.0 72. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTP-3001.0.3 * rss 3000.0.1. Uploaded by BjornBringert. [73]rss: A library for generating RSS 2.0 feeds.. * haxr 3000.0.1. Uploaded by BjornBringert. [74]haxr: XML-RPC client and server library.. * fitsio 0.1. Uploaded by EricSessoms. [75]fitsio: A library for reading and writing data files in the FITS data format.. * YamlReference 0.6. Uploaded by Oren Ben Kiki. [76]YamlReference, YAML reference implementation * LambdaShell 0.9.1. Uploaded by Robert Dockins. [77]LambdaShell, simple shell for evaluating lambda expressions * Shellac 0.9.1. Uploaded by Robert Dockins. [78]Shellac, a framework for creating shell envinronments * EdisonCore 1.2.1.1. Uploaded by Robert Dockins. [79]EdisonCore, a library of efficent, purely-functional data structures (Core Implementations) * hmatrix 0.1.0.0. Uploaded by Alberto Ruiz. [80]hmatrix, linear algebra and numerical computations * strict-concurrency 0.1. Uploaded by Don Stewart. [81]strict-concurrency, strict concurrency abstractions * X11 1.4.0. Uploaded by Don Stewart. [82]X11, binding to the X11 graphics library 73. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rss-3000.0.1 74. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haxr-3000.0.1 75. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fitsio-0.1 76. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/YamlReference-0.6 77. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/LambdaShell-0.9.1 78. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shellac-0.9.1 79. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/EdisonCore-1.2.1.1 80. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmatrix-0.1.0.0 81. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/strict-concurrency-0.1 82. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-1.4.0 * safecopy 0.3. Uploaded by David Himmelstrup. [83]safecopy, binary serialization with version control * HaXml 1.13.3. Uploaded by Malcolm Wallace. [84]HaXml, utilities for manipulating XML documents * c2hs 0.15.1. Uploaded by Duncan Coutts. [85]c2hs, C->Haskell Interface Generator * calc 0.1. Uploaded by Austin Seipp. [86]calc, small compiler for arithmetic expressions. * miniplex 0.2.1. Uploaded by Lukas Mai. [87]miniplex, simple 1-to-N interprocess communication * sat 1.1.1. Uploaded by Andrii Zvorygin. [88]sat, CNF SATisfier * dimensional 0.7.1. Uploaded by Bjorn Buckwalter. [89]dimensional, statically checked physical dimensions * hxt 7.4. Uploaded by Uwe Schmidt. [90]hxt, collection of tools for processing XML with Haskell. * dlist 0.3.2. Uploaded by Don Stewart. [91]dlist, difference lists. A list type supporting fast append. * mkcabal 0.2. Uploaded by Don Stewart. [92]mkcabal, generate cabal files for a Haskell project 83. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/safecopy-0.3 84. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HaXml-1.13.3 85. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/c2hs-0.15.1 86. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/calc-0.1 87. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/miniplex-0.2.1 88. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/sat-1.1.1 89. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dimensional-0.7.1 90. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hxt-7.4 91. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dlist-0.3.2 92. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mkcabal-0.2 * Chart 0.5. Uploaded by Tim Docker. [93]Chart, a library for generating 2D Charts and Plots * MaybeT 0.1.1. Uploaded by Don Stewart. [94]MaybeT, MaybeT monad transformer * regex-pcre 0.93. Uploaded by Chris Kuklewicz. [95]regex-pcre, replaces Text.Regex * fixpoint 0.1. Uploaded by Roman Leshchinskiy. [96]fixpoint, data types as fixpoints * ChasingBottoms 1.2.2. Uploaded by Nils Anders Danielsson. [97]ChasingBottoms, support for testing partial and infinite values * GrowlNotify 0.3. Uploaded by Nicholas Burlett. [98]GrowlNotify, notification utility for Growl * pcap 0.4.1. Uploaded by Bryan OSullivan. [99]pcap, a system-independent interface for user-level packet capture * bencode 0.3. Uploaded by David Himmelstrup. [100]bencode, parser and printer for bencoded data. * stream-fusion 0.1.1. Uploaded by Don Stewart. [101]stream-fusion, provides the standard Haskell list library reimplemented to allow stream fusion. This should in general provide faster list operations, and faster code for list-heavy programs. * HTTP 3001.0.2. Uploaded by Bjorn Bringert. [102]HTTP, library for client-side HTTP 93. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Chart-0.5 94. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/MaybeT-0.1.1 95. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-pcre-0.93 96. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fixpoint-0.1 97. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ChasingBottoms-1.2.2 98. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GrowlNotify-0.3 99. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcap-0.4.1 100. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bencode-0.3 101. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/stream-fusion-0.1.1 102. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTP-3001.0.2 * X11-xft 0.2. Uploaded by Clemens Fruhwirth. [103]X11-xft, bindings to the Xft, X Free Type interface library, and some Xrender parts * GrowlNotify 0.1. Uploaded by Nicholas Burlett. [104]GrowlNotify, notification utility for Growl. * HsHaruPDF 0.0.0. Uploaded by Audrey Tang. [105]HsHaruPDF, Haskell binding to libharu * unicode-normalization 0.1. Uploaded by Reinier Lamers. [106]unicode-normalization, Unicode normalization using the ICU library * uniplate 1.0.1. Uploaded by Neil Mitchell. [107]uniplate, uniform type generic traversals * lax-0.0.0. Uploaded by Wolfgang Jeltsch. [108]lax, Lax arrows are variants of other arrows which are ?less strict? than the original arrows. They can be used, for example, to produce I/O fixpoints in situations where fixIO would fail. * fastcgi 3001.0.1. Uploaded by Bjorn Bringert. [109]fastcgi, a Haskell library for writing FastCGI programs 103. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-xft-0.2 104. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GrowlNotify-0.1 105. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsHaruPDF-0.0.0 106. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/unicode-normalization-0.1 107. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uniplate-1.0.1 108. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/lax-0.0.0 109. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fastcgi-3001.0.1 Conference roundup New user groups * [110]Portland Functional Programmers Group * [111]FPSIG @ Southampton * [112]SingHaskell 110. http://groups.google.com/group/pdxfunc 111. http://article.gmane.org/gmane.comp.lang.haskell.cafe/32753 112. http://article.gmane.org/gmane.comp.lang.haskell.cafe/32268 Jobs Prototyping. Peter Verswyvelen [113]announced a job using Haskell for prototyping computer animation and games 113. http://article.gmane.org/gmane.comp.lang.haskell.cafe/33377 Blog noise [114]Haskell news from the [115]blogosphere. 114. http://planet.haskell.org/ 115. http://haskell.org/haskellwiki/Blog_articles * [116]Small shots of lambda calculus * [117]Pattern Matching in Ruby * [118]Haskell 'words' and Perl 'split' * [119]Word numbers, Part 4: Sort the words, sum the numbers * [120]Improve Your C#! Borrow from F#... * [121]Sun battling Microsoft (over F#?) * [122]zip in F# and Haskell * [123]Random numbers in Haskell * [124]A survey of Haskell unicode support * [125]Using Haskell for scripting tasks 116. http://fmota.tk/2007/11/small-shots-of-lambda-calculus-part-iii.html 117. http://blog.pretheory.com/arch/2007/11/pattern_matching_in_ruby_1.php 118. http://osfameron.vox.com/library/post/haskell-words-and-perl-split.html 119. http://conway.rutgers.edu/~ccshan/wiki/blog/posts/WordNumbers4/ 120. http://diditwith.net/2007/11/14/ImproveYourCBorrowFromF.aspx 121. http://vanirsystems.com/danielsblog/?p=227 122. http://jyliao.blogspot.com/2007/11/learning-wpf-with-f-dock-and-grid.html 123. http://monadicheadaches.blogspot.com/2007/11/random-numbers-where-it-all-started.html 124. http://blog.kfish.org/2007/10/survey-haskell-unicode-support.html 125. http://pinderkent.blogsavy.com/archives/142 * [126]Princeton lost the DARPA Grand Challenge because of a C# memory leak * [127]Laziness in C#/LINQ * [128]Getting functional programming: currying * [129]The magic foldr * [130]Nested Parallel List Comprehensions * [131]FFI in Haskell * [132]Broadening ones horizons * [133]Monad Wars - 1: the Prompt * [134]Monad Wars - 2: the command line * [135]Holy Shmoly, GHC Haskell 6.8 smokes Python and Ruby away! 126. http://www.codeproject.com/showcase/IfOnlyWedUsedANTSProfiler.asp 127. http://gavinbierman.blogspot.com/2007/11/laziness-in-clinq.html 128. http://overwatering.blogspot.com/2007/11/currying.html 129. http://caos.di.uminho.pt/~ulisses/blog/2007/11/20/foldr-the-magic-function/ 130. http://tomschrijvers.blogspot.com/2007/11/nested-parallel-list-comprehensions.html 131. http://notes-on-haskell.blogspot.com/2007/02/ffi-in-haskell.html 132. http://ms-os.com/showthread.php?t=116050 133. http://osfameron.vox.com/library/post/monad-wars---1-the-prompt.html 134. http://osfameron.vox.com/library/post/monad-wars---2-the-command-line.html 135. http://www.cse.unsw.edu.au/~dons/blog/2007/11/29#smoking * [136]Use those extra cores and beat C today! (Parallel Haskell redux) * [137]Parallelizing Haskell * [138]Python, Haskell, Ruby Smackdown * [139]Legitimate uses of micro-benchmarks: parameter passing and function call costs * [140]Holy Shmoly, GHC does some magic all by itself! * [141]PARE - PARallel Execution in Erlang - a response to Haskell * [142]Haskell design patterns are (probably) needed * [143]Deriving a Virtual Machine * [144]Games, cores, and functional languages * [145]Structure of a functional Java, er, method 136. http://www.cse.unsw.edu.au/~dons/blog/2007/11/29#smoking-4core 137. http://cmssphere.blogspot.com/2007/11/parallelizing-haskell.html 138. http://feedingthesnake.wordpress.com/2007/11/30/python-haskell-ruby-smackdown/ 139. http://eigenclass.org/hiki/legitimate-microbenchmarks 140. http://geekrant.wordpress.com/2007/11/29/holy-shmoly-ghc-does-some-magic-all-by-itself/ 141. http://chlorophil.blogspot.com/2007/11/pare-parallel-execution-in-erlang.html 142. http://jpmoresmau.blogspot.com/2007/11/haskell-design-patterns-are-probably.html 143. http://www.iis.sinica.edu.tw/~scm/?p=42 144. http://www.antipode.ca/2007/games-cores-and-functional-languages/ 145. http://jpmoresmau.blogspot.com/2007/11/structure-of-functional-java-er-method.html * [146]Current Fixation: Haskell * [147]Multicores, F# and SPJ: leading people to Haskell * [148]The IO Monad for People who Simply Don't Care * [149]Why I chose to learn Haskell * [150]Some Playing with Derivatives * [151]Solve Ball Clock Puzzle in Python and Haskell * [152]Back to functional languages... at least for a while? * [153]Overloading Semicolon, or, monads from 10,000 Feet * [154]Getting started with Haskell * [155]Arrows first encounter 146. http://onerousmachinations.blogspot.com/2007/11/current-fixation-haskell.html 147. http://nxtgenug.spaces.live.com/Blog/cns!59F714755D6E2A69!221.entry 148. http://sigfpe.blogspot.com/2007/11/io-monad-for-people-who-simply-dont.html 149. http://offthelip.org/?p=91 150. http://cdsmith.wordpress.com/2007/11/29/some-playing-with-derivatives/ 151. http://the-little-haskeller.blogspot.com/2007/11/solve-ball-clock-puzzle-in-python-and.html 152. http://afurtado1980.spaces.live.com/Blog/cns!63514833CE40C143!518.entry 153. http://osteele.com/archives/2007/12/overloading-semicolon 154. http://talkingcode.co.uk/2007/12/03/getting-started-with-haskell/ 155. http://monadicheadaches.blogspot.com/2007/12/arrows-first-encounter.html * [156]Arithmetic for lists * [157]Functional Programming on .NET - Part 1 * [158]N-Queens in Haskell * [159]N-Queens in the writer monad * [160]Unit testing in Haskell * [161]Calculating the reflect-rotate-translate normal form for an isometry of the plane in Haskell, and verifying it with QuickCheck * [162]Visualizing 2D convex hull using Gtk and OpenGL in Haskell * [163]Hugs for the Nintendo DS * [164]Comparative terseness of Perl and Haskell * [165]Note on point-free programming style 156. http://wadler.blogspot.com/2007/12/arithmetic-for-lists.html 157. http://zerogradient.wordpress.com/2007/12/05/functional-programming-on-net-part-1/ 158. http://therning.org/magnus/archives/330 159. http://cdsmith.wordpress.com/2007/12/09/some-basic-stuff-the-writer-monad/ 160. http://hitesh-jasani.blogspot.com/2007/12/unit-testing-with-hunit-in-haskell.html 161. http://www.kennknowles.com/blog/2007/12/03/calculating-the-reflect-rotate-translate-normal-form-for-an-isometry-of-the-plane-in-haskell-and-verifying-it-with-quickcheck/ 162. http://www.kennknowles.com/blog/2007/11/20/visualizing-2d-convex-hull-using-gtk-and-opengl-in-haskell/ 163. http://closuretohome.blogspot.com/2007/12/hugs-for-nintendo-ds.html 164. http://blog.plover.com/2007/11/30/#pow-sqrt 165. http://blog.plover.com/prog/haskell/pointfree.html * [166]Haskell Fibonacci Revisited * [167]PXSL Tools 1.0: Your ticket out of XML Hell * [168]Haskell is kind of cool * [169]Learning Haskell with ProjectEuler * [170]Infinite lazy Knuth-Bendix completion for monoids in Haskell * [171]Hugs for the Nintendo DS * [172]My Type of Language... * [173]Catching pods with hpodder * [174]Hamming's problem * [175]Sharper function operators 166. http://chasethedevil.blogspot.com/2007/12/haskell-fibonacci-revisited.html 167. http://blog.moertel.com/articles/2007/12/17/pxsl-tools-1-0-your-ticket-out-of-xml-hell 168. http://www.goesping.org/archives/2007/12/18/haskell-is-kind-of-cool/ 169. http://www.robdickerson.net/?p=12 170. http://www.kennknowles.com/blog/2007/12/20/infinite-lazy-knuth-bendix-completion-for-monoids-in-haskell/ 171. http://blog.closuretohome.com/2007/12/hugs-for-nintendo-ds.html 172. http://lambdalounge.blogspot.com/2007/12/my-type-of-language.html 173. http://lorenzod8n.wordpress.com/2007/12/22/catching-pods-with-hpodder/ 174. http://conway.rutgers.edu/~ccshan/wiki/blog/posts/Hamming/ 175. http://blog.closuretohome.com/2008/01/sharper-function-operators.html * [176]Xiangqiboard: play Xiangqi against a computer opponent * [177]Haskell is kind of cool * [178]FParsec - A Parser Combinator Library for F# * [179]RSA-Haskell * [180]LLVM bindings for Haskell * [181]perpubplat 0.9 - You're Looking at It: blog framework for Haskell * [182]The point of pointfree * [183]qtHaskell * [184]Web Objects and the underappreciated recursive do * [185]Equality operators in PHP and Haskell 176. http://xiangqiboard.blogspot.com/2007/12/gnuxiangqi-angekndigt.html 177. http://www.goesping.org/archives/2007/12/18/haskell-is-kind-of-cool/ 178. http://www.quanttec.com/fparsec/ 179. http://netsuperbrain.com/rsa-haskell.html 180. http://www.serpentine.com/blog/2008/01/03/llvm-bindings-for-haskell/ 181. http://mult.ifario.us/p/perpubplat-0-9-you-re-looking-at-it 182. http://www.vex.net/~trebla/weblog/pointfree.html 183. http://qthaskell.sourceforge.net/ 184. http://www.alpheccar.org/en/posts/show/89 185. http://www.syntaxpolice.org/index.php/?q=node%2F419 * [186]Pushing Haskell's type system to the limits: A reflective JSON serializer * [187]A Wake Up Call for the Logic Programming Community * [188]Design your functions for partial application * [189]Taxicab Numbers * [190]Composing Contracts * [191]HTTP content-type comparison at the type level * [192]Haskell-Join-Rules * [193]Exploring JPEG * [194]What's interesting to me about SquirrelMail attack * [195]Haskell and F#: Language Design 186. http://lingnerd.blogspot.com/2007/12/pushing-haskells-type-system-to-limits.html 187. http://www.cs.kuleuven.ac.be/~dtai/projects/ALP/newsletter/dec07/content/Articles/tom/content.html 188. http://www.serpentine.com/blog/2007/12/26/design-your-functions-for-partial-application/ 189. http://notes-on-haskell.blogspot.com/2007/12/taxicab-numbers.html 190. http://contracts.scheming.org/ 191. http://www.alpheccar.org/en/posts/show/88 192. http://taichi.ddns.comp.nus.edu.sg/taichiwiki/HaskellJoinRules 193. http://www.imperialviolet.org/binary/jpeg/ 194. http://www.syntaxpolice.org/index.php/?q=node%2F418 195. http://corsis.blogspot.com/2008/01/haskell-and-f-language-design.html * [196]An example of Haskell's beauty * [197]My resolve to learn Haskell has become stronger after having watched 'A Taste of Haskell' * [198]Emacs love w/ Haskell * [199]Finding my way * [200]Why not Scala? * [201]A Different Kind of Obscurity * [202]Languages that save you some typing 196. http://blog.whoop.as/?p=1668 197. http://rmathew.blogspot.com/2008/01/taste-of-haskell.html 198. http://blog.whoop.as/?p=1665 199. http://nointernalmonologue.blogspot.com/2008/01/finding-my-way.html 200. http://unenterprise.blogspot.com/2008/01/why-not-scala.html 201. http://ddvlad.wordpress.com/2007/12/14/a-different-kind-of-obscurity/ 202. http://daltonic.blogspot.com/2008/01/language-that-saves-you-some-typing.html Quotes of the Week * Conal: For me, the heart of functional programming is exactly this separation between model and presentation. The former is naturally functional and compositional, while the latter is often imperative/sequential and not-so-compositional. IO belongs with the latter. * ddarius: has programmed too much in Haskell. He now produces code that -compiles- and works the first time * disspy: If all you know is C, everything begins to look like a segmentation fault. * markedtrees: (On the city of Haskell) Ah yes, Haskell. Where all the types are strong, all the men carry arrows, and all the children are above average. * ola-bini: Haskell's type system is really nice, for example, but OCaml's really feels like half of it exists just to cover up holes in the other half, I'm half way into Erlang, but for several reasons the language feels very primitive. * so1i.warazd: I'm more and more comfortable spending time with Haskell these days. Haskell may not be the next thing, but whatever the next big thing is, it's probably going to have Haskelly fingerprints all over it?.. * sylvan: think that the perceived difficulty in using purely functional programming is probably a bit exaggerated these days, as all it means is 'we're explicit about where side effects occur' * falvo: I really wish that someone would come up with a type-safe replacement for the likes of Python. Oh, wait, it's called Haskell! Unfortunately, I'm forbidden from using Haskell at work. Sigh * Tyler Spaulding: eventually even 'simple' programs will nned multiple threads. Does that mean developers will suddenly flock to Haskell? Again, no. Language designers are well aware of the situation. Sun and Microsoft are constantly working on improving the Java and .NET frameworks. And by the time the average programmer needs it, both will have plenty of support for easy threading * ricky clarkson: Haskell is full of Aha and Hah moments for me * five9a2: Concurrency aside, I find it common to write Haskell code that is as fast as C. It is true that for most things, the C can be tweaked to go a bit faster, but that tweaking needs to be done on a case-by-case basis. In Haskell, it is easier to compose optimized components. Better algorithms beat an optimized compiler any day and using the best algorithms everywhere in C code tends to be painful, error-prone, and usually disparaged as premature optimization. * Jeff Moser: It's been this fear of skills rot that has pushed me to look into Lisp, Haskell, F#, Erlang, and other languages to avoid The Blub Paradox. * NFJS 2008 predictions: If you've never programmed in Haskell, now's a good time to learn, because those concepts and syntax are fast making their way towards you... * The honey monster: With the advent of multi-core CPUs and the promise of many core processors in the near future it occurrs to me that my interest in functional programming languages could not of happened at a more opportune time. It is not that imperative programming languages are not as capable, merely that functional programming languages seem to be more natural fit About the Haskell Weekly News New editions are posted to [203]the Haskell mailing list as well as to [204]the Haskell Sequence and [205]Planet Haskell. [206]RSS is also available, and headlines appear on [207]haskell.org. Headlines are available as [208]PDF. To help create new editions of this newsletter, please see the [209]contributing information. Send stories to dons at galois.com. The darcs repository is available at darcs get [210]http://code.haskell.org/~dons/code/hwn/ 203. http://www.haskell.org/mailman/listinfo/haskell 205. http://planet.haskell.org/ 207. http://haskell.org/ 208. http://code.haskell.org/~dons/code/hwn/archives/20080105.pdf 209. http://haskell.org/haskellwiki/HWN 210. http://code.haskell.org/~dons/code/hwn/ From byorgey at gmail.com Mon Jan 7 10:17:32 2008 From: byorgey at gmail.com (Brent Yorgey) Date: Mon Jan 7 10:11:16 2008 Subject: [Haskell] Question concerning the "Data Parallel Haskell: a status report" paper In-Reply-To: <477FCDE7.3060909@tu-bs.de> References: <477FCDE7.3060909@tu-bs.de> Message-ID: <22fcbd520801070717g10f1b642q730376b55b4c8a7d@mail.gmail.com> On Jan 5, 2008 1:35 PM, Stephan Friedrichs wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hi Haskellers, > > the paper "Data Parallel Haskell: a status report" (Chakravarty, > Leshchinskiy, Peyton Jones, Keller and Marlow) is an important source of > my seminar handout about skeletons and parallelisation. It contains code > samples concerning the ArrElem type family: > > class ArrElem e where > data [:e:] > (!:) :: [:e:] -> Int -> e > > and various instance declarations, e.g.: > > class ArrElem Int where -- sic! > -- ... > > My question is: Is "class ArrElem Int" a typo and should be "instance > ArrElem Int" or did I get something wrong? > > Thanks in advance and a happy new year > - Stephan > Since no one else seems to have responded yet -- that's pretty clearly a typo, should be 'instance' instead of 'class' just as you suppose, and similarly in the two instance declarations that follow after that. Unless there's something weird going on with associated type syntax that I'm not aware of. (?) -Brent -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080107/cf2553db/attachment.htm From Clemens.Kupke at cwi.nl Mon Jan 7 12:20:25 2008 From: Clemens.Kupke at cwi.nl (Clemens Kupke) Date: Mon Jan 7 12:44:04 2008 Subject: [Haskell] CMCS 2008: Final call for papers Message-ID: <47825F59.6010508@cwi.nl> CMCS 2008 Final Announcement Please excuse multiple copies 9th International Workshop on Coalgebraic Methods in Computer Science http://www.cwi.nl/projects/cmcs08/ Budapest, Hungary April 4-6, 2008 Key Note Speaker: Dexter Kozen (to be confirmed) Invited Speakers: Stefan Milius and Dirk Pattinson The workshop will be held in conjunction with the 11th European Joint Conferences on Theory and Practice of Software ETAPS 2008 March 29 - April 6, 2008 Programme Committee Jiri Adamek (chair, Braunschweig), Corina Cirstea (Southampton), Neil Ghani (Nottingham), H. Peter Gumm (Marburg), Bart Jacobs (Nijmegen), Clemens Kupke (co-chair, Amsterdam), Alexander Kurz (Leicester), Ugo Montanari (Pisa), Larry Moss (Indiana), John Power (Bath), Jan Rutten (Amsterdam), Lutz Schr?der (Bremen), Tarmo Uustalu (Tallinn), Yde Venema (Amsterdam), Hiroshi Watanabe (Osaka). Submissions Two sorts of submissions will be possible this year: Papers to be evaluated by the programme committee for inclusion in the ENTCS proceedings: These papers must be written using ENTCS style files and be of length no greater than 20 pages. They must contain original contributions, be clearly written, and include appropriate reference to and comparison with related work. If a submission describes software, software tools, or their use, it should include all source code that is needed to reproduce the results but is not publicly available. If the additional material exceeds 5 MB, URL's of publicly available sites should be provided in the paper. Short contributions: These will not be published but will be compiled into a technical report of the Technical University of Braunschweig. They should be no more than two pages and may describe work in progress, summarise work submitted to a conference or workshop elsewhere, or in some other way appeal to the CMCS audience. Both sorts of submission should be submitted in postscript or pdf form as attachments to an email to cmcs08@cwi.nl. The email should include the title, corresponding author, and, for the first kind of submission, a text-only one-page abstract. After the workshop, we expect to produce a journal proceedings of extended versions of selected papers to appear in Theoretical Computer Science. Important Dates Deadline for submission of regular papers: January 13, 2008. Notification of acceptance of regular papers: February 11, 2008. Final version for the preliminary proceedings: February 18, 2008. Deadline for submission of short contributions: March 10, 2008. Notification of acceptance of short contributions: March 17, 2008. For more information, please write to cmcs08@cwi.nl From rl at cse.unsw.edu.au Tue Jan 8 00:31:00 2008 From: rl at cse.unsw.edu.au (Roman Leshchinskiy) Date: Tue Jan 8 00:24:47 2008 Subject: [Haskell] Question concerning the "Data Parallel Haskell: a status report" paper In-Reply-To: <477FCDE7.3060909@tu-bs.de> References: <477FCDE7.3060909@tu-bs.de> Message-ID: <47830A94.3030302@cse.unsw.edu.au> Stephan Friedrichs wrote: > > class ArrElem Int where -- sic! > -- ... > > My question is: Is "class ArrElem Int" a typo and should be "instance > ArrElem Int" or did I get something wrong? Yes, that's a typo. Thanks for pointing it out. Roman From david.waern at gmail.com Tue Jan 8 07:28:50 2008 From: david.waern at gmail.com (David Waern) Date: Tue Jan 8 07:22:30 2008 Subject: [Haskell] ANNOUNCE: Haddock version 2.0.0.0 Message-ID: Dear Haskell community, I'm proud to announce the release of Haddock 2.0.0.0! http://www.haskell.org/haddock http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haddock-2.0.0.0 Changes in version 2.0.0.0: * The GHC API is used as the front-end * Haddock now understands all syntax understood by GHC 6.8.2 * Haddock can generate documentation for some of the language extensions in GHC 6.8.2 * Format of module attributes has changed. The only way of specifiying module attributes is via a new OPTIONS_HADDOCK pragma. Example: {-# OPTIONS_HADDOCK hide, prune #-} * Haddock understands literate source files * Add a small library to read Haddock's interface files * Add a flag -B for passing the path to the GHC lib dir * Add a flag --optghc for passing options to GHC * Add a flag --ghc-version for printing the GHC version * Remove --use-package, --allow-missing-html, --ghc-pkg, in favour of only supporting --read-interface * Remove --package flag, the GHC flag -package-name can be used instead * Remove --no-implicit-prelude flag, the GHC flag -XNoImplicitPrelude can be used instead * Hoogle support temporarily removed It should be noted that this version of Haddock is not compatible with interface files from previous versions. Also, currently, when Haddock comes across a GHC language extension that it doesn't know how to render as HTML, it will bail out. If this happens to you, bug me about it, or help out by sending a patch. On the development side, Haddock has been slightly refactored for easier code navigation, and has the beginnings of a test suite. Haddock also ships with (as noted in the list of changes) a small, experimental library that can be used to read its interface files. Tools and IDE-type applications can use this library to e.g. look up the documentation for identifiers. The code repository is at http://code.haskell.org/haddock. David From tase08 at seg.nju.edu.cn Tue Jan 8 09:47:35 2008 From: tase08 at seg.nju.edu.cn (tase08) Date: Tue Jan 8 09:41:35 2008 Subject: [Haskell] Call for papers TASE2008 Message-ID: (Apologies if you have already received this message.) TASE 2008 2nd IEEE Symposium on Theoretical Aspects of Software Engineering Nanjing, China June 17-19, 2008 http://cs.nju.edu.cn/tase08/index.html Large scale software systems and Internet are of growing concern to academia and industry. This poses new challenges to the various aspects of software engineering, for instance, the reliability of software development, web-oriented software architecture and aspect & object-orientation techniques. As a result, new concepts and methodologies are required to enhance the development of software engineering from theoretical aspects. TASE 2008 is a forum for researchers from academia, industry and government to present ideas, results, and ongoing research on theoretical advances in software engineering. TASE 2008 is the second in a series of conference, sponsored by IEEE CS and IFIP. The first TASE conference was held in Shanghai, China, in June 2007. Topics of Interest: Authors are invited to submit high quality technical papers describing original and unpublished work in all theoretical aspects of software engineering. Topics of interest include, but are not limited to: * Requirements Engineering * Specification and Validation * Software Testing * Component-based Development * Model Checking for Software * Software Processes and Workflows * Software Frameworks and Middleware * Software Architectures and Design * Software safety and reliability * Reverse Engineering and Software Maintenance * Aspect and Objected ¨Corientation Techniques * Embedded and Real-time Software * Service-oriented Computing and Web Services * Model-driven Development * Coordination and Feature Interaction * Parallel and Distributed Computing * Logics of Programs * Program Analysis * Semantics and Design of Programming Languages * Type Theory Submission Guidelines: Authors should submit and register their paper through our web-interface at: http://www.easychair.org/conferences/?conf=TASE2008 by January 28, 2008. Submissions must not have been published or be concurrently considered for publication elsewhere. All submissions will be reviewed by at least three members of the program committee. They will be judged on the basis of originality, contribution to the field, technical and presentation quality, and relevance to the conference. The proceedings of the conference will be published by the IEEE Computer Society Press. Papers must be written in English and not exceed 8 pages in IEEE format. Instructions for authors are available at http://computer.org/cspress/instruct.htm. Latex document classes can be downloaded from the website at ftp://pubftp.computer.org/Press/Outgoing/proceedings/. Important Dates: * January 21, 2008: Title and abstract submission deadline * January 28, 2008: Paper submission deadline * March 10, 2008: Acceptance/rejection notification * March 23, 2008: Camera-ready version due * June 17-19, 2008: TASE 2008 Organization: General Co-Chairs: Jifeng He, East China Normal University, China Jian Lu, Nanjing University, China Program Co-chairs: Jim Davies, Oxford University, UK ĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦ Xuandong Li, Nanjing University, China Local Organization Chair: Linzhang Wang, Nanjing University, China Program Committee: Bernhard Aichernig (Graz University of Technology, Austria) Keijiro Araki (Kyzushu University, Japan) Farhad Arbab (CWI and Leiden University, The Netherlands) Jonathan Bowen (King's College London, UK) Michael Butler (University of Southampton, UK) Ana Cavalcanti (University of York, UK) Jim Davies (Oxford University, UK) Geoff Dromey (Griffith University, Australia) Jin Song Dong (National University of Singapore, Singapore) Zhenhua Duan (XiĦŻdian University, China) Colin Fidge (Queensland University of Technology, Australia) Dieter Gollmann (Hamburg University of Technology, Germany) Kung-Kiu Lau (Manchester University, UK) Jing Liu (East China Normal University, China) Shaoying Liu (Hosei University, Japan) Zhiming Liu (UNU/IIST, Macau, China) Annabelle Mclver (Macquarie University, Australia) Hong Mei (Peking University, China) Huaikou Miao (Shanghai University, China) Masoud Mohammadian(University of Canberra, Australia) Shankar Natarajan (SRI International, USA) Nimal Nissanke (London South Bank University, UK) Geguang Pu(East China Normal University, China) Shengchao Qin (Durham University, UK) Zongyan Qiu (Peking University, China) Zhong Shao (Yale University, USA) Joseph Sifakis (Verimag, France) Zhengdong Su (University of California at Davis, USA) Margus Veanes (Microsoft, USA) Sergiy Vilkomir (University of Limerick, Ireland) Farn Wang (National Taiwan University, Taiwan) Ji Wang (Changsha Institute of Technology, China) Linzhang Wang(Nanjing University, China) Heike Wehrheim (University of Paderborn, Germany) Jim Woodcock (University of York, UK) Dianxiang Xu(North Dakota State University, USA) Wang Yi (Uppsala University, Sweden) Gianluigi Zavattaro (University of Bologna, Italy) Jian Zhang (Institute of Software, China) Jianhua Zhao (Nanjing University, China) Huibiao Zhu (East China Normal University, China) Steering Program Committee Michael Hinchey(Chair), USA Keijiro Araki, Japan Jifeng He, China Zhiming Liu, Macau Mike Reed, Macau Huibiao Zhu, China Keynote Speakers Edmund M. Clarke (Carnegie Mellon University) Joost-Pieter Katoen (RWTH Aachen University) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080108/d108f609/attachment-0001.htm From bringert at cs.chalmers.se Tue Jan 8 14:35:07 2008 From: bringert at cs.chalmers.se (Bjorn Bringert) Date: Tue Jan 8 14:28:53 2008 Subject: [Haskell] What dates are best for a hackathon in Gothenburg? Message-ID: We are planning to hold the 4th Haskell Hackathon in Gothenburg in April. If you would be at all interested in coming, please indicate which of the three candidate dates Apr 4-6, Apr 11-13, or Apr 18-20 suit you by editing: http://www.haskell.org/haskellwiki/Hac_2008/Dates If you haven't been to a Haskell Hackathon before, check out the web page from the 3rd hackathon which was held in Freiburg in October: http://www.haskell.org/haskellwiki/Hac_2007_II /Bj?rn From felipe.lessa at gmail.com Tue Jan 8 15:09:05 2008 From: felipe.lessa at gmail.com (Felipe Lessa) Date: Tue Jan 8 15:02:46 2008 Subject: [Haskell] ANNOUNCE: Haddock version 2.0.0.0 In-Reply-To: References: Message-ID: On Jan 8, 2008 10:28 AM, David Waern wrote: > * Haddock now understands all syntax understood by GHC 6.8.2 Does Haddock still define __HADDOCK__? There's a lot of code that uses this flag just to hide something Haddock didn't know. -- Felipe. From andres at cs.uu.nl Tue Jan 8 17:49:18 2008 From: andres at cs.uu.nl (Andres Loeh) Date: Tue Jan 8 17:42:57 2008 Subject: [Haskell] 2nd ANNOUNCE: HCAR 12/2007 Message-ID: <20080108224918.GF32536@cs.uu.nl> Hi everyone. [For everyone who missed the first announcement because they were already in the holidays ...] The December 2007 edition of the Haskell Communities and Activities Report is out and available for download from http://haskell.org/communities Cheers, Andres -- Andres Loeh, Universiteit Utrecht mailto:andres@cs.uu.nl mailto:mail@andres-loeh.de http://www.andres-loeh.de From simonpj at microsoft.com Wed Jan 9 04:40:14 2008 From: simonpj at microsoft.com (Simon Peyton-Jones) Date: Wed Jan 9 04:33:53 2008 Subject: [Haskell] 2nd ANNOUNCE: HCAR 12/2007 In-Reply-To: <20080108224918.GF32536@cs.uu.nl> References: <20080108224918.GF32536@cs.uu.nl> Message-ID: <638ABD0A29C8884A91BC5FB5C349B1C30BA9B71263@EA-EXMSG-C334.europe.corp.microsoft.com> Thank you Andres! As always it's amazing how much is going on in Haskell land, and running the Haskell Communities and Activities Report is a real service to our community. You are a star. Everyone else: I see that Andres would like to hand on the HCAR editor-ship to someone else. Get in touch with him -- don't be shy! This would be a great way for you to contribute. Simon | -----Original Message----- | From: Andres Loeh | Sent: 08 January 2008 22:49 | To: haskell@haskell.org | Subject: [Haskell] 2nd ANNOUNCE: HCAR 12/2007 | | Hi everyone. | | [For everyone who missed the first announcement because they were | already in the holidays ...] | | The December 2007 edition of the Haskell Communities and Activities | Report is out and available for download from | | http://haskell.org/communities | | Cheers, | Andres From venanzio at cs.ru.nl Wed Jan 9 06:19:07 2008 From: venanzio at cs.ru.nl (Venanzio Capretta) Date: Wed Jan 9 06:12:46 2008 Subject: [Haskell] MSFP call for papers Message-ID: <4784ADAB.8010607@cs.ru.nl> CALL FOR PAPERS Second Workshop on MATHEMATICALLY STRUCTURED FUNCTIONAL PROGRAMMING 6 July 2008, Reykjavik - Iceland A satellite workshop of ICALP 2008 PRESENTATION The workshop on Mathematically Structured Functional Programming is devoted to the derivation of functionality from structure. It is a celebration of the direct impact of Theoretical Computer Science on programs as we write them today. Modern programming languages, and in particular functional languages, support the direct expression of mathematical structures, equipping programmers with tools of remarkable power and abstraction. Monadic programming in Haskell is the paradigmatic example, but there are many more mathematical insights manifest in programs and in programming language design: Freyd-categories in reactive programming, symbolic differentiation yielding context structures, and comonadic presentations of dataflow, to name but three. This workshop is a forum for researchers who seek to reflect mathematical phenomena in data and control. The first MSFP workshop was held in Kuressaare, Estonia, in July 2006. An associated special issue of the Journal of Functional Programming is in preparation. SUBMISSIONS Electronic Notes in Theoretical Computer Science have provisionally agreed to publish the proceedings of MSFP 2008. ENTCS require submissions in LaTeX, formatted according to their guidelines (http://www.entcs.org/prelim.html). Papers must report previously unpublished work and not be submitted concurrently to another conference with refereed proceedings. Programme Committee members, barring the co-chairs, may (and indeed are encouraged) to contribute. Accepted papers must be presented at the workshop by one of the authors. There is no specific page limit, but authors should strive for brevity. We are using the EasyChair software to manage submissions. To submit a paper, please log in at: http://www.easychair.org/conferences/?conf=msfp2008. TIMELINE: Submission of abstracts: 4 April Submission of papers: 11 April Notification: 16 May Final versions due: 13 June Workshop: 6 July For more information about the workshop, go to: http://msfp.org.uk/ Programme Committee * Yves Bertot, INRIA, Sophia-Antipolis, France * Venanzio Capretta (co-chair), Radboud University, Nijmegen, The Netherlands * Jacques Carette, McMaster University, Hamilton, Ontario, Canada * Thierry Coquand, Chalmers University, G?teborg, Sweden * Andrzej Filinski, DIKU, University of Copenhagen, Denmark * Jean-Christophe Filli?tre, LRI, Universit? Paris Sud, France * Jeremy Gibbons, Oxford University, England * Andy Gill, Galois Inc., Portland, Oregon, USA * Peter Hancock, University of Nottingham, England * Oleg Kiselyov, FNMOC, Monterey, California, USA * Paul Blain Levy, University of Birmingham, England * Andres L?h, Utrecht University, The Netherlands * Marino Miculan, Universit? di Udine, Italy * Conor McBride (co-chair), Alta Systems, Northern Ireland * James McKinna, Radboud University, Nijmegen, The Netherlands * Alex Simpson, University of Edinburgh, Scotland * Tarmo Uustalu, Institute of Cybernetics, Tallinn, Estonia From simonmarhaskell at gmail.com Wed Jan 9 07:03:24 2008 From: simonmarhaskell at gmail.com (Simon Marlow) Date: Wed Jan 9 06:57:09 2008 Subject: [Haskell] ANNOUNCE: Haddock version 2.0.0.0 In-Reply-To: References: Message-ID: <4784B80C.1070004@gmail.com> Felipe Lessa wrote: > On Jan 8, 2008 10:28 AM, David Waern wrote: >> * Haddock now understands all syntax understood by GHC 6.8.2 > > Does Haddock still define __HADDOCK__? There's a lot of code that uses > this flag just to hide something Haddock didn't know. Haddock itself never defined __HADDOCK__, because it didn't do the CPP preprocessing itself. Cabal adds __HADDOCK__ itself when preprocessing files for passing to Haddock. When used with Haddock version 2, Cabal no longer defines __HADDOCK__ when preprocessing. Haddock 2 can do the preprocessing itself, because it is processing the Haskell files using the GHC API. In this case, if you want __HADDOCK__ defined, you have to add it explicitly with --optghc -D__HADDOCK__. The easiest way to use Haddock 2 is via Cabal, which will automatically add the appropriate options for your package, including the right -B option which Haddock now needs in order that the GHC API can find its package database. Cheers, Simon From felipe.lessa at gmail.com Wed Jan 9 10:54:00 2008 From: felipe.lessa at gmail.com (Felipe Lessa) Date: Wed Jan 9 10:47:40 2008 Subject: [Haskell] ANNOUNCE: Haddock version 2.0.0.0 In-Reply-To: <4784B80C.1070004@gmail.com> References: <4784B80C.1070004@gmail.com> Message-ID: Now I see. Thanks David and Simon for the clarifications! =) -- Felipe. From jpeliz at icmc.usp.br Wed Jan 9 11:23:46 2008 From: jpeliz at icmc.usp.br (Jorge Marques Pelizzoni) Date: Wed Jan 9 11:17:33 2008 Subject: [Haskell] detecting existing instances Message-ID: <45848.200.158.222.185.1199895826.squirrel@mail2.icmc.usp.br> Hi, all! I guess this belongs to haskell-cafe or glasgow-haskell-users, but I've already been there and got no replies. Thanks in advance for anyone taking the time to read on. Given two type classes A t and B t, I'd like the typechecker to derive different A t instances depending exactly on whether t is an instance of B. In other words, is it possible to define a class (actually a type-level function) IsB t f such that: IsB t HTrue <=> instance (B t) exists IsB t HFalse <=> otherwise? If not, is this wish intrisically pointless? After experimenting a bit with multiparameter classes, overlapping instances and suchlike, it looks like Haskell is being purposedly designed not to support this. Yes, I believe that would require the typechecker to take a whole new theorem-proving (undecidable?) stance :o) On the other hand, any interesting type-level programming seems to require undecidable+overlapping instances, so we are usually working on undecidable grounds... Sorry if this is an overdebated matter (is it?), but searching through the endless haskell archives is not trivial. Thanks in advance for any pointers or thoughts on the matter. Cheers, Jorge. From cetin at sertcom.de Wed Jan 9 12:16:15 2008 From: cetin at sertcom.de (Cetin Sert) Date: Wed Jan 9 12:10:13 2008 Subject: [Haskell] Problems with Unicode Symbols as Infix Function Names in Propositional Calculus Haskell DSL Message-ID: I want to design a DSL in Haskell for propositional calculus. But instead of using natural language names for functions like or, and, implies etc. I want to use Unicode symbols as infix functions ?, ?, ?, ?, ? But I keep getting error messages from the GHC parser. Is there a way to make GHC parse my source files correctly? If it is not possible yet, please consider this as a ?feature request?. Best Regards, Cetin Sert INF 521, 4-6-2 69120 Heidelberg Germany http://www.corsis.de -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080109/fe1deb55/attachment.htm From taralx at gmail.com Wed Jan 9 14:22:13 2008 From: taralx at gmail.com (Taral) Date: Wed Jan 9 14:15:52 2008 Subject: [Haskell] detecting existing instances In-Reply-To: <45848.200.158.222.185.1199895826.squirrel@mail2.icmc.usp.br> References: <45848.200.158.222.185.1199895826.squirrel@mail2.icmc.usp.br> Message-ID: On 1/9/08, Jorge Marques Pelizzoni wrote: > Given two type classes A t and B t, I'd like the typechecker to derive > different A t instances depending exactly on whether t is an instance of > B. I think this would require some kind of whole-program analysis. While Haskell provides assertions that t is an instance of B (B t), it does *not* provide assertions that t is not an instance of B. This is because an instance of B can be declared by other modules at a later point (e.g. by someone who imports your module). -- Taral "Please let me know if there's any further trouble I can give you." -- Unknown From rlaemmel at gmail.com Wed Jan 9 15:10:59 2008 From: rlaemmel at gmail.com (Ralf Laemmel) Date: Wed Jan 9 15:04:34 2008 Subject: [Haskell] detecting existing instances In-Reply-To: <45848.200.158.222.185.1199895826.squirrel@mail2.icmc.usp.br> References: <45848.200.158.222.185.1199895826.squirrel@mail2.icmc.usp.br> Message-ID: > Given two type classes A t and B t, I'd like the typechecker to derive > different A t instances depending exactly on whether t is an instance of > B. In other words, is it possible to define a class (actually a type-level > function) IsB t f such that: A GHC-like type system is in principle powerful enough to do just that. We exploit such capability in HList and OOHaskell. That is, the class whose instance availability should be observed must be first set up to carry an extra functionally dependent type parameter that specifically is meant to report back on instance availability. Then, we sacrifice the capability of a generic default instance for that class to indeed report back the lack of an instance through a type-level False on the new type-parameter position, whereas all normal instances report back type-level True. The usual problem of functional-dependency violation occurs, that is, the generic default instance is not entirely standard because if it says to return False for all types, then the other instances can't claim the opposite unless we had special fundep rules for generic default instances. However, we can recover from that by making the generic default instance vacuously generic in the type-level Boolean result position so that it becomes strictly more general than any specific instance, while we still assign type-level False to the position but by a type-level cast (instead of a verbatim False). Type-level type cast is the type-level programmer's swiss army knife. See the illustration below. HTH, Ralf {-# OPTIONS -fglasgow-exts #-} {-# OPTIONS -fallow-overlapping-instances #-} {-# OPTIONS -fallow-undecidable-instances #-} module M2 where import M1 instance TypeCast x x where typeCast = id main = do print $ b $ hasInstance ST1 print $ b $ hasInstance ST2 {-# OPTIONS -fglasgow-exts #-} {-# OPTIONS -fallow-overlapping-instances #-} {-# OPTIONS -fallow-undecidable-instances #-} module M1 where -- Type-level Booleans data T -- True data F -- False class B x where b :: x -> Bool instance B T where b = const True instance B F where b = const False -- Sample types data ST1 = ST1 data ST2 = ST2 -- A class that reports on instance availability class B b => R x b | x -> b instance R ST1 T instance (B b, TypeCast F b) => R x b -- generically missing instance -- Observe instance availability hasInstance :: R x b => x -> b hasInstance _ = undefined -- The key weapon class TypeCast x y | x -> y, y -> x where typeCast :: x -> y From jpeliz at icmc.usp.br Wed Jan 9 16:24:51 2008 From: jpeliz at icmc.usp.br (Jorge Marques Pelizzoni) Date: Wed Jan 9 16:18:29 2008 Subject: [Haskell] detecting existing instances In-Reply-To: References: <45848.200.158.222.185.1199895826.squirrel@mail2.icmc.usp.br> Message-ID: <61497.200.158.222.185.1199913891.squirrel@mail2.icmc.usp.br> Thank you very much, Ralf, for your very thorough reply. That's a very general way to deal with the issue. It never occurred to me that the "inspected" class itself might carry the availability info. Cheers, Jorge. Ralf Laemmel escreveu: >> Given two type classes A t and B t, I'd like the typechecker to derive >> different A t instances depending exactly on whether t is an instance of >> B. In other words, is it possible to define a class (actually a >> type-level >> function) IsB t f such that: > > A GHC-like type system is in principle powerful enough to do just > that. We exploit such capability in HList and OOHaskell. That is, the > class whose instance availability should be observed must be first set > up to carry an extra functionally dependent type parameter that > specifically is meant to report back on instance availability. Then, > we sacrifice the capability of a generic default instance for that > class to indeed report back the lack of an instance through a > type-level False on the new type-parameter position, whereas all > normal instances report back type-level True. The usual problem of > functional-dependency violation occurs, that is, the generic default > instance is not entirely standard because if it says to return False > for all types, then the other instances can't claim the opposite > unless we had special fundep rules for generic default instances. > However, we can recover from that by making the generic default > instance vacuously generic in the type-level Boolean result position > so that it becomes strictly more general than any specific instance, > while we still assign type-level False to the position but by a > type-level cast (instead of a verbatim False). > > Type-level type cast is the type-level programmer's swiss army knife. > > See the illustration below. > > HTH, > Ralf > > > {-# OPTIONS -fglasgow-exts #-} > {-# OPTIONS -fallow-overlapping-instances #-} > {-# OPTIONS -fallow-undecidable-instances #-} > > module M2 where > > import M1 > > instance TypeCast x x where typeCast = id > > main = > do > print $ b $ hasInstance ST1 > print $ b $ hasInstance ST2 > > > {-# OPTIONS -fglasgow-exts #-} > {-# OPTIONS -fallow-overlapping-instances #-} > {-# OPTIONS -fallow-undecidable-instances #-} > > module M1 where > > -- Type-level Booleans > data T -- True > data F -- False > class B x where b :: x -> Bool > instance B T where b = const True > instance B F where b = const False > > -- Sample types > data ST1 = ST1 > data ST2 = ST2 > > -- A class that reports on instance availability > class B b => R x b | x -> b > instance R ST1 T > instance (B b, TypeCast F b) => R x b -- generically missing instance > > -- Observe instance availability > hasInstance :: R x b => x -> b > hasInstance _ = undefined > > -- The key weapon > class TypeCast x y | x -> y, y -> x > where > typeCast :: x -> y > Jorge M. Pelizzoni ICMC - Universidade de S?o Paulo From dave at zednenem.com Thu Jan 10 02:38:00 2008 From: dave at zednenem.com (David Menendez) Date: Thu Jan 10 02:31:34 2008 Subject: [Haskell] detecting existing instances In-Reply-To: References: <45848.200.158.222.185.1199895826.squirrel@mail2.icmc.usp.br> Message-ID: <49a77b7a0801092338r141ed29dsbcaca81ac6b115eb@mail.gmail.com> On Jan 9, 2008 3:10 PM, Ralf Laemmel wrote: > > Type-level type cast is the type-level programmer's swiss army knife. > See the illustration below. > Does this get any easier with type families? Your (TypeCast a b) seems similar in intent to (a ~ b), but I'm not familiar enough with the latter to know whether it would work here. -- Dave Menendez -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080110/79c94fca/attachment.htm From gvidal at dsic.upv.es Thu Jan 10 04:25:13 2008 From: gvidal at dsic.upv.es (German Vidal) Date: Thu Jan 10 04:18:48 2008 Subject: [Haskell] SAS 2008 - Final CFP Message-ID: 15th International Static Analysis Symposium - SAS 2008 Valencia, Spain - July 16-18 >>Just 2 days to go to the abstract submission deadline<< Important dates: Submission of abstract: January 12, 2008 Submission of full paper: January 19, 2008 Notification: March 7, 2008 Camera-ready version: April 5, 2008 Conference: July 16-18, 2008 Please see: http://www.dsic.upv.es/~sas2008/ Maria Alpuente, German Vidal (PC co-chairs) Email: sas2008@dsic.upv.es From wss at Cs.Nott.AC.UK Fri Jan 11 06:49:09 2008 From: wss at Cs.Nott.AC.UK (Wouter Swierstra) Date: Fri Jan 11 06:43:40 2008 Subject: [Haskell] The Monad.Reader (10) - Second call for copy Message-ID: <39F5DBA4-4079-467B-A101-6B08ADE551E6@Cs.Nott.AC.UK> Call for Copy The Monad.Reader - Issue 10 It is not too late to consider writing something for the next issue of The Monad.Reader. The deadline for Issue 10 is ** January 25, 2007 ** It doesn't matter if you're an established academic or if you have only just started learning Haskell, if you have something to say, please write article for The Monad.Reader. The Monad.Reader is a electronic magazine about all things Haskell. It is less-formal than journal, but somehow more enduring than a wiki- page. There have been a wide variety of articles, including: exciting code fragments, intriguing puzzles, book reviews, tutorials, and even half-baked research ideas. * Submission Details * Get in touch with me if you intend to submit something -- the sooner you let me know what you're up to, the better. Please submit articles for the next issue to me by e-mail (wss at cs.nott.ac.uk). Articles should be written according to the guidelines available from http://www.haskell.org/haskellwiki/The_Monad.Reader Please submit your article in PDF, together with any source files you used. The sources will be released together with the magazine under a BSD license. If you would like to submit an article, but have trouble with LaTeX please let me know and we'll sort something out. All the best, Wouter This message has been checked for viruses but the contents of an attachment may still contain software viruses, which could damage your computer system: you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. From dominic.steinitz at blueyonder.co.uk Sat Jan 12 11:41:54 2008 From: dominic.steinitz at blueyonder.co.uk (Dominic Steinitz) Date: Sat Jan 12 11:54:58 2008 Subject: [Haskell] ANN: Haskell Cryptographic Library 4.1.0 Message-ID: <4788EDD2.4050605@blueyonder.co.uk> I'd like to announce the release of a new version of the library following various contributions (contributors are bcc'd). Additions include: BubbleBabble, TEA, HMAC and more large word support. It no longer includes Base64. This is provided by http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dataenc-0.10.1. Many thanks to all contributors. Dominic. PS I always mention this but the library really needs to be reviewed holistically and possibly restructured given the advent of bytestrings. If anyone would like to volunteer to do this or take over as library maintainer, please let me know. From dons at galois.com Sat Jan 12 23:19:23 2008 From: dons at galois.com (Don Stewart) Date: Sat Jan 12 23:13:03 2008 Subject: [Haskell] ANNOUNCE: pcre-light, a light, portable regular expression library for Haskell Message-ID: <20080113041923.GC14000@scytale.galois.com> pcre-light A light regular expression library, using Perl 5 compatible regexes I'm pleased to announce the first release of pcre-light. This library provides a simple, efficient interface to PCRE regular expressions, via either strict ByteStrings or classical Strings. Compilation and matching of regular expressions is done via two functions: compile :: ByteString -> [PCREOption] -> Either String Regex match :: Regex -> ByteString -> [PCREExecOption] -> Maybe [ByteString] A convenience interface for 'Char8' Strings is also provided. == Examples == Although the operations by default take ByteStrings, we can avoid unnecessary 'pack' calls using GHC's support for ByteStrings literals, enabled with -XOverloadedStrings: > :m + Text.Regex.PCRE.Light > :m + Data.ByteString.Char8 > :set -XOverloadedStrings > let Right r = compile "the quick brown fox" [] > match r "the quick brown fox" [] Just ["the quick brown fox"] > match r "the quick brown FOX" [] Nothing We can also enable various matching extensions, > let Right r = compile "the quick brown fox" [caseless] > match r "the quick brown FOX" [] Just ["the quick brown FOX"] Subpatterns, and fancy Perl regex extensions are happily supported: > let Right r = compile "^(abc){1,2}zz" [] > match r "abczz" [] Just ["abczz","abc"] Where the subpattern bound by ( ) was returned as the second element of the list. > let Right r = compile "\\w+(?=\t)" [] > match r "the quick brown\t fox" [] Just ["brown"] You can do lots of silly things with this: > let Right r = compile "^(a()+)+" [] > match r "aaaa" Just ["aaaa", "a", ""] The full set of compile and runtime PCRE extensions are supported. == Get it == * Stable tarballs, (on Hackage, of course): http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcre-light * Cabal install it! Using the new 'cabal-install', you can automatically download, build and install the package: $ cabal update $ cabal install pcre-light Downloading 'pcre-light-0.1'... Configuring pcre-light-0.1... Preprocessing library pcre-light-0.1... Building pcre-light-0.1... Registering pcre-light-0.1.. And off we go! For more information about cabal-install, see the hackage page for this excellent tool. * Darcs repository: http://code.haskell.org/~dons/code/pcre-light/ * Documentation: http://code.haskell.org/~dons/docs/pcre-light/ * Stability The library takes correctness seriously, and comes with a reasonable testsuite (with plans to greatly extend it), and code coverage data for those tests (using GHC's new -fhpc flag). You can see the test coverage results here: http://code.haskell.org/~dons/tests/pcre-light/hpc_index.html Yours in code, Don P.S. I'd like to encourage other authors to distribute code coverage results for their libraries! hpc is an invaluable tool to ensure high quality libraries for the Haskell community. P.P.S. Consider consider contributing your own light bindings to useful C libraries. The more we have, the more certain and sustainable Haskell development will be :) P.P.P.S. Thanks to #haskell for testing and advice. From tase08 at seg.nju.edu.cn Sun Jan 13 10:38:55 2008 From: tase08 at seg.nju.edu.cn (tase08) Date: Sun Jan 13 10:32:29 2008 Subject: [Haskell] Final Call for papers TASE2008 Message-ID: (Apologies if you have already received this message.) TASE 2008 2nd IEEE Symposium on Theoretical Aspects of Software Engineering Nanjing, China June 17-19, 2008 http://cs.nju.edu.cn/tase08/index.html Large scale software systems and Internet are of growing concern to academia and industry. This poses new challenges to the various aspects of software engineering, for instance, the reliability of software development, web-oriented software architecture and aspect & object-orientation techniques. As a result, new concepts and methodologies are required to enhance the development of software engineering from theoretical aspects. TASE 2008 is a forum for researchers from academia, industry and government to present ideas, results, and ongoing research on theoretical advances in software engineering. TASE 2008 is the second in a series of conference, sponsored by IEEE CS and IFIP. The first TASE conference was held in Shanghai, China, in June 2007. Topics of Interest: Authors are invited to submit high quality technical papers describing original and unpublished work in all theoretical aspects of software engineering. Topics of interest include, but are not limited to: * Requirements Engineering * Specification and Validation * Software Testing * Component-based Development * Model Checking for Software * Software Processes and Workflows * Software Frameworks and Middleware * Software Architectures and Design * Software safety and reliability * Reverse Engineering and Software Maintenance * Aspect and Objected ¨Corientation Techniques * Embedded and Real-time Software * Service-oriented Computing and Web Services * Model-driven Development * Coordination and Feature Interaction * Parallel and Distributed Computing * Logics of Programs * Program Analysis * Semantics and Design of Programming Languages * Type Theory Submission Guidelines: Authors should submit and register their paper through our web-interface at: http://www.easychair.org/conferences/?conf=TASE2008 by January 28, 2008. Submissions must not have been published or be concurrently considered for publication elsewhere. All submissions will be reviewed by at least three members of the program committee. They will be judged on the basis of originality, contribution to the field, technical and presentation quality, and relevance to the conference. The proceedings of the conference will be published by the IEEE Computer Society Press. Papers must be written in English and not exceed 8 pages in IEEE format. Instructions for authors are available at http://computer.org/cspress/instruct.htm. Latex document classes can be downloaded from the website at ftp://pubftp.computer.org/Press/Outgoing/proceedings/. Important Dates: * January 21, 2008: Title and abstract submission deadline * January 28, 2008: Paper submission deadline * March 10, 2008: Acceptance/rejection notification * March 23, 2008: Camera-ready version due * June 17-19, 2008: TASE 2008 Organization: General Co-Chairs: Jifeng He, East China Normal University, China Jian Lu, Nanjing University, China Program Co-chairs: Jim Davies, Oxford University, UK ĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦĦ Xuandong Li, Nanjing University, China Local Organization Chair: Linzhang Wang, Nanjing University, China Program Committee: Bernhard Aichernig (Graz University of Technology, Austria) Keijiro Araki (Kyzushu University, Japan) Farhad Arbab (CWI and Leiden University, The Netherlands) Jonathan Bowen (King's College London, UK) Michael Butler (University of Southampton, UK) Ana Cavalcanti (University of York, UK) Jim Davies (Oxford University, UK) Geoff Dromey (Griffith University, Australia) Jin Song Dong (National University of Singapore, Singapore) Zhenhua Duan (XiĦŻdian University, China) Colin Fidge (Queensland University of Technology, Australia) Dieter Gollmann (Hamburg University of Technology, Germany) Kung-Kiu Lau (Manchester University, UK) Jing Liu (East China Normal University, China) Shaoying Liu (Hosei University, Japan) Zhiming Liu (UNU/IIST, Macau, China) Annabelle Mclver (Macquarie University, Australia) Hong Mei (Peking University, China) Huaikou Miao (Shanghai University, China) Masoud Mohammadian(University of Canberra, Australia) Shankar Natarajan (SRI International, USA) Nimal Nissanke (London South Bank University, UK) Geguang Pu(East China Normal University, China) Shengchao Qin (Durham University, UK) Zongyan Qiu (Peking University, China) Zhong Shao (Yale University, USA) Joseph Sifakis (Verimag, France) Zhengdong Su (University of California at Davis, USA) Margus Veanes (Microsoft, USA) Sergiy Vilkomir (University of Limerick, Ireland) Farn Wang (National Taiwan University, Taiwan) Ji Wang (Changsha Institute of Technology, China) Linzhang Wang(Nanjing University, China) Heike Wehrheim (University of Paderborn, Germany) Jim Woodcock (University of York, UK) Dianxiang Xu(North Dakota State University, USA) Wang Yi (Uppsala University, Sweden) Gianluigi Zavattaro (University of Bologna, Italy) Jian Zhang (Institute of Software, China) Jianhua Zhao (Nanjing University, China) Huibiao Zhu (East China Normal University, China) Steering Program Committee Michael Hinchey(Chair), USA Keijiro Araki, Japan Jifeng He, China Zhiming Liu, Macau Mike Reed, Macau Huibiao Zhu, China Keynote Speakers Edmund M. Clarke (Carnegie Mellon University) Joost-Pieter Katoen (RWTH Aachen University) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080113/e106309f/attachment-0001.htm From s.clover at gmail.com Mon Jan 14 02:47:40 2008 From: s.clover at gmail.com (Sterling Clover) Date: Mon Jan 14 02:41:14 2008 Subject: [Haskell] ANNOUNCE: HStringTemplate -- An Elegant, Functional, Nifty Templating Engine for Haskell Message-ID: <89B71013-9550-4E1F-91DD-A4ABD532F2F1@gmail.com> HStringTemplate is a port of Terrence Parr?s lovely StringTemplate (http://www.stringtemplate.org) engine to Haskell. It is available, cabalized, at: darcs get http://code.haskell.org/HStringTemplate/ As interest has grown in using Haskell for web applications, there has been an increasing buzz about the need for a good templating engine in Haskell. Why might we need this? After all, Haskell has lovely combinator libraries for generating HTML programmatically, enforcing good form through its type system. But sometimes, we don?t want well-formed HTML. We want the ugly stuff that floats around to deal with eight varieties of browser incompatibilities and the latest silly ajax trick. Or sometimes we?re working with a team of graphic designers, and they want to work in almost-HTML. Or sometimes we just want to be able to change the design of a web application on the fly, completely independent of our program logic, and of, heavens forbid, recompiling and possibly messing with a live application. So template engines are popular, and indeed, considered a key part of most web frameworks out there. One problem ? they?re mainly awful, imperatively-conceived behemoths that capriciously mix program logic with display and, consequently, entail a great deal of overhead. Enter StringTemplate, a nifty and fairly-well developed template format that?s both pure and functional, and therefore pretty much the only one of its kind. Indeed, it also seems to be getting heavy use in code generation because its paradigm maps neatly to traversing parse-trees. HStringTemplate is not feature-complete, and indeed is only at version 0.1. But it should implement pretty much everything in the standard StringTemplate 3.0 grammar, only nicer, because it?s in Haskell. There are scads of different recursive constructs and ways to handle inclusion and inheritance. Furthermore, HStringTemplate handles conditionals, and sports also a very Haskellish implementation of custom rendering. Templates can be constructed that return strings, ShowSs, bytestrings, or even pretty printer Docs that handle wrapping, indentation, and fill elegantly. Even better, these templates are parsed and compiled only once, after which point there isn't a syntax tree anymore, just a function that operates on the environment of attributes that have been passed to it. Where I take it from here depends in part on what sort of response I get, so patches, gripes, API comments and feature requests are all more than welcome. Please note that I'm still working in 6.6.1. Everything should be in place to compile properly with the base split, but if it isn't, again, patches more than welcome. Full announcement at: http://fmapfixreturn.wordpress.com/ --SC From waldmann at imn.htwk-leipzig.de Mon Jan 14 04:32:15 2008 From: waldmann at imn.htwk-leipzig.de (Johannes Waldmann) Date: Mon Jan 14 04:25:37 2008 Subject: [Haskell] ANNOUNCE: HStringTemplate -- An Elegant, Functional, Nifty Templating Engine for Haskell In-Reply-To: <89B71013-9550-4E1F-91DD-A4ABD532F2F1@gmail.com> References: <89B71013-9550-4E1F-91DD-A4ABD532F2F1@gmail.com> Message-ID: <478B2C1F.5000402@imn.htwk-leipzig.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Sterling Clover wrote: > Templates can be constructed that return strings, ShowSs, bytestrings, > or even pretty printer Docs that handle wrapping, indentation, and fill > elegantly. Even better, these templates are parsed and compiled only > once, after which point there isn't a syntax tree anymore, just a > function that operates on the environment of attributes that have been > passed to it. Ah! Finally! They invented Lambda Calculus! Perhaps after some more decades they invent Typed Lambda Calculus as well! (sorry, couldn't resist - Best regards, J.W.) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4-svn0 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHiywR3ZnXZuOVyMIRAtGtAKCzfpu9PktmsatKHlM5I2CH4ysR8gCgibat eznCg3FyVJ4tsg/tOvRV8Qs= =4MoX -----END PGP SIGNATURE----- From ndmitchell at gmail.com Mon Jan 14 13:12:45 2008 From: ndmitchell at gmail.com (Neil Mitchell) Date: Mon Jan 14 13:06:04 2008 Subject: [Haskell] ANN: TagSoup 0.4 Message-ID: <404396ef0801141012m5710c76ai201a0725fb7aba79@mail.gmail.com> Hi, I am pleased to release TagSoup 0.4, available (like all good libraries) from hackage: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/tagsoup-0.4. For more details, including examples, read the manual: http://www.cs.york.ac.uk/fp/darcs/tagsoup/tagsoup.htm TagSoup is a library for extracting information out of unstructured HTML code, sometimes known as tag-soup. The HTML does not have to be well formed, or render properly within any particular framework. This library is for situations where the author of the HTML is not cooperating with the person trying to extract the information, but is also not trying to hide the information. Version 0.4 fixes various space leaks, improves the interface, deals with entities better etc. The API has changed somewhat, but should be simpler overall - if I broke your code and you need help, email me. TagSoup is used for writing Haskell Weekly News, processing biological simulations, getting cooking recipies, optimising train fares, getting a list of Simon Peyton Jones' papers, getting a hit count off haskell.org and no doubt many other fun things. Thanks Neil From corentin.dupont at gmail.com Mon Jan 14 15:04:10 2008 From: corentin.dupont at gmail.com (Dupont Corentin) Date: Mon Jan 14 14:57:31 2008 Subject: [Haskell] matrix In-Reply-To: <18a05e6b0801141201h24358a1g9585f1baed0ef6d2@mail.gmail.com> References: <18a05e6b0801141201h24358a1g9585f1baed0ef6d2@mail.gmail.com> Message-ID: <18a05e6b0801141204u12e02a84y8b86958123096cc8@mail.gmail.com> Hello, Is a package with matrices, rotations, translations etc? Sorry for the newbie question! Corentin From dons at galois.com Mon Jan 14 15:07:58 2008 From: dons at galois.com (Don Stewart) Date: Mon Jan 14 15:01:24 2008 Subject: [Haskell] matrix In-Reply-To: <18a05e6b0801141204u12e02a84y8b86958123096cc8@mail.gmail.com> References: <18a05e6b0801141201h24358a1g9585f1baed0ef6d2@mail.gmail.com> <18a05e6b0801141204u12e02a84y8b86958123096cc8@mail.gmail.com> Message-ID: <20080114200758.GC24043@scytale.galois.com> corentin.dupont: > Hello, > Is a package with matrices, rotations, translations etc? > Sorry for the newbie question! > Corentin Check on hackage.haskell.org for 3rd party packages. One is * hmatrix: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmatrix From haskell at list.mightyreason.com Mon Jan 14 16:29:17 2008 From: haskell at list.mightyreason.com (Chris Kuklewicz) Date: Mon Jan 14 16:22:44 2008 Subject: [Haskell] ANNOUNCE: HStringTemplate -- An Elegant, Functional, Nifty Templating Engine for Haskell In-Reply-To: <89B71013-9550-4E1F-91DD-A4ABD532F2F1@gmail.com> References: <89B71013-9550-4E1F-91DD-A4ABD532F2F1@gmail.com> Message-ID: <478BD42D.9000205@list.mightyreason.com> Sterling Clover wrote: > HStringTemplate is a port of Terrence Parr?s lovely StringTemplate > (http://www.stringtemplate.org) engine to Haskell. Reading Terrence Parr describe StringTemplate, at http://www.stringtemplate.org/about.html is amusing: > The fact that StringTemplate does not allow such things as assignments (no > side-effects) should make you suspicious of engines that do allow it. and > Another distinctive StringTemplate language feature lacking in other engines is > lazy-evaluation. StringTemplate's attributes are lazily evaluated in the sense > that referencing attribute "a" does not actually invoke the data lookup > mechanism until the template is asked to render itself to text. Lazy evaluation > is surprising useful in both the web and code generation worlds because such > order decoupling allows code to set attributes when it is convenient or > efficient not necessarily before a template that references those attributes is > create and > Just so you know, I've never been a big fan of functional languages and I > laughed really hard when I realized (while writing the academic paper) that I > had implemented a functional language. The nature of the problem simply dictated > a particular solution. We are generating sentences in an output language so we > should use something akin to a grammar. Output grammars are inconvenient so tool > builders created template engines. Restricted template engines that enforce the > universally-agreed-upon goal of strict model-view separation also look > remarkably like output grammars as I have shown. So, the very nature of the > language generation problem dictates the solution: a template engine that is > restricted to support a mutually-recursive set of templates with > side-effect-free and order-independent attribute references. -- Chris From janstranik at yahoo.de Mon Jan 14 19:02:43 2008 From: janstranik at yahoo.de (Jan Stranik) Date: Mon Jan 14 18:56:04 2008 Subject: [Haskell] Simulating client server communication with recursive monads Message-ID: <004601c85709$f4d74550$de85cff0$@de> Hello, I am trying to simulate a client server traffic using recursive lazy evaluation. I am trying to do that in a recursive writer monad. Following code is my attempt to simulate client server interaction and collect its transcript: {-# OPTIONS -fglasgow-exts #-} module Main where import Control.Monad.Writer.Lazy simulation:: Writer [String] () simulation = mdo a <- server cr cr <- client $ take 10 a return () server:: [Integer] -> Writer [String] [Integer] server (a:as) = do tell ["server " ++ show a] rs <- server as return ((a*2):rs) server [] = return [] client:: [Integer] -> Writer [String] [Integer] client as = do dc <- doClient as return (0:dc) where doClient (a:as) = do tell ["Client " ++ show a] as' <- doClient as return ((a+1):as') doClient [] = return [] main = return $ snd $ runWriter simulation The problem that I see is that the transcript collected contains first all output from the server, and then output from the client. Here is an example of output that I see: :["server 0","server 1","server 3","server 7","server 15","server 31","server 63","server 127","server 255","server 511","server 1023","Client 0","Client 2","Client 6","Client 14","Client 30","Client 62","Client 126","Client 254","Client 510","Client 1022"] I would like to collect the output like: :["client 0","server 0", "client 1",.] This would allow me to remove the ending condition in simulation (take 10), and instead rely fully on lazy evaluation to collect as many simulation steps as needed by my computation. I am still relatively new to the concepts of recursive monadic computations, so I would appreciate any suggestions from experts on this mailing list. Thank you Jan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080114/4ff454e6/attachment-0001.htm From jpvogel1 at gmail.com Mon Jan 14 23:33:17 2008 From: jpvogel1 at gmail.com (John Vogel) Date: Mon Jan 14 23:26:36 2008 Subject: [Haskell] Simulating client server communication with recursive monads In-Reply-To: <004601c85709$f4d74550$de85cff0$@de> References: <004601c85709$f4d74550$de85cff0$@de> Message-ID: If you redefine as follows: server :: [Integer] -> Writer [String] [Integer] server [] = return [] server (a:as) = do tell ["Server " ++ show a] rs <- server as return (a:rs) You get this for the output: ["Server 0","Server 1","Server 2","Server 3","Server 4","Server 5","Server 6","Server 7","Server 8","Server 9","Server 1 0","Client 0","Client 1","Client 2","Client 3","Client 4","Client 5","Client 6","Client 7","Client 8","Client 9"] Then you just need to alternate the pattern. Though a real simulation of sever traffic would account for the packets not being recieved, rerequested, or recieved out of order. It also depends whether you are simulating TCP or UDP. On 1/14/08, Jan Stranik wrote: > > Hello, > > I am trying to simulate a client server traffic using recursive lazy > evaluation. I am trying to do that in a recursive writer monad. > > Following code is my attempt to simulate client server interaction and > collect its transcript: > > {-# OPTIONS -fglasgow-exts #-} > > module Main where > > > > import Control.Monad.Writer.Lazy > > simulation:: Writer [String] () > > simulation = mdo > > a <- server cr > > cr <- client $ take 10 a > > return () > > > > server:: [Integer] -> Writer [String] [Integer] > > server (a:as) = do > > tell ["server " ++ show a] > > rs <- server as > > return ((a*2):rs) > > > > server [] = return [] > > > > client:: [Integer] -> Writer [String] [Integer] > > client as = do > > dc <- doClient as > > return (0:dc) > > where > > doClient (a:as) = do > > tell ["Client " ++ show a] > > as' <- doClient as > > return ((a+1):as') > > doClient [] = return [] > > > > main = return $ snd $ runWriter simulation > > > > The problem that I see is that the transcript collected contains first all > output from the server, and then output from the client. > > Here is an example of output that I see: > > :["server 0","server 1","server 3","server 7","server 15","server > 31","server 63","server 127","server 255","server 511","server 1023","Client > 0","Client 2","Client 6","Client 14","Client 30","Client 62","Client > 126","Client 254","Client 510","Client 1022"] > > > > I would like to collect the output like: > > :["client 0","server 0", "client 1",?] > > > > This would allow me to remove the ending condition in simulation (take > 10), and instead rely fully on lazy evaluation to collect as many simulation > steps as needed by my computation. > > I am still relatively new to the concepts of recursive monadic > computations, so I would appreciate any suggestions from experts on this > mailing list. > > > > Thank you > > > > Jan > > > > _______________________________________________ > Haskell mailing list > Haskell@haskell.org > http://www.haskell.org/mailman/listinfo/haskell > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080114/84277dd1/attachment.htm From conal at conal.net Tue Jan 15 00:45:48 2008 From: conal at conal.net (Conal Elliott) Date: Tue Jan 15 00:39:07 2008 Subject: [Haskell] extending GeSHi's haskell.php ? Message-ID: The haskell.php module in GeSHi (Generic Syntax Highlighter) knows how to make Haddock doc links for several value & type identifiers in the Prelude. I'd like it to know a lot more than that, at least including the "base" package. It looks pretty simple, though tedious, to add more, and so begs for automation, perhaps as an adjunct to Haddock or Hoogle, and maybe tied in with Hackage. Is anyone already working on such a thing? Any ideas? - Conal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080114/538b704c/attachment.htm From gvidal at dsic.upv.es Tue Jan 15 03:55:21 2008 From: gvidal at dsic.upv.es (German Vidal) Date: Tue Jan 15 03:48:42 2008 Subject: [Haskell] DEADLINE EXTENSION - SAS 2008 Message-ID: 15th International Static Analysis Symposium - SAS 2008 Valencia, Spain - July 16-18 >>DEDLINE EXTENSION<< New important dates: Submission of abstract: January 19, 2008 (changed) Submission of full paper: January 26, 2008 (changed) Notification: March 7, 2008 Camera-ready version: April 5, 2008 Conference: July 16-18, 2008 Please see: http://www.dsic.upv.es/~sas2008/ Maria Alpuente, German Vidal (PC co-chairs) Email: sas2008@dsic.upv.es From Clemens.Kupke at cwi.nl Tue Jan 15 11:45:40 2008 From: Clemens.Kupke at cwi.nl (Clemens Kupke) Date: Tue Jan 15 12:05:13 2008 Subject: [Haskell] CMCS 2008: Extended deadline Message-ID: <478CE334.8050306@cwi.nl> [- Apologies for multiple copies -] DEADLINE EXTENSION: New deadline for submissions of regular papers on **Monday, January 21** CMCS 2008 9th International Workshop on Coalgebraic Methods in Computer Science http://www.cwi.nl/projects/cmcs08/ Budapest, Hungary April 4-6, 2008 Key Note Speaker: Dexter Kozen (to be confirmed) Invited Speakers: Stefan Milius and Dirk Pattinson Important Dates Extended deadline for submission of regular papers: January 21, 2008 Notification of acceptance of regular papers: February 11, 2008. Final version for the preliminary proceedings: February 18, 2008. Deadline for submission of short contributions: March 10, 2008. Notification of acceptance of short contributions: March 17, 2008. The workshop will be held in conjunction with the 11th European Joint Conferences on Theory and Practice of Software ETAPS 2008 March 29 - April 6, 2008 Programme Committee Jiri Adamek (chair, Braunschweig), Corina Cirstea (Southampton), Neil Ghani (Nottingham), H. Peter Gumm (Marburg), Bart Jacobs (Nijmegen), Clemens Kupke (co-chair, Amsterdam), Alexander Kurz (Leicester), Ugo Montanari (Pisa), Larry Moss (Indiana), John Power (Bath), Jan Rutten (Amsterdam), Lutz Schr?der (Bremen), Tarmo Uustalu (Tallinn), Yde Venema (Amsterdam), Hiroshi Watanabe (Osaka). Submissions Two sorts of submissions will be possible this year: Papers to be evaluated by the programme committee for inclusion in the ENTCS proceedings: These papers must be written using ENTCS style files and be of length no greater than 20 pages. They must contain original contributions, be clearly written, and include appropriate reference to and comparison with related work. If a submission describes software, software tools, or their use, it should include all source code that is needed to reproduce the results but is not publicly available. If the additional material exceeds 5 MB, URL's of publicly available sites should be provided in the paper. Short contributions: These will not be published but will be compiled into a technical report of the Technical University of Braunschweig. They should be no more than two pages and may describe work in progress, summarise work submitted to a conference or workshop elsewhere, or in some other way appeal to the CMCS audience. Both sorts of submission should be submitted in postscript or pdf form as attachments to an email to cmcs08@cwi.nl. The email should include the title, corresponding author, and, for the first kind of submission, a text-only one-page abstract. After the workshop, we expect to produce a journal proceedings of extended versions of selected papers to appear in Theoretical Computer Science. For more information, please write to cmcs08@cwi.nl From janstranik at yahoo.de Tue Jan 15 13:19:07 2008 From: janstranik at yahoo.de (Jan Stranik) Date: Tue Jan 15 13:12:28 2008 Subject: [Haskell] Simulating client server communication with recursive monads In-Reply-To: References: <004601c85709$f4d74550$de85cff0$@de> Message-ID: <005401c857a3$1f32d550$5d987ff0$@de> John, Your change makes just the server function to return the same number that it receives. My server implementation multiplied the incoming number by two. My question was why does the output from writer shows first all output from server, then followed by all output from client. I would like to see output from client and server to alternate in the order in which the computation occurs, namely [server, client, server, client, server, client, .]. I know that for finite sequences, it is easily possible to reorder the output from writer. However, it is not possible to reorder the output if the sequence is infinite. That can be seen in my example program if it is modified by removing the statement "take 10". In that case the program never prints output from clients, the output printer will be only from the server. Jan From: John Vogel [mailto:jpvogel1@gmail.com] Sent: Monday, January 14, 2008 8:33 PM To: Jan Stranik Cc: haskell@haskell.org Subject: Re: [Haskell] Simulating client server communication with recursive monads If you redefine as follows: server :: [Integer] -> Writer [String] [Integer] server [] = return [] server (a:as) = do tell ["Server " ++ show a] rs <- server as return (a:rs) You get this for the output: ["Server 0","Server 1","Server 2","Server 3","Server 4","Server 5","Server 6","Server 7","Server 8","Server 9","Server 1 0","Client 0","Client 1","Client 2","Client 3","Client 4","Client 5","Client 6","Client 7","Client 8","Client 9"] Then you just need to alternate the pattern. Though a real simulation of sever traffic would account for the packets not being recieved, rerequested, or recieved out of order. It also depends whether you are simulating TCP or UDP. On 1/14/08, Jan Stranik wrote: Hello, I am trying to simulate a client server traffic using recursive lazy evaluation. I am trying to do that in a recursive writer monad. Following code is my attempt to simulate client server interaction and collect its transcript: {-# OPTIONS -fglasgow-exts #-} module Main where import Control.Monad.Writer.Lazy simulation:: Writer [String] () simulation = mdo a <- server cr cr <- client $ take 10 a return () server:: [Integer] -> Writer [String] [Integer] server (a:as) = do tell ["server " ++ show a] rs <- server as return ((a*2):rs) server [] = return [] client:: [Integer] -> Writer [String] [Integer] client as = do dc <- doClient as return (0:dc) where doClient (a:as) = do tell ["Client " ++ show a] as' <- doClient as return ((a+1):as') doClient [] = return [] main = return $ snd $ runWriter simulation The problem that I see is that the transcript collected contains first all output from the server, and then output from the client. Here is an example of output that I see: :["server 0","server 1","server 3","server 7","server 15","server 31","server 63","server 127","server 255","server 511","server 1023","Client 0","Client 2","Client 6","Client 14","Client 30","Client 62","Client 126","Client 254","Client 510","Client 1022"] I would like to collect the output like: :["client 0","server 0", "client 1",.] This would allow me to remove the ending condition in simulation (take 10), and instead rely fully on lazy evaluation to collect as many simulation steps as needed by my computation. I am still relatively new to the concepts of recursive monadic computations, so I would appreciate any suggestions from experts on this mailing list. Thank you Jan _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20080115/92e45919/attachment-0001.htm From haskell at list.mightyreason.com Tue Jan 15 14:06:48 2008 From: haskell at list.mightyreason.com (Chris Kuklewicz) Date: Tue Jan 15 14:00:11 2008 Subject: [Haskell] Simulating client server communication with recursive monads In-Reply-To: <005401c857a3$1f32d550$5d987ff0$@de> References: <004601c85709$f4d74550$de85cff0$@de> <005401c857a3$1f32d550$5d987ff0$@de> Message-ID: <478D0448.2050907@list.mightyreason.com> Jan Stranik wrote: > My question was why does the output from writer shows first all output > from server, then followed by all output from client. The effect of "mfix" is that the side-effects of the calculation still occur in the lexical order. Since server is before client, the output of the server precedes the client. > I would like to > see output from client and server to alternate in the order in which the > computation occurs, namely [server, client, server, client, server, > client, ?]. Then you have to restructure the code slightly. This works: > import Control.Monad > > import Control.Monad.Writer.Lazy > > client:: [Integer] -> Writer [String] [Integer] > client as = do > dc <- doClient as > return (0:dc) > where > doClient (a:as) = do > tell ["Client " ++ show a] > as' <- doClient as > return ((a+1):as') > doClient [] = return [] > > server :: [Integer] -> Writer [String] [Integer] > server [] = return [] > server (a:as) = do > tell ["Server " ++ show a] > rs <- server as > return (2*a:rs) > > simulation :: [(String,String)] > simulation = > let (clientOut,clientLog) = runWriter (client serverOut) > (serverOut,serverLog) = runWriter (server clientOut) > in zip serverLog clientLog > > main = print (take 10 simulation) From twd2 at dockerz.net Tue Jan 15 16:41:05 2008 From: twd2 at dockerz.net (Tim Docker) Date: Tue Jan 15 16:34:25 2008 Subject: [Haskell] hbeat: a rhythm sequencer Message-ID: <9F2C2FCC-912A-4C9B-8B24-A6C2C4BC4FC8@dockerz.net> I've just uploaded to hackage a step-based music sequencer, called "hbeat". It's little more than a toy, but it's fun. I