From dons at cse.unsw.edu.au Mon Jan 1 22:22:23 2007 From: dons at cse.unsw.edu.au (Donald Bruce Stewart) Date: Mon Jan 1 22:19:00 2007 Subject: [Haskell] Haskell Weekly News: January 02, 2007 Message-ID: <20070102032223.GB12350@cse.unsw.EDU.AU> --------------------------------------------------------------------------- Haskell Weekly News http://sequence.complete.org/hwn/20070102 Issue 55 - January 02, 2007 --------------------------------------------------------------------------- Welcome to issue 55 of HWN, a weekly newsletter covering developments in the Haskell community. This week brings a new release of vty and HsColour, and some interesting discussion over the holiday break. Announcements hscolour-1.6. Malcolm Wallace [1]announced HsColour, a popular syntax-highlighter for Haskell code. It can generate ANSI terminal colour codes, HTML, and CSS, and can insert hyperlink anchors for function definitions (useful in conjunction with [2]Haddock). [3]HsColour-1.6 is now available. The major addition is a new LaTeX output mode. 1. http://article.gmane.org/gmane.comp.lang.haskell.general/14677 2. http://haskell.org/haddock 3. http://www.cs.york.ac.uk/fp/darcs/hscolour Dimensional: Statically checked physical dimensions. Björn Buckwalter [4]announced version 0.1 of [5]Dimensional, a module for statically checked physical dimensions. The module facilitates calculations with physical quantities while statically preventing e.g. addition of quantities with differing physical dimensions. 4. http://article.gmane.org/gmane.comp.lang.haskell.general/14691 5. http://code.google.com/p/dimensional/ vty 2.0. Stefan O'Rear [6]announced a new major version of [7]vty. Differences from 1.0 include: vty now uses a record type for attributes, instead of bitfields in an Int; vty now supports setting background colors; you can now explicitly specify 'default' colors; vty now supports Unicode characters on output, automatically setting and resetting UTF-8 mode. 6. http://article.gmane.org/gmane.comp.lang.haskell.general/14703 7. http://members.cox.net/stefanor/vty 'Lambda Revolution' tshirts. Paul Johnson [8]announced the creation of a new Haskell tshirt, on the theme of 'The Lambda Revolution'. Tshirts are available from [9]CafePress, and the designs are freely available. 8. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17916 9. http://www.cafepress.com/l_revolution Discussion Beautiful concurrency. Simon Peyton-Jones [10]mentioned that he's been writing a chapter on concurrency and transactional memory for a new book, 'Beautiful code'. [11]A first draft is available and Simon welcomes constructive suggestions for improvement. The book is aimed at a general audience of programmers, not Haskell geeks, so tries to explain everything necessary. If you are not a Haskell expert, your input would be particularly valuable. 10. http://article.gmane.org/gmane.comp.lang.haskell.general/14681 11. http://haskell.org/haskellwiki/Talk:SantaClausProblem Limits to implicit parallelism in functional applications. John DeTreville [12]announced a short paper about how much implicit parallelism there might be in ordinary functional applications. 12. http://article.gmane.org/gmane.comp.lang.haskell.general/14699 Inlining higher order functions. Norman Ramsey [13]asked about fine grained control for inlining in higher order functions. 13. http://article.gmane.org/gmane.comp.lang.haskell.glasgow.user/11467 Red-black trees as a nested datatype. Jim Apple [14]described how to implement red-black trees as a nested datatype. 14. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17957 SYB for XML: deserialization and collections. Alexander Jacobson [15]asked about approaches to simplifying boilerplate in HAppS associated with XML serialization and state deserialization. 15. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17922 Flattening a lisp-style tree. pphetra [16]asked about flattening heterogeneous lists (or trees) in Haskell. 16. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/17976/focus=17976 Jobs Functional programming at Jane Street Capital. Yaron Minsky [17]announced that [18]Jane Street Capital is again looking to hire some top-notch functional programmers. Of particular note is that Jane Street Europe Ltd. now has an office in London, and we are particularly interested in hiring someone for that office with strong systems administration skills in addition to experience with functional programming languages. The ideal candidate has: a commitment to the practical, experience with functional programming languages (such as Haskell). Applicants should also have experience with UNIX and a deep understanding of computers and technology and a strong mathematical background. 17. http://article.gmane.org/gmane.comp.lang.haskell.general/14683 18. http://www.janestcapital.com/tech.html Blog noise [19]Haskell news from the blogosphere. * [20]Secret Santas in Haskell III: Lather, Rinse, Repeat 1 * [21]More Haskell in Java 7 or 8? * [22]Generalized vs. dynamic interfaces * [23]Type classes in Java * [24]Static vs dynamic typing: do what thou wilt * [25]Hoogle 4 progress * [26]Hoogle Progress, HsMan features * [27]The York Haskell Compiler: 1000 patches! * [28]Evaluating cellular automata is co-monadic * [29]Tying Knots Generically * [30]Rails -> Ruby -> Haskell * [31]A Sermon on Programming Languages * [32]Thoughtful revision control * [33]readFile' * [34]Code unraveller * [35]The Haskell Meta Tutorial * [36]Monads * [37]My Haskell Experience * [38]Communities * [39]Darcs: The source code management system of the future? * [40]On strong type systems * [41]On Programming Languages and Productivity 19. http://planet.haskell.org/ 20. http://mult.ifario.us/articles/2006/12/22/secret-santas-in-haskell-iii-collect-reap-repeat 21. http://blogs.msdn.com/ralflammel/archive/2006/12/21/more-haskell-in-java-7-or-8.aspx 22. http://blogs.msdn.com/ralflammel/archive/2006/12/23/generalized-vs-dynamic-interfaces.aspx 23. http://syntaxfree.wordpress.com/2006/12/23/et-tu-brute/ 24. http://syntaxfree.wordpress.com/2006/12/24/static-vs-dynamic-typing-do-what-thou-wilt/ 25. http://neilmitchell.blogspot.com/2006/12/hoogle-4-progress.html 26. http://neilmitchell.blogspot.com/2006/12/hoogle-progress-hsman-features.html 27. http://yhc06.blogspot.com/2006/12/1000-patches.html 28. http://sigfpe.blogspot.com/2006/12/evaluating-cellular-automata-is.html 29. http://sigfpe.blogspot.com/2006/12/tying-knots-generically.html 30. http://rubynations.wordpress.com/2006/12/28/evolutionrails-ruby-haskell/ 31. http://www.dailyspeculations.com/wordpress/?p=101 32. http://koweycode.blogspot.com/2006/12/distributed-chiming-in.html 33. http://koweynlg.blogspot.com/2006/12/meh.html 34. http://koweycode.blogspot.com/2006/12/unraveller.html 35. http://koweycode.blogspot.com/2006/12/haskell-metatutorial.html 36. http://hierodule.livejournal.com/69052.html 37. http://kawagner.blogspot.com/2006/12/my-haskell-experience.html 38. http://gravityboy.livejournal.com/31930.html 39. http://www.iovene.com/content/view/93/1/ 40. http://blog.tmorris.net/strong-type-systems/ 41. http://www.neilmix.com/2007/01/01/on-programming-languages-and-productivity/ Quotes of the Week * chessguy: [in regards to #haskell] man, it's amazing the difference between what happens when someone asks for help here, and what happens when they ask for help in another language channel * cjeris: It's amazing what some languages do to make thinking impossible, seemingly justified by the assumption that no one thinks anyway, so it's more important to make non-thinking programming as easy as possible. * edwinb: I've just walked past a poster advertising a gig by a band called 'The Awkward Squad'. I assume this means they provide output, play concurrently, and people take exception to them. * kfish: Apparently @pl also doubles as the command for producing an unintelligible flip-stream * Binkley: [Monads as clothes] using unsafePerformIO is kind of like going naked in public, might be safe in some contexts, but you really don't want to know what happens if you do it in a really bad one * quazimodo: I know why you guys are so ready to deal with me and put up with noob questions ... you program so fast compared to other language users that you have time to mess around? * iulus: IO, IO, it's off to bind we go ... * dons: all your imperative are belong to us * Logan Capaldo: I like constructing things with type errors. It lets me read the error and try and figure out what I'm really trying to do * glguy: In true Haskell form, after I realized what I was actually doing... all my functions melted down to about 2 lines each * jcreigh: I've found learning Haskell makes me feel vastly inferior to Haskell coders. ('Oh,', they say, 'That's just a fold over the hyper-monad fluxbox list. Here's the one-line replacement for your entire program.') * Saizan: [New Year's Fun] Yesterday I was so drunk I was trying to typecheck the people at the party... 'What's your monad!?' Code Watch Wed Dec 27 17:03:48 PST 2006. Manuel M T Chakravarty. [42]Parse and desugar equational constraints. With -findexed-types, equational constraints can appear in contexts wherever class predicates are allowed. The two argument types need to be boxed and rank 0. 42. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/18551 About the Haskell Weekly News Each week, new editions are posted to [43]the Haskell mailing list as well as to [44]the Haskell Sequence and [45]Planet Haskell. [46]RSS is also available, and headlines appear on [47]haskell.org. Headlines are available as [48]PDF. The Haskell Weekly News is also [49]available in Spanish translation. To help create new editions of this newsletter, please see the [50]contributing information. Send stories to dons at cse.unsw.edu.au. The darcs repository is available at darcs get [51]http://www.cse.unsw.edu.au/~dons/code/hwn 43. http://www.haskell.org/mailman/listinfo/haskell 44. http://sequence.complete.org/ 45. http://planet.haskell.org/ 46. http://sequence.complete.org/node/feed 47. http://haskell.org/ 48. http://www.cse.unsw.edu.au/~dons/code/hwn/archives/20070102.pdf 49. http://haskell.org/haskellwiki/HWN/es 50. http://haskell.org/haskellwiki/HWN 51. http://www.cse.unsw.edu.au/~dons/code/hwn From grust at in.tum.de Tue Jan 2 05:52:10 2007 From: grust at in.tum.de (Torsten Grust) Date: Tue Jan 2 05:48:48 2007 Subject: [Haskell] PLAN-X 2007: Last Call for Participation Message-ID: Last Call for Participation P L A N - X 2 0 0 7 Programming Language Technologies for XML An ACM SIGPLAN Workshop collocated with POPL 2007 Nice, France -- January 20, 2007 www.plan-x-2007.org Please join us for PLAN-X 2007, the fifth workshop in the PLAN-X series, dedicated to the interaction and integration of programming language technology and the world of XML. The XML data model and its associated languages add interesting twists to programming language practice as well as theory. Just like its four predecessors, the PLAN-X 2007 workshop turns the spotlight on how programming language technology can embrace and explain streaming XML transformations, types for XPath and XML updates, web service contracts, tree patterns in XQuery, LINQ and XML Schema, and more. PLAN-X 2007 will feature eight talks, four system demonstrations, extensive opportunity for discussion, and a keynote address by Christoph Koch (U Saarland, Germany). PLAN-X 2007 will be held in the Plaza Hotel (Nice, France) all-day on Saturday, January 20, 2007, just after and collocated with POPL 2007, the ACM SIGPLAN - SIGACT Symposium on Principles of Programming Languages (January 17-19, 2007). -- PROGRAM (Saturday, January 20, 2007) 09:00--10:00 Welcome Invited Talk by Christoph Koch (U Saarland, Germany) XPath Leashed 10:00--10:30 Coffee break 10:30--12:00 Session 1: Research Papers Streaming XML Transformations Using Term Rewriting (Alain Frisch, Keisuke Nakano) How to Recognise Different Kinds of Tree Patterns From Quite a Long Way Away (Jan Hidders, Philippe Michiels, Jerome Simeon, Roel Vercammen) Lux: A Lightweight, Statically Typed XML Update Language (James Cheney) 12:00--01:30 Workshop lunch (provided) 01:30--03:10 Session 2: Research Papers and Demo Presentations A Theory of Contracts for Web Services (Giuseppe Castagna, Nils Gesbert, Luca Padovani) XML Transformation Language Based on Monadic Second Order Logic (Kazuhiro Inaba, Haruo Hosoya) Demo: MTran: An XML Transformation Language Bases on Monadic Second Order Logic (Kazuhiro Inaba, Haruo Hosoya) Demo: XCentric: A Logic-Programming Language for XML Processing (Jorge Coelho, M?rio Florido) Demo: LINQ to XSD (Ralf L?mmel) Demo: GeLaBa: A Framework to Define Classes of XML Documents and to Automatically Derive Specialized Infrastructures (Benoit Pin, Georges Andr? Silber) 03:10--04:00 Interactive Demos and Coffee break 04:00--05:30 Session 3: Research Papers XPath Typing Using a Modal Logic with Converse for Finite Trees (Pierre Geneves, Nabil Layaida, Alan Schmitt) Deciding Equivalence of Top-Down XML Transformations in Polynomial Time (Sebastian Maneth, Helmut Seidl) A Logic Your Typechecker Can Count On: Unordered Tree Types in Practice (Nate Foster, Benjamin C. Pierce, Alan Schmitt) -- REGISTRATION PLAN-X 2007 is held in cooperation with POPL 2007. You can register for the workshop via the POPL 2007 registration process (online or offline). Please visit http://www.regmaster.com/conf/popl2007.html Registration rates are shown below. Note that you can upgrade an existing POPL 2007 registration to include PLAN-X 2007. Workshop-only registration is possible as well. ACM or SIGPLAN Member $89 Non-Member $99 Student $89 Your registration includes a copy of the PLAN-X 2007 informal proceedings, coffee breaks, and lunch. -- PLAN-X 2007 Workshop Chairs - General Chair - Program Chair Torsten Grust Giorgio Ghelli TU M?nchen U Pisa Munich, Germany Pisa, Italy grust@in.tum.de ghelli@di.unipi.it -- PLAN-X 2007 Program Committee - Michael Benedikt (Lucent, USA) - Daniela Florescu (Oracle, USA) - Alain Frisch (INRIA Rocquencourt, France) - Giorgio Ghelli, Chair (U Pisa, Italy) - Haruo Hosoya (U Tokyo, Japan) - Anders M?ller (U Aarhus, Denmark) - Mukund Raghavachari (IBM T.J. Watson Research Center, USA) - Alan Schmitt (INRIA Rh?ne-Alpes, France) - Sophie Tison (U Lille, France) - Philip Wadler (U Edinburgh, UK) From nikhil at bluespec.com Tue Jan 2 11:40:39 2007 From: nikhil at bluespec.com (Rishiyur Nikhil) Date: Tue Jan 2 11:37:06 2007 Subject: [Haskell] Quotes on thinking In-Reply-To: <20070102031906.A0E83324590@www.haskell.org> References: <20070102031906.A0E83324590@www.haskell.org> Message-ID: <459A8B07.9090408@bluespec.com> > Quotes of the Week: (from Haskell Digest, Vol 41, Issue 1) > > * cjeris: It's amazing what some languages do to make thinking > impossible, seemingly justified by the assumption that no one > thinks anyway, so it's more important to make non-thinking > programming as easy as possible. You may be interested in the following quotes: Alfred North Whitehead (1861-1947): "It is a profoundly erroneous truism, repeated by all copybooks and by eminent people when they are making speeches, that we should cultivate the habit of thinking of what we are doing. The precise opposite is the case. Civilization advances by extending the number of important operations which we can perform without thinking about them." [Example: compare long division with Roman numerals and Arabic numerals] Operations of thought are like cavalry charges in a battle--they are strictly limited in number, they require fresh horses, and must only be made at decisive moments." Joe Stoy: "If you want to reduce ... design time, you have to stop thinking about something you used to have to think about." Nikhil From hjgtuyl at chello.nl Tue Jan 2 17:33:42 2007 From: hjgtuyl at chello.nl (Henk-Jan van Tuyl) Date: Tue Jan 2 17:30:13 2007 Subject: [Haskell] Haskell Weekly News: January 02, 2007 In-Reply-To: <20070102032223.GB12350@cse.unsw.EDU.AU> References: <20070102032223.GB12350@cse.unsw.EDU.AU> Message-ID: On Tue, 02 Jan 2007 04:22:23 +0100, Donald Bruce Stewart wrote: > * edwinb: I've just walked past a poster advertising a gig by a band > called 'The Awkward Squad'. I assume this means they provide > output, play concurrently, and people take exception to them. Is there a tutorial on how to tackle this band? -- Met vriendelijke groet, Henk-Jan van Tuyl -- http://Van.Tuyl.eu/ -- Using Opera's revolutionary e-mail client: https://secure.bmtmicro.com/opera/buy-opera.html?AID=789433 From iavor.diatchki at gmail.com Wed Jan 3 12:40:45 2007 From: iavor.diatchki at gmail.com (Iavor Diatchki) Date: Wed Jan 3 12:37:14 2007 Subject: [Haskell] ANN: monadLib 3.0.0 Message-ID: <5ab17e790701030940ua8afef0pd4327edbf70a3721@mail.gmail.com> Hello, I have placed a new version of 'monadLib' on its web-page: http://www.csee.ogi.edu/~diatchki/monadLib Some of the changes compared to the previous version: * The whole library is in a single module MonadLib.hs (~500 lines) * Simpler and more symmetric API * Removed the (generic) monadic combinators * Removed the search transformer (may add another version of it at some point) * Rewrote some transformers in the "traditional" way (e.g., exceptions and output) * There is an optional module that defines base monads corresponding to each transformer. Comments are very welcome. -Iavor From robdockins at fastmail.fm Thu Jan 4 05:24:40 2007 From: robdockins at fastmail.fm (Robert Dockins) Date: Wed Jan 3 22:20:25 2007 Subject: [Haskell] [ANN] Shellac 0.6, new Vty Shellac backend, Lamba Shell 0.5 Message-ID: <200701040524.40458.robdockins@fastmail.fm> Fellow Haskellers, I am pleased to simultaneously announce the immediate release of the following related packages: Shellac, 0.6 Shellac-readline, 0.3 Shellac-vty, 0.1 Shellac is a framework for building read-eval-print style shells which uses configurable backend plugins. The major new feature of this release is the new Shellac-vty backend package, which uses the new Vty library (http://members.cox.net/stefanor/vty/) to do terminal I/O directly. It currently has basic line editing keybindings, paging, and a command history. The main package and Shellac-readline updates consist of minor API updates. The project page for these packages may be found at: http://www.eecs.tufts.edu/~rdocki01/shellac.html Additionally, the Lambda Shell 0.5 release is now available. The Lambda Shell is a shell environment for defining, evaluating and manipulating expressions of the pure, untyped lambda calculus. It is also a showcase for Shellac and a model for its use. This update contains little new functionality, but is mostly a maintaince update. The Lambda Shell project page may be found at: http://www.eecs.tufts.edu/~rdocki01/lambda.html If you wish to play with the new Vty Shellac backend, you may 'darcs apply' the following patch to the lambda shell darcs sources before building. It will cause the lambda shell to use the Vty backend rather than the readline backend. http://www.eecs.tufts.edu/~rdocki01/lambda-shell-vty.patch Thanks all and happy hacking, Rob Dockins From simonmar at microsoft.com Thu Jan 4 06:02:16 2007 From: simonmar at microsoft.com (Simon Marlow) Date: Thu Jan 4 05:58:42 2007 Subject: [Haskell] FW: WoLLIC'2007 - 2nd CFP Message-ID: [ posting on behalf of Ruy de Queiroz ] [** sincere apologies for duplicates **] Call for Papers 14th Workshop on Logic, Language, Information and Computation (WoLLIC'2007) Rio de Janeiro, Brazil July 2-5, 2007 WoLLIC is an annual international forum on inter-disciplinary research involving formal logic, computing and programming theory, and natural language and reasoning. Each meeting includes invited talks and tutorials as well as contributed papers. The Fourteenth WoLLIC will be held in Rio de Janeiro, Brazil, from July 2 to July 5, 2007, and sponsored by the Association for Symbolic Logic (ASL), the Interest Group in Pure and Applied Logics (IGPL), the European Association for Logic, Language and Information (FoLLI), the European Association for Theoretical Computer Science (EATCS), the Sociedade Brasileira de Computacao (SBC), and the Sociedade Brasileira de Logica (SBL). PAPER SUBMISSION Contributions are invited on all pertinent subjects, with particular interest in cross-disciplinary topics. Typical but not exclusive areas of interest are: foundations of computing and programming; novel computation models and paradigms; broad notions of proof and belief; formal methods in software and hardware development; logical approach to natural language and reasoning; logics of programs, actions and resources; foundational aspects of information organization, search, flow, sharing, and protection. Proposed contributions should be in English, and consist of a scholarly exposition accessible to the non-specialist, including motivation, background, and comparison with related works. They must not exceed 10 pages (in font 10 or higher), with up to 5 additional pages for references and technical appendices. The paper's main results must not be published or submitted for publication in refereed venues, including journals and other scientific meetings. It is expected that each accepted paper be presented at the meeting by one of its authors. Papers must be submitted electronically at www.cin.ufpe.br/~wollic/wollic2007/instructions.html A title and single-paragraph abstract should be submitted by February 23, and the full paper by March 2 (firm date). Notifications are expected by April 13, and final papers for the proceedings will be due by April 27 (firm date). PROCEEDINGS Proceedings, including both invited and contributed papers, will be published in advance of the meeting. Publication venue: Springer's Lecture Notes in Computer Science. INVITED SPEAKERS: Veronique Cortier (LORIA Nancy) Martin Escardo (Birmingham) Georg Gottlob (Oxford) Achim Jung (Birmingham) Louis Kauffman (U Illinois Chicago) Sam Lomonaco (U Maryland Baltimore) Paulo Oliva (London/QM) John Reif (Duke) Yde Venema (Amsterdam) STUDENT GRANTS ASL sponsorship of WoLLIC'2007 will permit ASL student members to apply for a modest travel grant (deadline: April 1, 2007). See www.aslonline.org/studenttravelawards.html for details. IMPORTANT DATES February 23, 2007: Paper title and abstract deadline March 2, 2007: Full paper deadline (firm) April 12, 2007: Author notification April 26, 2007: Final version deadline (firm) PROGRAM COMMITTEE Samson Abramsky (U Oxford) Michael Benedikt (Bell Labs) Lars Birkedal (ITU Copenhagen) Andreas Blass (U Michigan) Thierry Coquand (Chalmers U, Goteborg) Jan van Eijck (CWI, Amsterdam) Marcelo Finger (U Sao Paulo) Rob Goldblatt (Victoria U, Wellington) Yuri Gurevich (Microsoft Redmond) Hermann Haeusler (PUC Rio) Masami Hagiya (Tokyo U) Joseph Halpern (Cornell U) John Harrison (Intel UK) Wilfrid Hodges (U London/QM) Phokion Kolaitis (IBM Almaden Research Center) Marta Kwiatkowska (U Birmingham) Daniel Leivant (Indiana U) (Chair) Maurizio Lenzerini (U Rome) Jean-Yves Marion (LORIA Nancy) Dale Miller (Polytechnique Paris) John Mitchell (Stanford U) Lawrence Moss (Indiana U) Peter O'Hearn (U London/QM) Prakash Panangaden (McGill, Montreal) Christine Paulin-Mohring (Paris-Sud, Orsay) Alexander Razborov (Steklov, Moscow) Helmut Schwichtenberg (Munich U) Jouko Vaananen (U Helsinki) ORGANISING COMMITTEE Marcelo da Silva Correa (U Fed Fluminense) Renata P. de Freitas (U Fed Fluminense) Ana Teresa Martins (U Fed Ceara') Anjolina de Oliveira (U Fed Pernambuco) Ruy de Queiroz (U Fed Pernambuco, co-chair) Petrucio Viana (U Fed Fluminense, co-chair) WEB PAGE www.cin.ufpe.br/~wollic/wollic2007 --- From simonmarhaskell at gmail.com Thu Jan 4 10:08:45 2007 From: simonmarhaskell at gmail.com (Simon Marlow) Date: Thu Jan 4 10:05:12 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: <20061231004452.C421D788216@labrador.eecs.harvard.edu> References: <20061227231119.0DAD912F411D@curlycoat> <87ac18khxj.fsf@szonett.ki.iif.hu> <45963CEC.8030007@dtek.chalmers.se> <20061231004452.C421D788216@labrador.eecs.harvard.edu> Message-ID: <459D187D.5070907@microsoft.com> Norman Ramsey wrote: > > The simplest thing is to use readFile (from the Prelude) instead of > > using handles. readFile will take care of everything for you when the > > time is right. > > Thanks---I'll try it. Somehow my hoogle query missed readFile... > undoubtedly because I asked for 'String -> IO String' instead > of 'FilePath -> IO String'. Dunno if this is a bug or a feature, > since as far as the compiler is concerned, FilePath and String are the > same type... There seems to be a misunderstanding here: readFile in itself is not the solution. readFile is defined thus: readFile name = openFile name ReadMode >>= hGetContents and the original code was this: load fn = do handle <- IO.openFile fn IO.ReadMode contents <- IO.hGetContents handle IO.hClose handle return $ XP.xmlParse fn contents Sure, you can replace the openFile/hGetContents pair by readFile, but the real problem is the presence of the hClose. Removing that will solve your problem (but note that you now have no control over when the file is actually closed). Cheers, Simon From nr at eecs.harvard.edu Thu Jan 4 21:05:26 2007 From: nr at eecs.harvard.edu (Norman Ramsey) Date: Thu Jan 4 21:01:48 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: <459D187D.5070907@microsoft.com> References: <20061227231119.0DAD912F411D@curlycoat> <87ac18khxj.fsf@szonett.ki.iif.hu> <45963CEC.8030007@dtek.chalmers.se> <20061231004452.C421D788216@labrador.eecs.harvard.edu> <459D187D.5070907@microsoft.com> Message-ID: <20070105020527.4BB1A788320@labrador.eecs.harvard.edu> > There seems to be a misunderstanding here: readFile in itself is not the > solution. readFile is defined thus: > > readFile name = openFile name ReadMode >>= hGetContents > > and the original code was this: > > load fn = do handle <- IO.openFile fn IO.ReadMode > contents <- IO.hGetContents handle > IO.hClose handle > return $ XP.xmlParse fn contents > > Sure, you can replace the openFile/hGetContents pair by readFile, but the > real problem is the presence of the hClose. Removing that will solve your > problem (but note that you now have no control over when the file is > actually closed). Can I just leave it hanging and rely on the garbage collector to close it in the fullness of time? Because of laziness, I believe there's no point in my writing the following: > load fn = do handle <- IO.openFile fn IO.ReadMode > contents <- IO.hGetContents handle > let xml = XP.xmlParse fn contents > IO.hClose handle > return xml Is that correct? Norman From tmorris at tmorris.net Fri Jan 5 01:15:44 2007 From: tmorris at tmorris.net (Tony Morris) Date: Fri Jan 5 01:12:07 2007 Subject: [Haskell] ANN: IntelliJIDEA for Haskell Message-ID: <459DED10.3040108@tmorris.net> If you prefer IntelliJIDEA for your development, you might be interested in Haskell syntax highlighting. IntellijIDEA for Haskell is released under a BSD licence and can be found here: http://www.workingmouse.com/research/IntelliJIdea%2DHaskell/ -- Tony Morris Workingmouse Research -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 191 bytes Desc: OpenPGP digital signature Url : http://www.haskell.org/pipermail/haskell/attachments/20070105/dbc59b07/signature.bin From ashley at semantic.org Fri Jan 5 04:04:19 2007 From: ashley at semantic.org (Ashley Yakeley) Date: Fri Jan 5 04:00:52 2007 Subject: [Haskell] HNOP Status Message-ID: For code designed not to do anything, HNOP has high hopes. I have recently split the project into two Cabal packages: "nop", a library of no-op services, and "hnop", a program that uses nop to do nothing. Both packages can be found in this repository: darcs get http://semantic.org/hnop/ First and foremost the two packages are intended to be templates for Cabal projects, so I'm interested in making them as canonical and "best practices" as possible. I'm not so interested in showing off clever Haskell programming idioms for doing nothing, unless there's some expository benefit relating to the Cabal or Haddock infrastructure. For instance, in the nop package, "runhaskell Setup test" works. It runs "make" in the "test" directory, which compiles a program and runs it, and then diffs it against reference output. But should I be using QuickCheck or something here? Is there some well-known or Cabal-approved way to run tests on a package? Please send me patches licensed under the simple permissive license in the LICENSE files if you have any improvements. Or I can move this to darcs.haskell.org if it's appropriate. -- Ashley Yakeley Seattle, WA From dons at cse.unsw.edu.au Sat Jan 6 03:46:41 2007 From: dons at cse.unsw.edu.au (Donald Bruce Stewart) Date: Sat Jan 6 03:43:02 2007 Subject: [Haskell] HNOP Status In-Reply-To: References: Message-ID: <20070106084641.GA13084@cse.unsw.EDU.AU> ashley: > For code designed not to do anything, HNOP has high hopes. I have > recently split the project into two Cabal packages: "nop", a library of > no-op services, and "hnop", a program that uses nop to do nothing. Both > packages can be found in this repository: > > darcs get http://semantic.org/hnop/ Good to know that hnop is still under active development! -- Don From S.Karrmann at web.de Thu Jan 4 12:31:26 2007 From: S.Karrmann at web.de (Stefan Karrmann) Date: Sat Jan 6 12:45:12 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: <459D187D.5070907@microsoft.com> References: <20061227231119.0DAD912F411D@curlycoat> <87ac18khxj.fsf@szonett.ki.iif.hu> <45963CEC.8030007@dtek.chalmers.se> <20061231004452.C421D788216@labrador.eecs.harvard.edu> <459D187D.5070907@microsoft.com> Message-ID: <20070104173126.GA5618@johann.karrmann.de> My 2 cent: Why does seq not help? See code below. Simon Marlow (Thu, Jan 04, 2007 at 03:08:45PM +0000): > and the original code was this: > > load fn = do handle <- IO.openFile fn IO.ReadMode > contents <- IO.hGetContents handle > IO.hClose handle > return $ XP.xmlParse fn contents > > Sure, you can replace the openFile/hGetContents pair by readFile, but the > real problem is the presence of the hClose. Removing that will solve your > problem (but note that you now have no control over when the file is > actually closed). load fn = do handle <- IO.openFile fn IO.ReadMode contents <- IO.hGetContents handle let res = XP.xmlParse fn contents seq res $ IO.hClose handle -- maybe use deepSeq return $ res load fn = do handle <- IO.openFile fn IO.ReadMode contents <- IO.hGetContents handle let len = length contents seq len $ IO.hClose handle return $ XP.xmlParse fn contents Cheers, -- Stefan From taralx at gmail.com Sat Jan 6 13:15:59 2007 From: taralx at gmail.com (Taral) Date: Sat Jan 6 13:12:16 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: <20070104173126.GA5618@johann.karrmann.de> References: <20061227231119.0DAD912F411D@curlycoat> <87ac18khxj.fsf@szonett.ki.iif.hu> <45963CEC.8030007@dtek.chalmers.se> <20061231004452.C421D788216@labrador.eecs.harvard.edu> <459D187D.5070907@microsoft.com> <20070104173126.GA5618@johann.karrmann.de> Message-ID: On 1/4/07, Stefan Karrmann wrote: > My 2 cent: > > Why does seq not help? See code below. The short answer is because it only forces the head of the value, not the entire value. You need deepSeq for that. > load fn = do handle <- IO.openFile fn IO.ReadMode > contents <- IO.hGetContents handle > let len = length contents > seq len $ IO.hClose handle > return $ XP.xmlParse fn contents This works, because to get the head of len (an integer) you need the whole of contents. -- Taral "You can't prove anything." -- G?del's Incompetence Theorem From dominic.steinitz at blueyonder.co.uk Sun Jan 7 14:30:23 2007 From: dominic.steinitz at blueyonder.co.uk (Dominic Steinitz) Date: Sun Jan 7 14:21:48 2007 Subject: [Haskell] Fast Packed Strings Question Message-ID: <45A14A4F.7020803@blueyonder.co.uk> After a lay off from Haskell for a few months and preparatory to Hac 07, I thought I had better check my laptop was appropriately set up. However, I encountered the following: C:\Documents and Settings\Owner\crypto>Setup build Preprocessing library Crypto-3.1.0... Preprocessing executables for Crypto-3.1.0... Building Crypto-3.1.0... Data/Digest/SHA1.hs:36:17: Could not find module `Data.ByteString': it was found in multiple packages: fps-0.8 base What's the story with fast packed strings these days? Is it now part of base and I shouldn't have installed it? If not, can someone remind me how I hide the module in base? Thanks, Dominic. From allbery at ece.cmu.edu Sun Jan 7 14:28:14 2007 From: allbery at ece.cmu.edu (Brandon S. Allbery KF8NH) Date: Sun Jan 7 14:24:28 2007 Subject: [Haskell] Fast Packed Strings Question In-Reply-To: <45A14A4F.7020803@blueyonder.co.uk> References: <45A14A4F.7020803@blueyonder.co.uk> Message-ID: <499C521D-77D6-4CFC-A07A-9AF5692B1ED8@ece.cmu.edu> On Jan 7, 2007, at 14:30 , Dominic Steinitz wrote: > Data/Digest/SHA1.hs:36:17: > Could not find module `Data.ByteString': > it was found in multiple packages: fps-0.8 base > > What's the story with fast packed strings these days? > > Is it now part of base and I shouldn't have installed it? If not, > can someone remind me how I hide the module in base? Yes, it's in base-2.0 (GHC 6.6). ghc-pkg unregister fps-0.8 -- brandon s. allbery [linux,solaris,freebsd,perl] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH From simonmar at microsoft.com Mon Jan 8 07:37:17 2007 From: simonmar at microsoft.com (Simon Marlow) Date: Mon Jan 8 07:33:29 2007 Subject: [Haskell] ANNOUNCE: Happy version 1.16 Message-ID: ANNOUNCING Happy 1.16 - The LALR(1) Parser Generator for Haskell I'm pleased to announce version 1.16 of Happy, the parser generator system for Haskell. Changes from version 1.15 to 1.16 * Switch to a Cabal build system: you need a recent version of Cabal (1.1.6 or later). If you have GHC 6.4.2, then you need to upgrade Cabal before building Happy. GHC 6.6 is fine. * New %error directive * New production forms: {%% .. } and {%^ .. } * Added Attribute Grammar support, by Robert Dockins NOTE: Happy version 1.16 is required for building GHC version 6.6 and later. Happy is available in source form, which can be compiled with GHC version 5.04+, and we also provide binaries for some architectures. The Happy homepage with links to the various distributions lives at: http://www.haskell.org/happy/ Please send any bug reports and comments to simonmar@microsoft.com. From simonmarhaskell at gmail.com Mon Jan 8 07:51:09 2007 From: simonmarhaskell at gmail.com (Simon Marlow) Date: Mon Jan 8 07:47:24 2007 Subject: [Haskell] Re: ANNOUNCE: Happy version 1.16 In-Reply-To: References: Message-ID: <45A23E3D.3080900@microsoft.com> Simon Marlow wrote: > ANNOUNCING Happy 1.16 - The LALR(1) Parser Generator for Haskell > > I'm pleased to announce version 1.16 of Happy, the parser generator > system for Haskell. > > Changes from version 1.15 to 1.16 > > * Switch to a Cabal build system: you need a recent version of > Cabal (1.1.6 or later). If you have GHC 6.4.2, then you need to > upgrade Cabal before building Happy. GHC 6.6 is fine. > > * New %error directive > > * New production forms: {%% .. } and {%^ .. } > > * Added Attribute Grammar support, by Robert Dockins > > NOTE: Happy version 1.16 is required for building GHC version 6.6 and > later. Small clarification: in fact only Happy 1.15 is required to build GHC 6.6, but Happy 1.15 could not be built using GHC 6.6, so really 1.16/6.6 is the only compatible combination. Cheers, Simon From simonmar at microsoft.com Mon Jan 8 11:00:54 2007 From: simonmar at microsoft.com (Simon Marlow) Date: Mon Jan 8 10:57:05 2007 Subject: [Haskell] ANNOUNCE: Alex version 2.1.0 Message-ID: I am pleased to announce version 2.1.0 of Alex, the lexical analyser generator for Haskell. Changes in Alex 2.1.0 vs. 2.0.1: * Switch to a Cabal build system: you need a recent version of Cabal (1.1.6 or later). If you have GHC 6.4.2, then you need to upgrade Cabal before building Alex. GHC 6.6 is fine. * Slight change in the error semantics: the input returned on error is before the erroneous character was read, not after. This helps to give better error messages. Distributions can be obtained from Alex's home page: http://www.haskell.org/alex/ Alex is distributed under a BSD-style license. Cheers, Simon From sven.panne at aedion.de Mon Jan 8 12:25:55 2007 From: sven.panne at aedion.de (Sven Panne) Date: Mon Jan 8 12:22:03 2007 Subject: [Haskell] ANNOUNCE: Happy version 1.16 In-Reply-To: References: Message-ID: <200701081825.55253.sven.panne@aedion.de> FYI: I've just uploaded a binary RPM for openSUSE 10.2 (x86_64) and the corresponding source RPM. Currently I don't have access to openSUSE x86, but simply using rpmbuild -ba happy-1.16-1.src.rpm should build a 32bit RPM on those machines, at least if you have all necessary tools installed. The same holds for Alex 2.1.0, BTW. Cheers, S. From dons at cse.unsw.edu.au Mon Jan 8 19:42:04 2007 From: dons at cse.unsw.edu.au (Donald Bruce Stewart) Date: Mon Jan 8 19:38:19 2007 Subject: [Haskell] Haskell Weekly News: January 09, 2007 Message-ID: <20070109004204.GB22428@cse.unsw.EDU.AU> --------------------------------------------------------------------------- Haskell Weekly News http://sequence.complete.org/hwn/20070109 Issue 56 - January 09, 2007 --------------------------------------------------------------------------- Welcome to issue 56 of HWN, a weekly newsletter covering developments in the [1]Haskell community. More libraries and applications for the new year, and the Haskell Hackathon gets underway! 1. http://haskell.org/ Announcements Happy: LALR(1) parser generator. Simon Marlow [2]announced version 1.16 of [3]Happy, the parser generator system for Haskell. Changes from version 1.15 to 1.16 include switching to Cabal, a new %error directive, new production forms, and attribute grammar support. Happy version 1.16 is required for building GHC version 6.6 and later. 2. http://article.gmane.org/gmane.comp.lang.haskell.general/14726 3. http://www.haskell.org/happy/ Alex: lexical analyser generator. Simon Marlow [4]announced version 2.1.0 of [5]Alex. Changes in Alex 2.1.0 vs. 2.0.1 include switching to Cabal, and slight changes to the error semantics. 4. http://article.gmane.org/gmane.comp.lang.haskell.general/14728 5. http://www.haskell.org/alex/ rdtsc: reading IA-32 time register. Martin Grabmueller [6]announced version 1.0 of [7]package rdtsc has just been released. This small package contains one module called [8]'Rdtsc.Rdtsc', providing the function 'rdtsc' for accessing the 'rdtsc' machine register on modern IA-32 processors. This is a 64-bit counter which counts the number of processor cycles since the machine has been powered up. Using this instruction, you can make very precise time measurements which are independent of the actual CPU frequency. 6. http://article.gmane.org/gmane.comp.lang.haskell.cafe/18095/ 7. http://uebb.cs.tu-berlin.de/~magr/projects/rdtsc/ 8. http://uebb.cs.tu-berlin.de/~magr/darcs/rdtsc/ monadLib 3.0. Iavor Diatchki [9]announced a new version of [10]monadLib, a collection of standard monad implementations. Some of the changes compared to the previous version: the whole library is in a single module MonadLib.hs (~500 lines); simpler and more symmetric API; removed the (generic) monadic combinators; removed the search transformer; rewrote some transformers in the 'traditional' way (exceptions and output); there is an optional module that defines base monads corresponding to each transformer. 9. http://article.gmane.org/gmane.comp.lang.haskell.general/14714 10. http://www.csee.ogi.edu/~diatchki/monadLib Shellac 0.6. Robert Dockins [11]announced a simultaneously release of the following related packages: Shellac 0.6 Shellac-readline 0.3 and Shellac-vty 0.1. [12]Shellac is a framework for building read-eval-print style shells which uses configurable backend plugins. The major new feature of this release is the new Shellac-vty backend package, which uses the [13]new Vty library terminal I/O directly. It currently has basic line editing keybindings, paging, and a command history. The main package and Shellac-readline updates consist of minor API updates. 11. http://article.gmane.org/gmane.comp.lang.haskell.general/14715 12. http://www.eecs.tufts.edu/~rdocki01/shellac.html 13. http://members.cox.net/stefanor/vty/ IntelliJIDEA for Haskell. Tony Morris [14]announced syntax highlighting support for [15]Haskell in IntellijIDEA, released under a BSD licence. 14. http://article.gmane.org/gmane.comp.lang.haskell.general/14719 15. http://www.workingmouse.com/research/IntelliJIdea%2DHaskell/ Yampa + GADT for GHC 6.6. Joel Reymont [16]announced a cabalized [17]version of Yampa + GADT for GHC 6.6. Joel also sought comments on cabalisation, testing and example for this package. 16. http://article.gmane.org/gmane.comp.lang.haskell.cafe/18215 17. http://wagerlabs.com/yampa HNOP. Ashley Yakeley [18]updated the status of [19]HNOP, the Haskell library for doing nothing. It has recently been split into two Cabal packages: 'nop', a library of no-op services, and 'hnop', a program that uses nop to do nothing. Both packages can be found in darcs. The two packages are intended to be templates for Cabal projects, so I'm interested in making them as canonical and 'best practices' for packaging libraries and executables. 18. http://article.gmane.org/gmane.comp.lang.haskell.general/14720 19. http://semantic.org/hnop/ Haskell' This section covers the [20]Haskell' standardisation process. * [21]Rough draft of informal pattern-guard (qualifiers) explanations 20. http://hackage.haskell.org/trac/haskell-prime 21. http://article.gmane.org/gmane.comp.lang.haskell.prime/1982 Discussion instance Monad Set, using GADTs. Roberto Zunino [22]announced a definition of the Set datatype, with the usual operations, such that it can be made a member of the Monad class. 22. http://article.gmane.org/gmane.comp.lang.haskell.cafe/18118 GADTs are expressive. Jim Apple [23]described a data type which holds only those terms of the untyped lambda calculus that are reducible to normal form, using GADTs 23. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/18210/focus=18210 Hackage interface. Ross Paterson [24]set up (temporarily) a simple first cut at an [25]interface to the Hackage package database. On a related note, there was some [26]discussion for home pages for Hackage projects, and collecting statistics. 24. http://article.gmane.org/gmane.comp.lang.haskell.libraries/6025 25. http://ross-paterson.dyndns.org/~ross/hackage/ 26. http://article.gmane.org/gmane.comp.lang.haskell.libraries/6035 Conference roundup The Haskell Hackathon. Hac 2007 [27]is being held this week, January 10-12th, in Oxford, with around 20 Haskell coders from across the world gathering to hack on libraries and practical tools for Haskell. Work is planned for at least hackage, Cabal, bytestrings, binary IO, http, GHC, YHC, Hoogle, DrHaskell, WinHugs, GHCi debugger, crypto, QuickCheck 2, Haddock and more besides. Notably, some graduates from this year's Google Summer of Code projects will be attending, with plans to integrate their work into the main project branches. Happy hacking everyone! 27. http://haskell.org/haskellwiki/Hac_2007 Blog noise [28]Haskell news from the blogosphere. * [29]Liberating Myself from the von Neumann Style * [30]First impressions of Haskell: Whoa! * [31]Comparing Gzip Code Reduction * [32]Simple demonstration of Haskell FFI * [33]Does Functional Programming Matter? * [34]2006 in review * [35]Haskell script to replace tabs * [36]Functional programming is functional * [37]The shock of the forgotten * [38]Category theory * [39]Does Haskell need macros? * [40]On darcs * [41]Learning things * [42]Folds for imperative programmers * [43]Dammit all! I've been blubbed * [44]Getting started with installing third-party Haskell packages * [45]A Nice Way to Learn FP * [46]Learning Haskell * [47]Haskell and Eclipse * [48]Haskell and Eclipse: building a server executable * [49]What makes a programming language more productive? * [50]Composability and Productivity * [51]Arithmetic coding in Haskell * [52]A quick and dirty theorem prover in Haskell * [53]Haskell is Fun! * [54]2007, the year of software reliability? * [55]Haskell, bondage-and-discipline and separation-of-concerns programming * [56]Type systems as safety belts * [57]It's Haskell! * [58]Two promising Haskell projects: Vital and Pivot * [59]Exceptions and interrupts 28. http://planet.haskell.org/ 29. http://blogs.nubgames.com/code/?p=4 30. http://blogs.nubgames.com/code/?p=15 31. http://blogs.nubgames.com/code/?p=16 32. http://blog.acolyte.co.za/articles/2007/01/01/simple-demonstration-of-haskell-ffi 33. http://denkspuren.blogspot.com/2007/01/does-functional-programming-matter.html 34. http://koweynlg.blogspot.com/2006/12/state-of-thesis-2006-12-31.html 35. http://chill-yo.blogspot.com/2007/01/haskell-code-replace-tabs.html 36. http://gearon.blogspot.com/2006/10/functional-programming-is-functional.html 37. http://www.serpentine.com/blog/2007/01/01/the-shock-of-the-forgotten/ 38. http://comblog.net/hnbeck/archive/2007/01/05/2384.aspx 39. http://neilmitchell.blogspot.com/2007/01/does-haskell-need-macros.html 40. http://simulacra.in/2007/01/darcs/ 41. http://koweynlg.blogspot.com/2007/01/zommmmbieeee.html 42. http://blog.tmorris.net/folds-for-imperative-programmers/ 43. http://withoutane.com/rants/2007/01/damn-you-haskell 44. http://www.serpentine.com/blog/2007/01/05/getting-started-with-installing-third-party-haskell-packages/ 45. http://monadnation.blogspot.com/2007/01/nice-way-to-learn-fp.html 46. http://www.timeblog.net/2007/01/06/haskell/ 47. http://cohatoe.blogspot.com/2006/12/simple-example-walkthrough-ii.html 48. http://cohatoe.blogspot.com/2007/01/building-server-executable.html 49. http://kawagner.blogspot.com/2007/01/what-makes-programming-language-more.html 50. http://cogito.blogthing.com/2007/01/07/composablility-and-productivity/ 51. http://vandreev.wordpress.com/2007/01/07/arithmetic-coding/ 52. http://vandreev.wordpress.com/2006/12/24/quick-and-dirty-theorem-prover/ 53. http://onthebalcony.wordpress.com/2007/01/08/haskell-is-fun/ 54. http://jguk.org/2007/01/2007-year-of-software-reliability.html 55. http://syntaxfree.wordpress.com/2007/01/08/haskell-bondage-and-discipline-and-separation-of-concerns-programming/ 56. http://programming.reddit.com/info/xbc7/comments/cxfs0 57. http://e-scribe.com/news/322 58. http://factor-language.blogspot.com/2007/01/two-promising-haskell-projects.html 59. http://www.weaselhat.com/2007/01/08/exceptions-and-interrupts/ Quotes of the Week * Eric: The Haskell [code] contains no redundancy. In fact, in all the [Haskell] code I've written, in both production and play, each idea is expressed once and only once. It is the Zen ideal of perfect code. And thats never happened to me before. * nostrademons: Haskell is in a similar position [to Scala] - a complex language with many sustaining innovations - but it has one major disruptive innovation. Purity. Now, the question is whether that can be leveraged in a way that makes it useful in some market that existing imperative languages can't reach. My bets are on concurrency... * Excedrin: Isn't OO deprecated? * dpiponi: [monochrom] Nevermind monads. Use arrows. Come join the Dart Side! [dpiponi] Never mind arrows. Use comonads. Cojoin the other side. * nilsi: #haskell is better than Google * sigfpe: I think Haskell is a great language for short attention spans. You can get so much done in one line before you get bored. * timthelion: Oh wait, I LOVE foldr!! And I have only been learning Haskell for hours * kowey: All the things with guards are just there to siphon off the weirdos * Eric: [Haskell] astonishes me at every turn with its beauty and elegance. I've never felt such power. Haskell has brought back a joy in programming that I didnt even know I was missing. * Paul Johnson: Mutable state is actually another form of manual memory management: every time you over-write a value you are making a decision that the old value is now garbage, regardless of what other part of the program might have been using it. About the Haskell Weekly News Each week, new editions are posted to [60]the Haskell mailing list as well as to [61]the Haskell Sequence and [62]Planet Haskell. [63]RSS is also available, and headlines appear on [64]haskell.org. Headlines are available as [65]PDF. To help create new editions of this newsletter, please see the [66]contributing information. Send stories to dons at cse.unsw.edu.au. The darcs repository is available at darcs get [67]http://www.cse.unsw.edu.au/~dons/code/hwn 60. http://www.haskell.org/mailman/listinfo/haskell 61. http://sequence.complete.org/ 62. http://planet.haskell.org/ 63. http://sequence.complete.org/node/feed 64. http://haskell.org/ 65. http://www.cse.unsw.edu.au/~dons/code/hwn/archives/20070109.pdf 66. http://haskell.org/haskellwiki/HWN 67. http://www.cse.unsw.edu.au/~dons/code/hwn From sven.panne at aedion.de Tue Jan 9 11:56:53 2007 From: sven.panne at aedion.de (Sven Panne) Date: Tue Jan 9 11:53:07 2007 Subject: [Haskell] ANNOUNCE: Happy version 1.16 In-Reply-To: <200701081825.55253.sven.panne@aedion.de> References: <200701081825.55253.sven.panne@aedion.de> Message-ID: <200701091756.53657.sven.panne@aedion.de> Am Montag, 8. Januar 2007 18:25 schrieb Sven Panne: > FYI: I've just uploaded a binary RPM for openSUSE 10.2 (x86_64) and the > corresponding source RPM. Currently I don't have access to openSUSE x86, > but simply using > > rpmbuild -ba happy-1.16-1.src.rpm > > should build a 32bit RPM on those machines [...] Ooops, typo: One can use "rpmbuild --rebuild happy-1.16-1.src.rpm". Fixing the web pages, too... Cheers, S. From naesten at gmail.com Tue Jan 9 14:40:24 2007 From: naesten at gmail.com (Samuel Bronson) Date: Tue Jan 9 14:36:31 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: <20070105020527.4BB1A788320@labrador.eecs.harvard.edu> References: <20061227231119.0DAD912F411D@curlycoat> <87ac18khxj.fsf@szonett.ki.iif.hu> <45963CEC.8030007@dtek.chalmers.se> <20061231004452.C421D788216@labrador.eecs.harvard.edu> <459D187D.5070907@microsoft.com> <20070105020527.4BB1A788320@labrador.eecs.harvard.edu> Message-ID: On 1/4/07, Norman Ramsey wrote: > > There seems to be a misunderstanding here: readFile in itself is not the > > solution. readFile is defined thus: > > > > readFile name = openFile name ReadMode >>= hGetContents > > > > and the original code was this: > > > > load fn = do handle <- IO.openFile fn IO.ReadMode > > contents <- IO.hGetContents handle > > IO.hClose handle > > return $ XP.xmlParse fn contents > > > > Sure, you can replace the openFile/hGetContents pair by readFile, but the > > real problem is the presence of the hClose. Removing that will solve your > > problem (but note that you now have no control over when the file is > > actually closed). > > Can I just leave it hanging and rely on the garbage collector to close > it in the fullness of time? Actually, hGetContents closes the handle when it gets an EOF. If it never does get EOF (because you never use all of the data), the garbage collector *might* close the handle, but I haven't heard of a garbage collector that was aware of the value of resources other than RAM (that is, they don't go out of their way to run finalizers and free up handles to OS resources). Java has the same problem, though I'm not sure if its file handles *have* finalizers, and Python does too, except the refcounting in CPython right now hides it. From loeh at iai.uni-bonn.de Tue Jan 9 16:12:02 2007 From: loeh at iai.uni-bonn.de (Andres Loeh) Date: Tue Jan 9 16:01:09 2007 Subject: [Haskell] ANNOUNCE: lhs2tex-1.12 Message-ID: <20070109211202.GG11060@iai.uni-bonn.de> lhs2TeX version 1.12 ==================== We are pleased to announce a new release of lhs2TeX, a preprocessor to generate LaTeX code from literate Haskell sources. lhs2TeX includes the following features: * Highly customized output. * Liberal parser -- no restriction to Haskell 98. * Generate multiple versions of a program or document from a single source. * Active documents: call Haskell to generate parts of the document (useful for papers on Haskell). * A manual explaining all the important aspects of lhs2TeX. Changes (w.r.t. lhs2TeX 1.11) ----------------------------- * Compatible with ghc-6.6. * Compatible with cabal-1.1.6; traditional configure/make installation should still work. Thanks to Brian Smith for submitting a patch to improve the Cabal experience on Windows. Requirements and Download ------------------------- A source distribution is available from http://www.iai.uni-bonn.de/~loeh/lhs2tex/ It has been verified to build on Linux and MacOSX, but should also work on Windows. Binaries will be made available on request. You need a recent version of GHC (6.4.2 is tested, older versions might work) to build lhs2TeX, and, of course, you need a TeX distribution to make use of lhs2TeX's output. The program includes a configuration that is suitable for use with LaTeX. In theory, there should be no problem to generate code for other TeX flavors, such as plainTeX or ConTeXt. Happy lhs2TeXing, Andres Loeh and Ralf Hinze lhs2TeX@andres-loeh.de ralf@informatik.uni-bonn.de From Malcolm.Wallace at cs.york.ac.uk Wed Jan 10 05:01:22 2007 From: Malcolm.Wallace at cs.york.ac.uk (Malcolm Wallace) Date: Wed Jan 10 05:01:58 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: References: <20061227231119.0DAD912F411D@curlycoat> <87ac18khxj.fsf@szonett.ki.iif.hu> <45963CEC.8030007@dtek.chalmers.se> <20061231004452.C421D788216@labrador.eecs.harvard.edu> <459D187D.5070907@microsoft.com> <20070105020527.4BB1A788320@labrador.eecs.harvard.edu> Message-ID: <20070110100122.12ab1d34.Malcolm.Wallace@cs.york.ac.uk> "Samuel Bronson" wrote: > > Can I just leave it hanging and rely on the garbage collector to > > close it in the fullness of time? > > Actually, hGetContents closes the handle when it gets an EOF. > > If it never does get EOF (because you never use all of the data), the > garbage collector *might* close the handle, but I haven't heard of a > garbage collector that was aware of the value of resources other than RAM Actually, I'm pretty sure that most Haskell RTS implementations have a finalizer attached to all file handles. Once the file handle is no longer reachable from the program graph (even if its data has not been fully consumed), the GC will close the file (via the finalizer) before reaping the memory associated with the handle. Regards, Malcolm From sascha.boehme at gmx.de Wed Jan 10 09:33:44 2007 From: sascha.boehme at gmx.de (=?iso-8859-1?Q?=22Sascha_B=F6hme=22?=) Date: Wed Jan 10 09:29:48 2007 Subject: [Haskell] Haskell 98 syntax question Message-ID: <20070110143344.299650@gmx.net> Hello, referring to the Haskell 98 report as available in the Internet, I have a short question. Section 4.1.3 (Syntax of Class Assertions and Contexts) contains the rule: class -> qtycls tyvar | qtycls ( tyvar atype1 ... atypen ) (n>=1) Is there a (simple) practical example of a Haskell type expression using the second line of the above rule? Thanks a lot, Sascha -- Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! Ideal f?r Modem und ISDN: http://www.gmx.net/de/go/smartsurfer From stefanor at cox.net Wed Jan 10 10:10:10 2007 From: stefanor at cox.net (Stefan O'Rear) Date: Wed Jan 10 10:06:14 2007 Subject: [Haskell] Haskell 98 syntax question In-Reply-To: <20070110143344.299650@gmx.net> References: <20070110143344.299650@gmx.net> Message-ID: <20070110151010.GA2665@localhost.localdomain> On Wed, Jan 10, 2007 at 03:33:44PM +0100, "Sascha B?hme" wrote: > Hello, > > referring to the Haskell 98 report as available in the Internet, I have a short question. Section 4.1.3 (Syntax of Class Assertions and Contexts) contains the rule: > > class -> qtycls tyvar > | qtycls ( tyvar atype1 ... atypen ) (n>=1) > > Is there a (simple) practical example of a Haskell type expression using the second line of the above rule? Prelude> :t \a b -> (Control.Monad.Trans.lift a >> b) \a b -> (Control.Monad.Trans.lift a >> b) :: (Monad (t m), Control.Monad.Trans.MonadTrans t, Monad m) => m a -> t m b -> t m b From wlux at uni-muenster.de Wed Jan 10 10:28:19 2007 From: wlux at uni-muenster.de (Wolfgang Lux) Date: Wed Jan 10 10:24:19 2007 Subject: [Haskell] Haskell 98 syntax question In-Reply-To: <20070110143344.299650@gmx.net> References: <20070110143344.299650@gmx.net> Message-ID: <2749D8BD-C310-4EDA-B46A-59A9604734CA@uni-muenster.de> Sascha B?hme wrote: > Hello, > > referring to the Haskell 98 report as available in the Internet, I > have a short question. Section 4.1.3 (Syntax of Class Assertions > and Contexts) contains the rule: > > class -> qtycls tyvar > | qtycls ( tyvar atype1 ... atypen ) (n>=1) > > Is there a (simple) practical example of a Haskell type expression > using the second line of the above rule? If you read a little bit further, you'll find the type (Eq (f a), Functor f) => (a -> b) -> f a -> f b -> Bool in Sect 4.1.4. Another example can be found in Sect. 4.5.3: f :: (Monad m, Eq (m a)) => a -> m a -> Bool f x y = return x == y Regards Wolfgang From naesten at gmail.com Thu Jan 11 00:05:09 2007 From: naesten at gmail.com (Samuel Bronson) Date: Thu Jan 11 00:01:11 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: <20070110100122.12ab1d34.Malcolm.Wallace@cs.york.ac.uk> References: <20061227231119.0DAD912F411D@curlycoat> <87ac18khxj.fsf@szonett.ki.iif.hu> <45963CEC.8030007@dtek.chalmers.se> <20061231004452.C421D788216@labrador.eecs.harvard.edu> <459D187D.5070907@microsoft.com> <20070105020527.4BB1A788320@labrador.eecs.harvard.edu> <20070110100122.12ab1d34.Malcolm.Wallace@cs.york.ac.uk> Message-ID: On 1/10/07, Malcolm Wallace wrote: > "Samuel Bronson" wrote: > > > > Can I just leave it hanging and rely on the garbage collector to > > > close it in the fullness of time? > > > > Actually, hGetContents closes the handle when it gets an EOF. > > > > If it never does get EOF (because you never use all of the data), the > > garbage collector *might* close the handle, but I haven't heard of a > > garbage collector that was aware of the value of resources other than RAM > > Actually, I'm pretty sure that most Haskell RTS implementations have a > finalizer attached to all file handles. Once the file handle is no > longer reachable from the program graph (even if its data has not been > fully consumed), the GC will close the file (via the finalizer) before > reaping the memory associated with the handle. Yeah, what I mean is that the garbage collector does not *look* for unreachable filehandles to close, or get run when many filehandles have been allocated. It only runs finalizers when it happens upon things with finalizers, it doesn't have any idea what they are for. From simonpj at microsoft.com Thu Jan 11 07:29:52 2007 From: simonpj at microsoft.com (Simon Peyton-Jones) Date: Thu Jan 11 07:25:54 2007 Subject: [Haskell] Beautiful concurrency: Santa Claus v2 Message-ID: Friends I had lots of useful feedback about my paper "Beautiful concurrency"; thank you. I've revised it quite heavily, and have just put up a revised draft, Version 2. If you want to take a look, either for the first time, or to see what I've done in response to your suggestions, look here: http://haskell.org/haskellwiki/Talk:SantaClausProblemV2 The code is online there too. If you give your real name somewhere in your text (or email it to me), I'll add you to the acknowledgements at the end of the chapter. I'm missing some from the previous Talk page; notably, I'd like to acknowledge Steven807, Tibbe, Fanf, Garious, Rycee, Brecknell, Mvanier, Gaal, Fernando, Gknauth, EngineerScotty, BoAdler. If you'd like a mention, let me know who you are. Thanks again for your input. I must do this with all my papers! Simon From sven.panne at aedion.de Thu Jan 11 11:36:10 2007 From: sven.panne at aedion.de (Sven Panne) Date: Thu Jan 11 11:32:09 2007 Subject: [Haskell] Re: state of HaXml? In-Reply-To: References: <20061227231119.0DAD912F411D@curlycoat> <20070110100122.12ab1d34.Malcolm.Wallace@cs.york.ac.uk> Message-ID: <200701111736.10450.sven.panne@aedion.de> Am Donnerstag, 11. Januar 2007 06:05 schrieb Samuel Bronson: > Yeah, what I mean is that the garbage collector does not *look* for > unreachable filehandles to close, or get run when many filehandles > have been allocated. It only runs finalizers when it happens upon > things with finalizers, it doesn't have any idea what they are for. What could actually be done for open(2) and similar OS calls is that in case of an EMFILE/ENFILE error condition "enough" GC is triggered that unused file handles are closed, and then the open(2) is retried. This does not solve all problems mentioned, but is a step into the right direction. Memory should not be the only resource GC cares about... Cheers, S. From nrkaushik at scu.edu Fri Jan 12 19:22:51 2007 From: nrkaushik at scu.edu (Neena Kaushik) Date: Fri Jan 12 19:19:13 2007 Subject: [Haskell] Accessing files without typing the entire path name Message-ID: <45A7B5DB020000EF00005B56@gwia2.scu.edu> Hello, I am trying to set up the hugs search path so that all the files from a particular directory can be loaded without giving the entire path name. I tried the following Hugs.Base> :set -P.:{Home}/lib/hugs/packages/*:/usr/local/lib/hugs/packages/*:{Hugs}/libraries:{Hugs}/packages/*:{Hugs}/oldlib:/home/nkaushik/coen70/lab1 Hugs.Base> :load lab1.hs Error - Unable to open file "lab1.hs" Hugs.Base> :load /home/nkaushik/coen70/lab1/lab1.hs Main> Could someone please help me ? Thanks. Regards, Neena Kaushik From ville.v.nurmi at helsinki.fi Fri Jan 12 08:12:47 2007 From: ville.v.nurmi at helsinki.fi (Ville Nurmi) Date: Mon Jan 15 07:19:30 2007 Subject: [Haskell] ESSLLI 2007 Student Session - Final Call for Papers Message-ID: [Our apologies for multiple postings of this announcement.] ESSLLI 2007 STUDENT SESSION FINAL CALL FOR PAPERS August 6-17 2007, Dublin, Ireland Deadline: February 11, 2007 http://www.loria.fr/~sustreto/stus07/ We are pleased to announce the Student Session of the 19th European Summer School in Logic, Language and Information, which will be held in Dublin, Ireland on August 6-17, 2007. We invite submission of papers in the areas of Logic, Language and Computation for presentation at the Student Session and for appearance in the proceedings. AIM Student Session exists to bring together young researchers to present and discuss their work in progress with a possibility to get feedback from senior researchers. SUBMISSION Only original publications are accepted, previous published works are not allowed. All authors of the paper must be students: undergraduate (before the completion of the Masters degree) or graduate (before the completion of the PhD degree). Papers can be submitted either for oral (20min talk+10 min discussion), or poster presentation. There are three subject areas: Logic and Language (lola), Language and Computation (laco) and Logic and Computation (loco). The submissions should be sent by email before 11 February 2007 to dmitry.sustretov@loria.fr (the message should have subject "ESSLLI STUS submission") along with an identification file in plain text of the following format: Title: title of the submission First author: firstname lastname Affiliation: affiliation of the first author E-mail: e-mail of the first author ...... Last author: firstname lastname Affiliation: affiliation of the last author E-mail: e-mail of the last author Abstract: (5 lines) Subject area: Logic and Language or Language and Computation or Logic and Computation Modality: Poster or Oral The submission should be in one of the following formats: PostScript, PDF or RTF. (In case of acceptance, the final version of the paper will have to be submitted in LaTeX format.) The papers must use single column A4 size pages, 11pt or 12pt fonts, and standard margins, and may not exceed 7 pages of length exclusive of references. The paper and identification file should be named by the following convention: category-modality-last name(s) of author(s) (for example, "loco-oral-martin.pdf" and "loco-oral-martin.txt"). At least one of the authors of the paper must register as a participant of ESSLLI. Accepted papers will be published in the proceedings which will be available during ESSLLI. TIMELINE Submission deadline: February 11, 2007 Notification of authors: April 20, 2007 Full paper deadline: May 20, 2007 ESSLLI: August 6-17, 2007 PROGRAM COMMITTEE Chairs: Ville Nurmi, University of Helsinki Dmitry Sustretov, LORIA Area experts: Paul Buitelaar (Language & Computation) Valentin Goranko (Logic & Computation) Carl Pollard (Logic & Language) Co-chairs: Logic & Computation Bryan Renne, City University of New York Levan Uridia, University of Amsterdam Language & Computation Luciana Benotti, INRIA Lorraine Michael Kaisser, University of Edinburgh Logic & Language Jana H?ussler, University of Konstanz Miltiadis Kokkonidis, University of Oxford CONTACT The Student Session webpage is the place for relevant information. http://www.loria.fr/~sustreto/stus07/ Feel free to contact the chairs for any questions about the submissions or the Student Session in general. Ville Nurmi Phone: +358 9 191 51497 Fax: +358 9 191 51400 E-mail: ville.v.nurmi@helsinki.fi Dmitry Sustretov Phone: +33 3 83 59 20 35 Fax: +33 3 83 41 30 79 E-mail: dmitry.sustretov@loria.fr From kh at dcs.st-and.ac.uk Mon Jan 15 10:09:50 2007 From: kh at dcs.st-and.ac.uk (Kevin Hammond) Date: Mon Jan 15 10:09:43 2007 Subject: [Haskell] Postdoctoral Research Fellow at St Andrews Message-ID: I have a vacancy for a postdoctoral research fellow, working with the Hume language developed jointly with Heriot-Watt University (http://www.hume-lang.org). Knowledge of Haskell and other functional programming technologies is a distinct advantage. Please do forward to anyone who may be interested, and please let me know if you intend to make a late application or if you see this late (the deadline is January 17th, but I may need to extend this). Note that the Human Resources department has only listed the lower salary level on the research fellow scale: my understanding is that there is in fact a range. Best Wishes, Kevin University of St Andrews, School of Computer Science ========================================= Postdoctoral Research Fellow in Worst-Case Execution Time Analysis for Embedded Software Salary - ?26,915+ pa(*) Applications are invited from well-qualified individuals. The post involves the development of static analyses of worst-case time behaviour for embedded software, working on industrial/EU projects as part of the internationally recognised functional programming group at the University of St Andrews. Appointments will be made for one year in the first instance, with a possibility of extension based on pending funding applications. The start date will be 1 March 2007, or as soon as possible thereafter. Informal enquiries to: Dr Kevin Hammond, email: kh8@cs.st-and.ac.uk * Salary is subject to confirmation under the new Framework Agreement. Please quote ref: SK109/06 Closing Date: 17 January 2007 Application forms and further particulars are available from Human Resources, University of St Andrews, College Gate, North Street, St Andrews, Fife KY16 9AJ, (tel: 01334 462571, by fax 01334 462570 or by e-mail Jobline@st-andrews.ac.uk. ?The advertisement and further particulars can be viewed at http://www.st-andrews.ac.uk/hr/recruitment/vacancies. ? The University is committed to equality of opportunity. http://www.st-andrews.ac.uk/hr/recruitment/vacancies/vacancy-list -- In accordance with University policy on electronic mail, this email reflects the opinions of the individual concerned, may contain confidential or copyright information that should not be copied or distributed without permission, may be of a private or personal nature unless explicitly indicated otherwise, and should not under any circumstances be taken as an official statement of University policy or procedure (see http://www.st-and.ac.uk). From kr.angelov at gmail.com Mon Jan 15 12:24:24 2007 From: kr.angelov at gmail.com (Krasimir Angelov) Date: Mon Jan 15 12:20:21 2007 Subject: [Haskell] ANNOUNCE hscom library Message-ID: Hello all, I have created darcs repository for my hscom library at: http://darcs.haskell.org/packages/hscom/ This is a FFI library for Microsoft COM. It is far from complete and it doesn't have automatic IDL->Haskell translator but if you have ever thought to start writing you own COM library for Haskell then please take a look. Maybe you will find it useful and you might be willing to extend it. It is designed to be as close as possible to the standard FFI library for C. That helps to reuse the existing library as much as possible and to keep the new library as small as possible. Cheers, Krasimir From mads_lindstroem at yahoo.dk Tue Jan 16 17:07:44 2007 From: mads_lindstroem at yahoo.dk (Mads =?ISO-8859-1?Q?Lindstr=F8m?=) Date: Tue Jan 16 17:01:34 2007 Subject: [Haskell] Capturing output from System.system Message-ID: <1168985265.4553.8.camel@localhost.localdomain> Hi All Haskeleers The function System.system (:: String -> IO ExitCode) makes the OS execute it first parameter as a command. It prints its output to standard output and standard error. How do I easily capture this output? /Mads Lindstr?m From bos at serpentine.com Tue Jan 16 17:29:11 2007 From: bos at serpentine.com (Bryan O'Sullivan) Date: Tue Jan 16 17:24:55 2007 Subject: [Haskell] Capturing output from System.system In-Reply-To: <1168985265.4553.8.camel@localhost.localdomain> References: <1168985265.4553.8.camel@localhost.localdomain> Message-ID: <45AD51B7.50005@serpentine.com> Mads Lindstr?m wrote: > The function System.system (:: String -> IO ExitCode) makes the OS > execute it first parameter as a command. It prints its output to > standard output and standard error. > > How do I easily capture this output? There's Jens-U Petersen's rather old popenhs module, which you could dust off and use: http://www.haskell.org/~petersen/haskell/popenhs/ References: <1168985265.4553.8.camel@localhost.localdomain> Message-ID: Sorry Mads for multiple copies. On 16/01/07, Mads Lindstr?m wrote: > The function System.system (:: String -> IO ExitCode) makes the OS > execute it first parameter as a command. It prints its output to > standard output and standard error. > > How do I easily capture this output? Try System.Process.runInteractiveCommand: import System.Process import System.IO main = do (inH, outH, errH, _) <- runInteractiveCommand "wc -w" hPutStr inH "foo bar baz" ws <- hGetContents outH putStrLn ws -- Prints 3 -- -David House, dmhouse@gmail.com From wferi at niif.hu Wed Jan 17 04:13:22 2007 From: wferi at niif.hu (Ferenc Wagner) Date: Wed Jan 17 04:09:09 2007 Subject: [Haskell] Re: Capturing output from System.system In-Reply-To: (David House's message of "Tue, 16 Jan 2007 22:34:30 +0000") References: <1168985265.4553.8.camel@localhost.localdomain> Message-ID: <87sleahv7x.fsf@tac.ki.iif.hu> "David House" writes: > Sorry Mads for multiple copies. > > On 16/01/07, Mads Lindstr?m wrote: > >> The function System.system (:: String -> IO ExitCode) makes the OS >> execute it first parameter as a command. It prints its output to >> standard output and standard error. >> >> How do I easily capture this output? > > Try System.Process.runInteractiveCommand: > > import System.Process > import System.IO > > main = do > (inH, outH, errH, _) <- runInteractiveCommand "wc -w" > hPutStr inH "foo bar baz" > ws <- hGetContents outH > putStrLn ws > > -- Prints 3 Beware, deadlocks ahead. See: http://www.haskell.org/pipermail/libraries/2006-December/006635.html http://www.haskell.org/pipermail/haskell-cafe/2006-December/020528.html -- Feri. From conal at conal.net Wed Jan 17 04:15:33 2007 From: conal at conal.net (Conal Elliott) Date: Wed Jan 17 04:11:17 2007 Subject: [Haskell] ANNOUNCE: DeepArrow 0.0 -- Arrows for "deep application" Message-ID: I'm happy to announce the birth of DeepArrow, a Haskell library for composable "editors" of pure values. DeepArrow enables "deep function application" in two senses: deep application of functions and application of deep functions. These tools generalize beyond values and functions, via the DeepArrow subclass of the Arrow type class. Please see the project page at http://haskell.org/haskellwiki/DeepArrow . Cheers, - Conal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20070117/517254a8/attachment.htm From conal at conal.net Wed Jan 17 04:17:33 2007 From: conal at conal.net (Conal Elliott) Date: Wed Jan 17 04:13:37 2007 Subject: [Haskell] ANNOUNCE: Phooey 0.1 -- Functional user interface library Message-ID: I've just release version 0.1 of Phooey, an arrow-based functional user interface library. Please see the new project page at http://haskell.org/haskellwiki/phooey . What's new in version 0.1: - Relocated, improved & wikified home page, with new section on Motivation. - Text input (textEntry) - Boolean input/output (checkBoxEntry, checkBoxDisplay) - Switched from monadLib to mtl, for easier installation - Web-located references to other libraries (base, mtl, arrows.) - Colorized source code links (thanks to hscolour). - Docs have "User Comments" links, for adding add comments and questions. - Phooey is now used in TV: http://haskell.org/haskellwiki/TV . Cheers, - Conal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20070117/1631ce50/attachment.htm From conal at conal.net Wed Jan 17 04:18:29 2007 From: conal at conal.net (Conal Elliott) Date: Wed Jan 17 04:14:12 2007 Subject: [Haskell] ANNOUNCE: TV 0.0 -- Tangible Values / composable interfaces Message-ID: I'm happy to announce the birth of *TV*, a library for composing *tangible values* ("TVs"), i.e., values that carry along external interfaces. In particular, TVs can be composed to create new TVs, *and* they can be directly executed with a friendly GUI, a process that reads and writes character streams, or many other kinds interfaces. Values and interfaces are *combined* for direct use, and *separable* for composability. Please see the project page at http://haskell.org/haskellwiki/TV . TV makes use of the DeepArrow and Phooey libraries. Cheers, - Conal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20070117/d7e6ad30/attachment-0001.htm From tomasz.zielonka at gmail.com Wed Jan 17 07:22:25 2007 From: tomasz.zielonka at gmail.com (Tomasz Zielonka) Date: Wed Jan 17 07:18:12 2007 Subject: [Haskell] ANNOUNCE: Phooey 0.1 -- Functional user interface library In-Reply-To: References: Message-ID: <20070117122225.GB19663@lambda> On Wed, Jan 17, 2007 at 01:17:33AM -0800, Conal Elliott wrote: > - Phooey is now used in TV: http://haskell.org/haskellwiki/TV . Is this so that you can use this famous advertising phrase: "as seen on TV", ehm..., "... in TV" ;-) Best regards Tomasz From pirelo at googlemail.com Wed Jan 17 10:35:46 2007 From: pirelo at googlemail.com (Pablo Nogueira) Date: Wed Jan 17 10:31:27 2007 Subject: [Haskell] A question about a possible bug in GHC regarding GADTs and type classes Message-ID: Hi, I've been told the following short code is correct but it's GHC's fault it does not type check. Is that the case? -- {-# OPTIONS -fglasgow-exts #-} -- An expression GADT: data Exp :: * -> * where LitNum :: Num a => a -> Exp a LitBool :: Bool -> Exp Bool Plus :: Num a => Exp a -> Exp a -> Exp a And :: Exp Bool -> Exp Bool -> Exp Bool If :: Exp Bool -> Exp a -> Exp a -> Exp a -- An expression evaluator: evalExp :: Exp a -> a evalExp (LitNum i) = i evalExp (LitBool b) = b evalExp (Plus x y) = evalExp x + evalExp y evalExp (And x y) = evalExp x && evalExp y evalExp (If c t e) = if (evalExp c) then (evalExp t) else (evalExp e) -- The type checker complains that evalExp needs a Num constraint on its type signature. This can't be right, for Bool is not an instance of Num, right? Is it the case that the interaction between GADTs and type classes is not fully worked out yet? Here is a related problem. I'd like to make the types of expressions extensible by using a type class: -- class TyRange a instance TyRange Int instance TyRange Bool data Exp :: * -> * where Lit :: TyRange a => a -> Exp a Plus :: Exp Int -> Exp Int -> Exp Int And :: Exp Bool -> Exp Bool -> Exp Bool If :: TyRange a => Exp Bool -> Exp a -> Exp a -> Exp a But I cannot add the types in other classes into TyRange in modular fashion, cause the superclass is specified at the moment of declaration. I may try to extend TyRange by adding the instances in, say, Num: -- {-# OPTIONS -fglasgow-exts #-} {-# OPTIONS -fallow-undecidable-instances #-} class TyRange a instance TyRange Bool instance Num a => TyRange a data Exp :: * -> * where Lit :: TyRange a => a -> Exp a Plus :: Exp Int -> Exp Int -> Exp Int And :: Exp Bool -> Exp Bool -> Exp Bool If :: TyRange a => Exp Bool -> Exp a -> Exp a -> Exp a evalExp :: Exp a -> a evalExp (Lit i) = i evalExp (Plus x y) = evalExp x + evalExp y evalExp (And x y) = evalExp x && evalExp y evalExp (If c t e) = if (evalExp c) then (evalExp t) else (evalExp e) -- But I get the following error when evaluating evalExp (If (Lit True) (Lit 1) (Lit 2)) Overlapping instances for TyRange Bool arising from use of `Lit' at :1:13-15 Matching instances: /home/pni/Papers/EDT/TyRangeProblem.hs:5:0: instance TyRange Bool /home/pni/Papers/EDT/TyRangeProblem.hs:4:0: instance (Num a) => TyRange a In the first argument of `If', namely `(Lit True)' In the first argument of `evalExp', namely `(If (Lit True) (Lit 1) (Lit 2)) Apologies for being so daft, but why are the instances overlapping if Bool is not in Num? From icfp.publicity at googlemail.com Wed Jan 17 17:02:46 2007 From: icfp.publicity at googlemail.com (Matthew Fluet (ICFP Publicity Chair)) Date: Wed Jan 17 16:58:33 2007 Subject: [Haskell] ICFP07 Call for Papers Message-ID: <53ff55480701171402m7be47ff6j7b1063fdccf25bca@mail.gmail.com> Call for Papers ICFP 2007: International Conference on Functional Programming Freiburg, Germany, 1-3 October 2007 ICFP 2007 seeks original papers on the art and science of functional programming. Submissions are invited on all topics from principles to practice, from foundations to features, from abstraction to application. The scope includes all languages that encourage functional programming, including both purely applicative and imperative languages, as well as languages with objects and concurrency. Particular topics of interest include * Applications and domain-specific languages: systems programming; scientific and numerical computing; symbolic computing; artificial intelligence; databases; graphical user interfaces; multimedia programming; scripting; system administration; distributed-systems and web programming; XML processing; security * Foundations: formal semantics; lambda calculus; type theory; monads; continuations; control; state; effects * Design: algorithms and data structures; modules; type systems; concurrency and distribution; components and composition; relations to object-oriented or logic programming * Implementation: abstract machines; compile-time and run-time optimization; just-in-time compilers; memory management; parallel hardware; interfaces to foreign functions, services, components or low-level machine resources * Transformation and analysis: abstract interpretation; partial evaluation; program transformation * Software-development techniques: design patterns; specification; verification; validation; debugging; test generation; tracing; profiling * Practice and experience: novel results drawn from experience in education or industry * Functional pearls: elegant, instructive examples of functional programming A functional pearl need not report original research results, but it must be instructive, elegant, and fun. ICFP 2007 also seeks Experience Reports. An Experience Report is a short paper (2-4 pages) which need not present novel results, but which should provide evidence that functional programming really works or should describe obstacles that prevented it from working. Detailed guidelines appear below. What's new this year? ~~~~~~~~~~~~~~~~~~~~~ Experienced ICFP authors may want to pay special attention to the points below, which are new this year. * Double-blind review * Author-date citations * Supplemental material in a separate document, not appended to the main text * Morning deadline (but equivalent to late afternoon or early evening in many time zones of interest) * Experience Reports Instructions for authors ~~~~~~~~~~~~~~~~~~~~~~~~ By 11:00 AM Friday, 6 April 2007, Samoan time, submit an abstract of at most 300 words and a full paper of at most 12 pages or an Experience Report of at most 4 pages. Submissions will be accepted electronically, at a URL to be named later. The deadline is set at Samoan time, so if your submission is in by 11:00 AM Friday according to your local time, wherever you are, the submission will be on time. The world clock at http://www.timeanddate.com/worldclock/fixedtime.html?month=4&day=6&year=2007&hour=11&min=0&sec=0&p1=282 can give you the equivalent in your local time, e.g., 3:00 PM Friday in Portland, 6:00 PM Friday in Boston, and midnight Friday in Freiburg. The deadline is firm. Your submission should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, explaining why it is significant, and comparing it with previous work. Make the technical content understandable to a broad audience. Each submission must adhere to SIGPLAN's republication policy, which appears in full at http://www.acm.org/sigplan/republicationpolicy.htm. The policy means in part that your paper may not have already appeared in a journal, conference, or workshop with published proceedings; that you may not submit substantially the same work simultaneously to ICFP and to another venue; and that your submission must discuss any closely related material, including your own, that was previously accepted at a journal, conference, or workshop with or without published proceedings. Full details of the policy are available at the SIGPLAN site. If you are in any doubt about whether this policy applies to your paper, either consult the program chair in advance or notify the chair when you submit. To do otherwise risks summary rejection of your submission. If your submission is accepted, you must assign copyright to ACM. Proceedings will be published by the ACM Press. Double-blind review ~~~~~~~~~~~~~~~~~~~ To increase confidence in the fairness and objectivity of the reviewing process, reviewing will be double blind. Make it possible for reviewers to evaluate your paper without having to know who you are. It should suffice to omit your names from your submission and to avoid revealing your identity through citation; detailed guidelines are available at http://icfp07.eecs.harvard.edu/blind.html. Formatting ~~~~~~~~~~ Your submission must be printable on US Letter sized paper and be either PDF or PostScript that is interpretable by Ghostscript. If this requirement is a hardship, make contact with the program chair at least one week before the deadline. Your submission must be at most 12 pages (4 pages for an Experience Report), including bibliography and figures, in the standard ACM conference format: two columns, nine-point font on a ten-point baseline, with pages 20pc (3.33in) wide and 54pc (9in) tall, with a column gutter of 2pc (0.33in). (A suitable LaTeX class file is available from SIGPLAN; see http://www.acm.org/sigs/sigplan/authorInformation.htm. Categories, keywords, and so on are optional.) If you wish to supply material beyond the 12-page limit, up to and including a full technical report, you may attach a separate document to your submission, on the understanding that reviewers are not expected to read it. (As a particular example, if you feel that your submission should be supported by a lengthy technical report, do not cite such a technical report on the web, since doing so would reveal your identity. Please instead attach that report to your submission.) Detailed instructions for attaching supplementary documents will be available on the submission web site. The length limit is firm; submissions that do not meet these guidelines will not be considered. Citation ~~~~~~~~ We recommend (but do not require) that you put your citations into author-date form. This procedure makes your paper easier to review. For example, if you cite a result on testing as ``(Claessen and Hughes 2000)'', many reviewers will recognize the result instantly. On the other hand, if you cite it as ``[4]'', even the best-informed reviewer has to page through your paper to find the reference. By using author-date form, you enable a knowledgeable reviewer to focus on content, not arbitrary numbering of references. LaTeX users can simply use the natbib package along with the plainnat bibliography style. Author response ~~~~~~~~~~~~~~~ You will have a 48-hour period (11:00 23 May to 11:00 25 May 2007 Samoa time) to read and respond to reviews. Details of the author-response process will be available as it approaches. Special categories of papers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In addition to research papers, ICFP solicits two kinds of papers that do not require original research contributions: functional pearls, which are full papers, and Experience Reports, which are limited to four pages. Authors submitting such papers may wish to consider the following advice. Functional pearls ~~~~~~~~~~~~~~~~~ To paraphrase both Jon Bentley and Richard Bird, the ideal pearl goes beyond solid engineering into the realm of insight and creativity. Just as a natural pearl grows from a grain of sand that has irritated an oyster, a topnotch functional pearl should grow from a real problem that has irritated a programmer. A pearl should be polished, elegant, instructive, and entertaining. Ideally it should teach important programming techniques and fundamental design principles. Past pearls have included instructive examples of program calculation or proof, nifty presentations of old or new data structures, and interesting applications and programming techniques. Papers submitted to ICFP as pearls often miss the mark, by being too trivial, too complicated, or somehow not quite the elegant solution one hopes for. The key to an accepted pearl is polishing. Your pearl is likely to be rejected if your readers get bored, if the material gets too complicated, if too much specialized knowledge is needed, or if the writing is distasteful. Richard Bird advises: * Throw away the rule book for writing research papers. * Get in quick; get out quick. * Be self-contained; don't go deep into related work, with lengthy references. * You are telling a story, so some element of surprise is welcome. * Above all, be engaging. * Give a talk on the pearl to non-specialists, your students, or your department. If you changed the order of presentation for the talk, consider using the new order in the next draft. * Put the pearl away for a while, then take it out and polish it again. Experience reports ~~~~~~~~~~~~~~~~~~ ICFP has long solicited submissions on the practice and experience of functional programming. But reports of experience are inherently different from research papers, and when judged by the criteria of scientific merit, novelty, or research contribution, they have not competed well against traditional ICFP submissions. Yet we believe that the functional- programming community would benefit from being able to draw on and cite the experience of others. For this reason, we have introduced the ICFP Experience Report. Unlike a normal ICFP paper, the purpose of an Experience Report is not to add to the body of knowledge of the functional-programming community. Rather, the purpose of an Experience Report is to help create a body of published, refereed, citable *evidence* that functional programming really works---or to describe obstacles that prevented it from working. An Experience Report is distinguished from a normal ICFP paper by its title, by its length, and by the criteria used to evaluate it. * Both in the proceedings and in any citations, the title of each accepted Experience Report must begin with the words "Experience Report", followed by a colon. * Experience Reports are limited in length: the suggested length is 2 pages and the maximum length is 4 pages. Each accepted Experience Report will be presented at the conference, but depending on the number of Experience Reports and regular papers accepted, authors of Experience Reports may be asked to give shorter talks. * Because the purpose of Experience Reports is to enable our community to accumulate a published, citable body of evidence about the efficacy of functional programming, an acceptable Experience Report need not present novel results or conclusions. It is sufficient if the Report states a clear thesis and provides supporting evidence. The thesis must be relevant to ICFP, but it need not be novel. The program committee will accept or reject Experience Reports based on whether they judge the evidence to be convincing. Anecdotal evidence will be acceptable provided it is well argued and the author explains what efforts were made to gather as much evidence as possible. The committee will be especially convinced by evidence that includes *comparisons* of situations before and after the introduction or discontinuation of functional programming. Evidence drawn from a single person's experience may be sufficient, but more weight will be given to evidence drawn from the experience of groups of people. Possible topics for an Experience Report include, but are not limited to * Insights gained from real-world projects using functional programming * Comparison of functional programming with conventional programming in the context of an industrial project or a university curriculum * Project-management, business, or legal issues encountered when using functional programming in a real-world project * Curricular issues encountered when using functional programming in education * Real-world constraints that created special challenges for an implementation of a functional language or for functional programming in general An Experience Report should be short and to the point: if functional programming worked for you in the same ways it has worked for others, you need only to summarize the results---the main part of your paper should discuss how well it worked and in what context. Most readers will not want to know all the details of your project and its implementation, but please characterize your project and its context well enough so that readers can judge to what degree your experience is relevant to their own projects. Be especially careful to highlight any unusual aspects of your project. Also keep in mind that specifics about your project are more valuable than generalities about functional programming; for example, it is more valuable to say that your team delivered its software a month ahead of schedule than it is to say that functional programming made your team more productive. If your paper not only describes experience but also presents new technical results, or if your experience refutes cherished beliefs of the functional-programming community, you may be better off submitting it as a full paper, which will be judged by the usual criteria of novelty, originality, and relevance. If you unsure in which category to submit, the program chair will be happy to help you decide. Other information ~~~~~~~~~~~~~~~~~ Conference Chair ~~~~~~~~~~~~~~~~ Ralf Hinze (Universit?t Bonn) Program Chair ~~~~~~~~~~~~~ Norman Ramsey Harvard University Cambridge, MA, 02148 USA Email: icfp07@eecs.harvard.edu Phone: +1 617 496 8615 Mail sent to the address above is filtered for spam. If you send mail and do not receive a prompt response, particularly if the deadline is looming, feel free to telephone and reverse the charges. Program Committee ~~~~~~~~~~~~~~~~~ Nick Benton (Microsoft Research) Matthew Fluet (Toyota Technological Institute) Jeremy Gibbons (University of Oxford) Kevin Hammond (University of St Andrews) Bastiaan Heeren (Utrecht University) Graham Hutton (University of Nottingham) Mark P. Jones (Portland State University) Gabriele Keller (University of New South Wales) Fabrice Le Fessant (INRIA/LIX, France) Todd Millstein (UCLA) Mike Sperber (DeinProgramm) Christopher A. Stone (Harvey Mudd College) Andrew Tolmach (Portland State University and INRIA Rocquencourt) Janis Voigtl?nder (Technische Universit?t Dresden) Stephanie Weirich (University of Pennsylvania) Important Dates ~~~~~~~~~~~~~~~ Submission: 11:00 6 April 2007, Samoa time (AST) Author response: 11:00 23 May to 11:00 25 May 2007 (AST) Notification: 8 June 2007 Final papers due: 20 July 2007 ICFP 2007 Web Site ~~~~~~~~~~~~~~~~~~ http://www.informatik.uni-bonn.de/~ralf/icfp07.html Special Issue of JFP ~~~~~~~~~~~~~~~~~~~~ Authors of the best final papers, as determined by the program committee, will be invited to submit journal versions for a special issue of the Journal of Functional Programming. From cemartin at brookes.ac.uk Thu Jan 18 06:16:00 2007 From: cemartin at brookes.ac.uk (Clare Martin) Date: Thu Jan 18 06:12:25 2007 Subject: [Haskell] British Colloquium for Theoretical, Computer Science (BCTCS) Message-ID: <45AF56F0.9090206@brookes.ac.uk> Dear all, The registration deadline for the British Colloquium for Theoretical Computer Science (BCTCS) is just a few weeks away (16th February) As well as this encouragement to register yourself, please could you pass this message on to your colleagues and students, and encourage them to register too! There are a number of free places available for UK-based PhD students. Best wishes, Clare Martin on behalf of: Sharon Curtis Jeremy Gibbons (organisers) (apologies for any duplicate cross-postings you may receive) +--------------------------------------------------------------------+ 23rd British Colloquium for Theoretical Computer Science BCTCS 2007 2-5 April 2007 St Anne's College, Oxford http://cms.brookes.ac.uk/bctcs2007/ The purpose of BCTCS is to provide a forum in which researchers in theoretical computer science can meet, present research findings, and discuss developments in the field. It also aims to provide an environment in which PhD students can gain experience in presenting their work, and benefit from contact with established researchers. SCOPE All aspects of theoretical computer science, including automata theory, algorithms, complexity theory, semantics, formal methods, concurrency, types, languages and logics. Computer scientists and mathematicians are welcome to attend, as are participants from outside the UK. PROGRAMME The programme will consist of nearly 3 days worth of invited and contributed talks, beginning at 5.30pm on Monday 2nd April and concluding at 1pm on Thursday 5th April 2007. The abstracts of the talks will be published in the Bulletin of the European Association for Theoretical Computer Science (EATCS). The invited speakers are as follows: Dimitris Achlioptas, University of California, Santa Cruz, U.S.A. "Random Constraint Satisfaction Problems: from Physics to Algorithms" Steven Alpern, The London School of Economics and Political Science "Search Games and Utilitarian Postman Paths on Networks" Julian Bradfield, University of Edinburgh (BCS-FACS Lecturer in Formal Methods) Georg Gottlob, University of Oxford "Living with Computational Complexity" (This is Prof. Gottlob's inaugural lecture at Oxford University.) Bob Harper, Carnegie Mellon University, U.S.A. Richard Jozsa, University of Bristol Kristina Vuskovic, University of Leeds (LMS Lecturer in Discrete Mathematics) LOCATION The 2007 colloquium will be held at St Anne's College, Oxford, one of the colleges of the University of Oxford, and hosted by the computing departments of both Oxford Brookes and Oxford universities, Oxford itself is known as the "City of Dreaming Spires", and has been home to both royalty and scholars for over 800 years. REGISTRATION Registration for BCTCS2007 is open, via the web page. The deadline for registration and submission of abstracts for proposed talks is 16th February 2007. The registration fee is 340 UK pounds, including accommodation and meals, and the day rate is 145 UK pounds. A number of free registrations for UK-based PhD students are available. SPONSORS The colloquium is sponsored by EPSRC, BCS-FACS, and also the London Mathematical Society. FURTHER DETAILS Google search - BCTCS 2007 Web page - http://cms.brookes.ac.uk/bctcs2007/ From Jeremy.Gibbons at comlab.ox.ac.uk Fri Jan 19 12:06:25 2007 From: Jeremy.Gibbons at comlab.ox.ac.uk (Jeremy.Gibbons@comlab.ox.ac.uk) Date: Fri Jan 19 12:02:02 2007 Subject: [Haskell] Call for participation and abstracts: BCTCS, Oxford, 2-5 Apr Message-ID: <200701191706.l0JH6PmX018169@softeng.comlab.ox.ac.uk> (apologies for any duplicate cross-postings you may receive) +--------------------------------------------------------------------+ 23rd British Colloquium for Theoretical Computer Science BCTCS 2007 2-5 April 2007 St Anne's College, Oxford http://cms.brookes.ac.uk/bctcs2007/ The purpose of BCTCS is to provide a forum in which researchers in theoretical computer science can meet, present research findings, and discuss developments in the field. It also aims to provide an environment in which PhD students can gain experience in presenting their work, and benefit from contact with established researchers. SCOPE All aspects of theoretical computer science, including automata theory, algorithms, complexity theory, semantics, formal methods, concurrency, types, languages and logics. Computer scientists and mathematicians are welcome to attend, as are participants from outside the UK. PROGRAMME The programme will consist of nearly 3 days worth of invited and contributed talks, beginning at 5.30pm on Monday 2nd April and concluding at 1pm on Thursday 5th April 2007. The abstracts of the talks will be published in the Bulletin of the European Association for Theoretical Computer Science (EATCS). The invited speakers are as follows: Dimitris Achlioptas, University of California, Santa Cruz, U.S.A. "Random Constraint Satisfaction Problems: from Physics to Algorithms" Steven Alpern, The London School of Economics and Political Science "Search Games and Utilitarian Postman Paths on Networks" Julian Bradfield, University of Edinburgh (BCS-FACS Lecturer in Formal Methods) Georg Gottlob, University of Oxford "Living with Computational Complexity" (This is Prof. Gottlob's inaugural lecture at Oxford University.) Bob Harper, Carnegie Mellon University, U.S.A. Richard Jozsa, University of Bristol Kristina Vuskovic, University of Leeds (LMS Lecturer in Discrete Mathematics) LOCATION The 2007 colloquium will be held at St Anne's College, Oxford, one of the colleges of the University of Oxford, and hosted by the computing departments of both Oxford Brookes and Oxford universities, Oxford itself is known as the "City of Dreaming Spires", and has been home to both royalty and scholars for over 800 years. REGISTRATION Registration for BCTCS2007 is open, via the web page. The deadline for registration and submission of abstracts for proposed talks is 16th February 2007. The registration fee is 340 UK pounds, including accommodation and meals, and the day rate is 145 UK pounds. A number of free registrations for UK-based PhD students are available. SPONSORS The colloquium is sponsored by EPSRC, BCS-FACS, and also the London Mathematical Society. FURTHER DETAILS Google search - BCTCS 2007 Web page - http://cms.brookes.ac.uk/bctcs2007/ +--------------------------------------------------------------------+ From tfp2007 at shu.edu Fri Jan 19 16:08:27 2007 From: tfp2007 at shu.edu (TFP 2007) Date: Fri Jan 19 16:04:02 2007 Subject: [Haskell] Final Call for Papers: TFP 2007, New York, USA In-Reply-To: Message-ID: Dear Colleagues, The abstract submission deadline, February 1, is quickly approaching. We hope to see you at TFP 2007 in New York. NEW: Abstract submission is now open! Link: http://cs.shu.edu/tfp2007/submissions.html NEW: Invited Talk: John McCarthy, Standford University CALL FOR PAPERS Trends in Functional Programming 2007 New York, USA April 2-4, 2007 http://cs.shu.edu/tfp2007/ The symposium on Trends in Functional Programming (TFP) is an international forum for researchers with interests in all aspects of functional programming languages, focusing on providing a broad view of current and future trends in Functional Programming. It aspires to be a lively environment for presenting the latest research results through acceptance by extended abstracts. A formal post-symposium refereeing process then selects the best articles presented at the symposium for publication in a high-profile volume. TFP 2007 is co-hosted by Seton Hall University and The City College of New York (CCNY) and will be held in New York, USA, April 2-4, 2007 at the CCNY campus. SCOPE OF THE SYMPOSIUM The symposium recognizes that new trends may arise through various routes. As part of the Symposium's focus on trends we therefore identify the following five article categories. High-quality articles are solicited in any of these categories: Research Articles leading-edge, previously unpublished research work Position Articles on what new trends should or should not be Project Articles descriptions of recently started new projects Evaluation Articles what lessons can be drawn from a finished project Overview Articles summarizing work with respect to a trendy subject Articles must be original and not submitted for simultaneous publication to any other forum. They may consider any aspect of functional programming: theoretical, implementation-oriented, or more experience-oriented. Applications of functional programming techniques to other languages are also within the scope of the symposium. Articles on the following subject areas are particularly welcomed: o Dependently Typed Functional Programming o Validation and Verification of Functional Programs o Debugging for Functional Languages o Functional Programming and Security o Functional Programming and Mobility o Functional Programming to Animate/Prototype/Implement Systems from Formal or Semi-Formal Specifications o Functional Languages for Telecommunications Applications o Functional Languages for Embedded Systems o Functional Programming Applied to Global Computing o Functional GRIDs o Functional Programming Ideas in Imperative or Object-Oriented Settings (and the converse) o Interoperability with Imperative Programming Languages o Novel Memory Management Techniques o Parallel/Concurrent Functional Languages o Program Transformation Techniques o Empirical Performance Studies o Abstract/Virtual Machines and Compilers for Functional Languages o New Implementation Strategies o any new emerging trend in the functional programming area If you are in doubt on whether your article is within the scope of TFP, please contact the TFP 2007 program chair, Marco T. Morazan, at tfp2007@shu.edu. SUBMISSION AND DRAFT PROCEEDINGS Acceptance of articles for presentation at the symposium is based on the review of extended abstracts (6 to 10 pages in length) by the program committee. Accepted abstracts are to be completed to full papers before the symposium for publication in the draft proceedings and on-line. Further details can be found at the TFP 2007 website. POST-SYMPOSIUM REFEREEING AND PUBLICATION In addition to the draft symposium proceedings, we intend to continue the TFP tradition of publishing a high-quality subset of contributions in the Intellect series on Trends in Functional Programming. IMPORTANT DATES Abstract Submission: February 1, 2007 Notification of Acceptance: February 20, 2007 Registration Deadline: March 2, 2007 Camera Ready Full Paper Due: March 9, 2007 TFP Symposium: April 2-4, 2007 PROGRAMME COMMITTEE John Clements California Polytechnic State University, USA Marko van Eekelen Radboud Universiteit Nijmegen, The Netherlands Benjamin Goldberg New York University, USA Kevin Hammond University of St. Andrews, UK Patricia Johann Rutgers University, USA Hans-Wolfgang Loidl Ludwig-Maximilians Universit?t M?nchen, Germany Rita Loogen Philipps-Universit?t Marburg, Germany Greg Michaelson Heriot-Watt University, UK Marco T. Moraz?n (Chair) Seton Hall University, USA Henrik Nilsson University of Nottingham, UK Chris Okasaki United States Military Academy at West Point, USA Rex Page University of Oklahoma, USA Ricardo Pena Universidad Complutense de Madrid, Spain Benjamin C. Pierce University of Pennsylvania, USA John Reppy University of Chicago, USA Ulrik P. Schultz University of Southern Denmark, Denmark Clara Segura Universidad Complutense de Madrid, Spain Jocelyn S?rot Universit? Blaise Pascal, France Zhong Shao Yale University, USA Olin Shivers Georgia Institute of Technology, USA Phil Trinder Heriot-Watt University, UK David Walker Princeton University, USA ORGANIZATION Symposium Chair: Henrik Nilsson, University of Nottingham, UK Programme Chair: Marco T. Morazan, Seton Hall University, USA Treasurer: Greg Michaelson, Heriot-Watt University, UK Local Arrangements: Marco T. Morazan, Seton Hall University, USA ************************************************************************************ Dr. Marco T. Morazan TFP 2007 Program Committee Chair http://cs.shu.edu/tfp2007/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20070119/f42523fb/attachment.htm From tfp2007 at shu.edu Sat Jan 20 08:25:04 2007 From: tfp2007 at shu.edu (TFP 2007) Date: Sat Jan 20 08:20:40 2007 Subject: [Haskell] Final Call for Papers: TFP 2007, New York, USA Message-ID: CALL FOR PAPERS Trends in Functional Programming 2007 New York, USA April 2-4, 2007 http://cs.shu.edu/tfp2007/ NEW: Abstract submission is now opened! Link: http://cs.shu.edu/tfp2007/submissions.html NEW: Invited Talk: John McCarthy, Standford University The symposium on Trends in Functional Programming (TFP) is an international forum for researchers with interests in all aspects of functional programming languages, focusing on providing a broad view of current and future trends in Functional Programming. It aspires to be a lively environment for presenting the latest research results through acceptance by extended abstracts. A formal post-symposium refereeing process then selects the best articles presented at the symposium for publication in a high-profile volume. TFP 2007 is co-hosted by Seton Hall University and The City College of New York (CCNY) and will be held in New York, USA, April 2-4, 2007 at the CCNY campus. SCOPE OF THE SYMPOSIUM The symposium recognizes that new trends may arise through various routes. As part of the Symposium's focus on trends we therefore identify the following five article categories. High-quality articles are solicited in any of these categories: Research Articles leading-edge, previously unpublished research work Position Articles on what new trends should or should not be Project Articles descriptions of recently started new projects Evaluation Articles what lessons can be drawn from a finished project Overview Articles summarizing work with respect to a trendy subject Articles must be original and not submitted for simultaneous publication to any other forum. They may consider any aspect of functional programming: theoretical, implementation-oriented, or more experience-oriented. Applications of functional programming techniques to other languages are also within the scope of the symposium. Articles on the following subject areas are particularly welcomed: o Dependently Typed Functional Programming o Validation and Verification of Functional Programs o Debugging for Functional Languages o Functional Programming and Security o Functional Programming and Mobility o Functional Programming to Animate/Prototype/Implement Systems from Formal or Semi-Formal Specifications o Functional Languages for Telecommunications Applications o Functional Languages for Embedded Systems o Functional Programming Applied to Global Computing o Functional GRIDs o Functional Programming Ideas in Imperative or Object-Oriented Settings (and the converse) o Interoperability with Imperative Programming Languages o Novel Memory Management Techniques o Parallel/Concurrent Functional Languages o Program Transformation Techniques o Empirical Performance Studies o Abstract/Virtual Machines and Compilers for Functional Languages o New Implementation Strategies o any new emerging trend in the functional programming area If you are in doubt on whether your article is within the scope of TFP, please contact the TFP 2007 program chair, Marco T. Morazan, at tfp2007@shu.edu. SUBMISSION AND DRAFT PROCEEDINGS Acceptance of articles for presentation at the symposium is based on the review of extended abstracts (6 to 10 pages in length) by the program committee. Accepted abstracts are to be completed to full papers before the symposium for publication in the draft proceedings and on-line. Further details can be found at the TFP 2007 website. POST-SYMPOSIUM REFEREEING AND PUBLICATION In addition to the draft symposium proceedings, we intend to continue the TFP tradition of publishing a high-quality subset of contributions in the Intellect series on Trends in Functional Programming. IMPORTANT DATES Abstract Submission: February 1, 2007 Notification of Acceptance: February 20, 2007 Registration Deadline: March 2, 2007 Camera Ready Full Paper Due: March 9, 2007 TFP Symposium: April 2-4, 2007 PROGRAMME COMMITTEE John Clements California Polytechnic State University, USA Marko van Eekelen Radboud Universiteit Nijmegen, The Netherlands Benjamin Goldberg New York University, USA Kevin Hammond University of St. Andrews, UK Patricia Johann Rutgers University, USA Hans-Wolfgang Loidl Ludwig-Maximilians Universit?t M?nchen, Germany Rita Loogen Philipps-Universit?t Marburg, Germany Greg Michaelson Heriot-Watt University, UK Marco T. Moraz?n (Chair) Seton Hall University, USA Henrik Nilsson University of Nottingham, UK Chris Okasaki United States Military Academy at West Point, USA Rex Page University of Oklahoma, USA Ricardo Pena Universidad Complutense de Madrid, Spain Benjamin C. Pierce University of Pennsylvania, USA John Reppy University of Chicago, USA Ulrik P. Schultz University of Southern Denmark, Denmark Clara Segura Universidad Complutense de Madrid, Spain Jocelyn S?rot Universit? Blaise Pascal, France Zhong Shao Yale University, USA Olin Shivers Georgia Institute of Technology, USA Phil Trinder Heriot-Watt University, UK David Walker Princeton University, USA ORGANIZATION Symposium Chair: Henrik Nilsson, University of Nottingham, UK Programme Chair: Marco T. Morazan, Seton Hall University, USA Treasurer: Greg Michaelson, Heriot-Watt University, UK Local Arrangements: Marco T. Morazan, Seton Hall University, USA ************************************************************************************ Dr. Marco T. Morazan TFP 2007 Program Committee Chair http://cs.shu.edu/tfp2007/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20070120/3f5fbe3e/attachment-0001.htm From conal at conal.net Sat Jan 20 20:46:46 2007 From: conal at conal.net (Conal Elliott) Date: Sat Jan 20 20:42:17 2007 Subject: [Haskell] Hyperlinking source code formatter? Message-ID: I'd like to turn source code (mine and others') into a fully hyperlinked form, in which every name reference links to the name's definition. Syntax-coloring would be great also. I see Programmatica. Is it in use, supported, and reasonably easy to install and use? Are there other options? Thanks, - Conal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/haskell/attachments/20070120/fcfda894/attachment.htm From oleg at pobox.com Sun Jan 21 22:06:33 2007 From: oleg at pobox.com (oleg@pobox.com) Date: Sun Jan 21 22:03:19 2007 Subject: [Haskell] Even higher-order abstract syntax: typeclasses vs GADT Message-ID: <20070122030633.5BCACAB40@Adric.metnet.fnmoc.navy.mil> We show the typeclass implementation of the example used to make the case for GADTs. We demonstrate the higher-order abstract-syntax-based embedding of a language in Haskell and implement static and dynamic semantics of the language. The interpreter of the language is tagless and statically assured: Only well-typed terms may be evaluated, and the evaluation of those does not get stuck. We use no tags and *no* run-time pattern-matching, therefore, the `eval' function has no possibility of raising a run-time error. Our language is _non_-strongly normalizing and non-structurally inductive due to the presence of Fix; yet the typechecking is decidable and our typeclass programs always terminate. The running example has been used as an argument for generalized recursive data types (one of the variants of GADTs). This message is meant to clarify the expressiveness of GADTs with respect to typeclasses. Our implementation is also aimed at the sometimes exuberant enthusiasm for GADTs. In positive contribution, we demonstrate the _automatic_ promotion of a value-level higher-order abstract syntax (HOAS) term to the type-level. The small-lambda HOAS becomes the big-Lambda HOAS and can be operated by the typechecker. We demonstrate the typechecking of our term language by abstract interpretation. The latter is performed by the Haskell typechecker itself, following straightforward declarative rules expressed via instance declarations. The code works in GHC and Hugs. This message has been inspired by the paper `Guarded recursive datatype constructors' by Hongwei Xi, Chiyan Chen and Gang Chen (POPL2003) to be called `the GRDT paper' below. The particular inspiration comes from a comment by Meng Wang on Haskell-Cafe (Jan 13, 2007). GADTs are often motivated by a tagless interpreter. When we embed a language in Haskell, the corresponding data types may admit meaningless terms like an application of a number to a pair. If we get the Haskell typechecker to reject such terms, we gain the (static) type checking for our object language. Furthermore, the evaluator for the language no longer has to deal with ill-formed terms and report run-time `type' errors. There is no longer any need in `dynamic typing' and in maintaining and checking type tags. The paper `Wobbly types: type inference for generalised algebraic data types' by Peyton-Jones, Washburn, and Weirich used the embedding of a first-order language to motivate GADTs. That example is _trivially_ implemented in Haskell without GADTs, with simple typeclasses. http://pobox.com/~oleg/ftp/Haskell/GADT-interpreter.hs Far more interesting is the embedding of a higher-order language, described in the GRDT paper. The first challenge is representing higher-order syntax at the type level. More demanding is dealing with the fixpoint operator of the GRDT example. The HOAS fixpoint destroys the structural induction principle. If we fully expose the structure of our terms at the type level, how can we write divergent terms? Do we need (equi-)recursive types? Mainly, would the Haskell typechecker itself diverge when processing such terms? Who would have thought that divergent terms can be so interesting. The examples in the code include several terms whose run-time evaluation does diverge, yet the typechecking of those terms terminates. The termination of our typechecker is easy to see as each step eliminates one term constructor. The key to the terminating typechecking is abstract interpretation, which permits the introduction and the elimination of assumptions/hypothesis. The full code is available at http://pobox.com/~oleg/ftp/Haskell/GADT-HOAS.hs The syntax of our language is as follows. We took the first-order language described previously and added higher-order terms and the fixpoint. The resulting language is a little bit larger than that introduced in the GRDT paper. > newtype Lit a = Lit a -- aka, Lift in GRDT > newtype Inc a = Inc a > newtype IsZ a = IsZ a > newtype If a b c = If (a,b,c) > newtype Fst a = Fst a > newtype Snd a = Snd a > newtype Pair a b = Pair (a,b) > > newtype Lam f t = Lam f -- t is the type of the bound arg > newtype App a b = App (a,b) > newtype Fix f t = Fix f -- ditto > > newtype AbsValue t = AbsValue t The Lam and Fix terms with binders contain in their type the type of the bound variable. The GRDT paper imposes the same type annotation requirement. That type, however, can be inferred in many cases. The term `AbsValue' is used for typechecking of functions by abstract interpretation. Here is a sample higher-order term in our language, with latent non-termination > t5f = Lam $ \p -> If( IsZ p, (Pair (p,Inc p)), (Pair (p,Fix id)) ) The body of Lam is the ordinary Haskell function. We define the static semantics by > class Of a t | a -> t asserting that the term 'a' has the type 't'. The type-checking rules, defined by the instances of `Of' are straightforward: > instance Of (Lit t) t > instance Of a Int => Of (Inc a) Int More interesting is the typechecking of functions and fixpoints: the Hyp introduction and elimination rules. > instance (Apply f (AbsValue t1) y, Of y t2) => Of (Lam f t1) (t1->t2) > instance (Apply f (AbsValue t) y, Of y t) => Of (Fix f t) t > instance Of (AbsValue t) t -- Hyp elimination rule The Lam rules says that the function mapping the term `x' to the term 'y' has the type t1->t2, if the function maps the term AbsValue t1 to the term that has the type t2. In other words, if the body of the function has the type t2 _assuming_ the argument has the type t1. The AbsValue makes the typechecking of the HOAS Fix terminating. If we define > teval :: Of e t => e -> t -- static evaluator > teval = undefined -- all computation is static > et5f1 = teval $ t5f we can see the type inferred for t5f > *HOASL> :t et5f1 > et5f1 :: Int -> (Int, Int) We define the dynamic semantics as the big-step evaluator > class Eval a t | a->t where eval:: a -> t Most of the instances are straightforward: > instance Of (Lit a) a => Eval (Lit a) a where > eval (Lit i) = i > instance Eval t Int => Eval (Inc t) Int where > eval (Inc t) = eval t + 1 Again, more interesting is the evaluation of higher-order terms > instance (Eval a (t1->t2), Eval b t1) => Eval (App a b) t2 where > eval (App (a,b)) = (eval a) (eval b) > > instance (Apply f (Lit t1) b, Eval b t2) => Eval (Lam f t1) (t1->t2) where > eval (Lam f) = \x -> eval (apply f (Lit x)) > > instance (Apply f (Lit t) y, Eval y t) => Eval (Fix f t) t where > eval (Fix f) = fix (\x -> eval $ apply f (Lit x)) We can now evaluate the term and its applications > et5f1 = teval $ t5f > et5f2 = eval $ t5f > et5f3 = eval $ App (t5f, Lit (0::Int)) -- yields (0,1) > et5f4t= teval $ App (t5f, Lit (1::Int)) -- typechecking terminates > et5f4 = eval $ App (t5f, Lit (1::Int)) -- evaluation diverges! The full code contains a more meaningful example of using Fix, to add two numbers using recursion with accumulation. That example too is potentially diverging on some inputs. From gmh at Cs.Nott.AC.UK Mon Jan 22 04:27:00 2007 From: gmh at Cs.Nott.AC.UK (Graham Hutton) Date: Mon Jan 22 04:23:17 2007 Subject: [Haskell] Midlands Graduate School 2007 Message-ID: <11214.1169458020@cs.nott.ac.uk> +--------------------------------------------------------------------+ *** REGISTRATION NOW OPEN ***