
--------------------------------------------------------------------------- Haskell Weekly News http://sequence.complete.org/hwn/20070305 Issue 58 - March 05, 2007 --------------------------------------------------------------------------- Welcome to issue 58 of HWN, a weekly newsletter covering developments in the [1]Haskell community. 1. http://haskell.org/ Announcements New Book - Programming in Haskell. Graham Hutton [2]announced a new Haskell textbook: [3]Programming in Haskell. This introduction is ideal for beginner programmers: it requires no previous programming experience and all concepts are explained from first principles via carefully chosen examples. Each chapter includes exercises that range from the straightforward to extended projects, plus suggestions for further reading on more advanced topics. The presentation is clear and simple, and benefits from having been refined and class-tested over several years. 2. http://article.gmane.org/gmane.comp.lang.haskell.general/14849 3. http://www.cs.nott.ac.uk/~gmh/book.html Gtk2Hs version 0.9.11. Duncan Coutts [4]announced Gtk2Hs - a GUI Library for Haskell based on Gtk+, version 0.9.11, is [5]now available. Gtk2Hs features: automatic memory management; Unicode support; nearly full coverage of Gtk+ 2.8 API; support for several additional Gtk+/Gnome modules (Glade visual GUI builder, cairo vector graphics, SVG rendering, OpenGL extension and more). 4. http://article.gmane.org/gmane.comp.lang.haskell.general/14934 5. http://haskell.org/gtk2hs/download/ cabal-make version 0.1. Conal Elliott [6]announced Cabal-make, a GNU make include file to be used with Cabal in creating and sharing Haskell packages. A few highlights: web-based, cross-package links in Haddock docs; syntax coloring via hscolour, with per-project CSS; links from the Haddock docs to hscolour'd code and to wiki-based user comment pages. [7]It is available here. 6. http://article.gmane.org/gmane.comp.lang.haskell.general/14891 7. http://haskell.org/haskellwiki/Cabal-make Vty 3.0.0. Stefan O'Rear [8]announced a new major of [9]vty, featuring improved performance. vty is notably used in yi to provide a terminal interface supporting syntax highlighting. 8. http://article.gmane.org/gmane.comp.lang.haskell.general/14876 9. http://members.cox.net/stefanor/vty/dist/doc/html/index.html Haskell Xcode Plugin. Lyndon Tremblay [10]announced the first release of [11]a plugin for Xcode enabling Haskell syntax highlighting, Xcode projects compiling and linking, and a couple missing features, for Haskell (GHC). 10. http://article.gmane.org/gmane.comp.lang.haskell.general/14875 11. http://www.hoovy.org/HaskellXcodePlugin/ urlcheck 0.1: parallel link checker. Don Stewart [12]announced the first release of [13]urlcheck, an parallel link checker, written in Haskell. Frustrated with the resources and time consumed by 'linkchecker', urlcheck is a lightweight, smp-capable replacement in Haskell. urlcheck pings urls found in the input file, checking they aren't 404s. It uses Haskell threads to run queries concurrently, and can transparently utilise multiple cores if you have them. 12. http://article.gmane.org/gmane.comp.lang.haskell.general/14863 13. http://hackage.haskell.org/cgi-bin/hackage-scripts/package/urlcheck-0.1 The Monad.Reader: call for copy. Wouter Swierstra [14]welcomed articles for the next issue of The Monad.Reader. Submit articles for the next issue by e-mail before April 13th, 2007. Articles should be written according to the guidelines available from [15]The Monad Reader home. 14. http://article.gmane.org/gmane.comp.lang.haskell.general/14870 15. http://www.haskell.org/haskellwiki/TheMonadReader TV-0.2 and GuiTV-0.2. Conal Elliott [16]announced TV, a library for composing tangible values ('TVs'), values that carry along external interfaces. In particular, TVs can be composed to create new TVs, and they can be directly executed with various kinds of interfaces. Values and interfaces are combined for direct use, and separable for composition. GuiTV adds graphical user interfaces to the TV (tangible value) framework, using Phooey. The functionality was part of TV up to version 0.1.1, and is now moved out to a new package to eliminate the dependency of core TV on Phooey and hence on wxHaskell, as the latter can be difficult to install. 16. http://article.gmane.org/gmane.comp.lang.haskell.general/14862 Haskell-mode 2.2. Stefan Monnier [17]released version 2.2 of [18]the Haskell-mode package for Emacs. It has very few visible changes, mostly some commands to query an underlying interactive hugs/ghci in order to get type/info about specific identifiers. 17. http://article.gmane.org/gmane.comp.lang.haskell.general/14857 18. http://www.iro.umontreal.ca/~monnier/elisp/ Data.CompactString 0.1. Twan van Laarhoven [19]announced a beta [20]Unicode version of Data.ByteString. The library uses a variable length encoding (1 to 3 bytes) of Chars into Word8s, which are then stored in a ByteString. 19. http://thread.gmane.org/gmane.comp.lang.haskell.general/14834 20. http://twan.home.fmf.nl/compact-string/ HSXML version 1.13. Oleg Kiselyov [21]announced version 1.13 of [22]HSXML. HSXML is a library for writing and transforming typed semi-structured data in Haskell -- in S-expression syntax, with the extensible set of `tags', and statically enforced content model restrictions. A particular application is writing web pages in Haskell. We obtain HTML, XHTML or other output formats by running the Haskell web page in an appropriate rendering monad. The benefit of representing XML-like documents as a typed data structure/Haskell code is static rejection of bad documents -- not only those with undeclared tags but also those where elements appear in wrong contexts. 21. http://thread.gmane.org/gmane.comp.lang.haskell.general/14835 22. http://pobox.com/~oleg/ftp/Scheme/xml.html#typed-SXML Haskell XML Toolbox 7.1. Uwe Schmidt [23]announced a new version of [24]the Haskell XML Toolbox. The main change is the step from cvs to darcs. The documentation has source links into [25]the darcs repository. [26]A tutorial is available in the Haskell wiki. 23. http://article.gmane.org/gmane.comp.lang.haskell.general/14831 24. http://www.fh-wedel.de/~si/HXmlToolbox/index.html 25. http://darcs.fh-wedel.de/hxt 26. http://www.haskell.org/haskellwiki/HXT OmegaGB, Haskell Game Boy Emulator. Bit Connor [27]announced OmegaGB, an emulator for the Nintendo Game Boy, written in pure Haskell. It uses gtk2hs for the user interface, but there is also a version that doesn't require gtk2hs and uses ascii art. You can find more information about the program at [28]the website. 27. http://article.gmane.org/gmane.comp.lang.haskell.general/14938 28. http://www.mutantlemon.com/omegagb/ Takusen 0.6. Oleg and Alistair [29]announced a new release of [30]Takusen, the database library for Haskell. There are a large number of changes and bug-fixes in this release, including improved Oracle and PostgreSQL support. 29. http://article.gmane.org/gmane.comp.lang.haskell.libraries/6209/ 30. http://darcs.haskell.org/takusen hoogle.el. David House [31]announced Hoogle.el, a simple Emacs Lisp library that nicely integrates [32]Hoogle into Emacs. 31. http://article.gmane.org/gmane.comp.lang.haskell.general/14944 32. http://haskell.org/haskellwiki/Hoogle.el Buggy nofib. Josep Silva Galiana [33]announced a 'buggy' version of the nofib collection of Haskell programs. [34]All programs contain one of these bugs: a bug that produces an incorrect result; a bug that produces non-termination; a bug that produces an exception (e.g., div by zero). [35]The buggy nofib suite can be used to test debugging tools. 33. http://article.gmane.org/gmane.comp.lang.haskell.general/14825 34. http://einstein.dsic.upv.es/darcs/nofib 35. http://einstein.dsic.upv.es/nofib nobench: Haskell implementation shootout. Don Stewart [36]announced nobench, a cross-implementation performance benchmark suite, based on nofib, [37]comparing the performance of various Haskell compilers and bytecode interpreters on a range of programs. 36. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/19684 37. http://www.cse.unsw.edu.au/~dons/nobench.html Derangement version 0.1.0. Dennis Griffith [38]announced the initial version of derangement, a library for finding a derangement of a set. A derangement of a set is a permutation with no fixed points, like many constrained matching problems it is susceptible to solution via a Max-flow algorithm. 38. http://article.gmane.org/gmane.comp.lang.haskell.cafe/19714 HSH 1.0.0. John Goerzen [39]announced the first release of HSH. HSH is designed to let you mix and match shell expressions with Haskell programs. With HSH, it is possible to easily run shell commands, capture their output or provide their input, and pipe them to/from other shell commands and arbitrary Haskell functions at will. HSH makes it easy to run shell commands. But its real power is in piping. You can pipe -- arbitrarily -- between external programs, pure Haskell functions, and Haskell IO functions 39. http://article.gmane.org/gmane.comp.lang.haskell.cafe/20053 A new Haskell cookbook. Martin Bishop [40]began a preliminary page, and fleshed out some of the headers/sub-headers on the wiki page for a good Haskell Cookbook (not a PLEAC clone). [41]Please contribute. 40. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/19790 41. http://haskell.org/haskellwiki/Cookbook Haskell' This section covers the [42]Haskell' standardisation process. * [43]Global variables * [44]Polymorphic components, so far * [45]do-and-if-then-else modification * [46]Fixity resolution, possible specification * [47]Disjunctive tuples 42. http://hackage.haskell.org/trac/haskell-prime 43. http://thread.gmane.org/gmane.comp.lang.haskell.prime/2054 44. http://thread.gmane.org/gmane.comp.lang.haskell.prime/2076 45. http://thread.gmane.org/gmane.comp.lang.haskell.prime/2120 46. http://thread.gmane.org/gmane.comp.lang.haskell.prime/2121 47. http://thread.gmane.org/gmane.comp.lang.haskell.prime/2133 Libraries This week's proposals and extensions to the [48]standard libraries. * [49]Data.Proxy * [50]Add extra readline completion functionality * [51]Control.Monad.Cont documentation * [52]Add First and Last wrappers around Maybe to Data.Monoid * [53]Add ioeGetLocation, ioeSetLocation to System/IO/Error.hs 48. http://haskell.org/haskellwiki/Library_submissions 49. http://thread.gmane.org/gmane.comp.lang.haskell.libraries/6238 50. http://thread.gmane.org/gmane.comp.lang.haskell.libraries/6256 51. http://thread.gmane.org/gmane.comp.lang.haskell.libraries/6287 52. http://thread.gmane.org/gmane.comp.lang.haskell.libraries/6319 53. http://thread.gmane.org/gmane.comp.lang.haskell.libraries/6320 Discussion Haskell with only one typeclass. Oleg Kiselyov [54]described how, if the ability to define typeclasses is removed from Haskell, no expressivity is lost. If Haskell had only one, pre-defined typeclass with only one method, we could still do normal Haskell programming with standard and user-defined overloaded numerical functions, monads, monad transformers, etc. Haskell with only one typeclass can express all of Haskell98 typeclass programming idioms including constructor classes, plus multi-parameter type classes and some functional dependencies. 54. http://article.gmane.org/gmane.comp.lang.haskell.general/14936 Data type declarations are implicitly moduled. Chris Moline [55]proposed an idea to allow multiple data declarations to share constructors by having them be implicitly declared inside a module. 55. http://article.gmane.org/gmane.comp.lang.haskell.general/14847 Importance of MonadRandom. Yitzchak Gale [56]pointed out the importance of Cale Gibbard's [57]MonadRandom. This monad makes it possible to write functions that use randomness without having to specify in advance whether the source of randomness will be a pure pseudorandom number generator, as in System.Random, or physical randomness via the IO monad, such as your operating system's source of physical randomness, or random.org, or a hardware random generator. 56. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/19058 57. http://www.haskell.org/haskellwiki/New_monads/MonadRandom Become a GHC build slave!. Simon Marlow [58]pointed out that, thanks largely to Ian Lynagh, GHC now has a BuildBot infrastructure to automate nightly builds on multiple platforms. This replaces the old set of shell scripts that we used to run nightly builds; now adding new clients to the setup is [59]relatively easy. So far we have various Windows builds running, and I'll be moving over the existing Linux nightly builds in due course. 58. http://article.gmane.org/gmane.comp.lang.haskell.cafe/19103 59. http://hackage.haskell.org/trac/ghc/wiki/BuildBot Editor support for low level hacking. Don Stewart [60]mentioned some tools used for making low level optimisation of GHC Haskell code easier 60. http://article.gmane.org/gmane.comp.lang.haskell.cafe/19348 Optimisation fun. Creighton Hogg [61]sparked a long thread on optimising prime sieves in Haskell 61. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/19380 OO Design in Haskell Example. Steve Downey [62]began a thread on OO design in Haskell 62. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/19897 Safe lists with GADTs. Neil Mitchell [63]explored a safe version of head and tail, on a safe version of lists, using GADTs 63. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/19901 Jobs Research position at Nokia Research Center. Jamey Hicks [64]announced the availability of a senior research engineer position at Nokia Research Center Cambridge, US. They are seeking an exceptional, highly motivated individual who is interested in a unique opportunity to collaborate with a world-class academic research community. This position is for the Armo project at NRC Cambridge, using Bluespec hardware description language to radically improve Nokia's ability to develop advanced SOCs and corresponding software for future mobile phones and mobile computers. We are investigating co-development of hardware and software components for such devices. Success in the project will lead to both academic publication as well as a significant positive impact on Nokia products and engineering. 64. http://article.gmane.org/gmane.comp.lang.haskell.general/14901 New PhD Positions Computing Science, Chalmers University. Koen Claessen [65]announced new [66]PhD positions for 2007, at Chalmers University of Technology. The focus is on algorithms, bioinformatics, distributed systems and computing, functional programming, formal methods, interaction design, language technology, language based security, parallel and high performance computing, programming logic and type theory, but research is not restricted to these topics. 65. http://article.gmane.org/gmane.comp.lang.haskell.general/14900 66. http://chalmersnyheter.chalmers.se/chalmers03/english/eng_vacanciesarticle.j... Positions at Oxford: refactoring tools. Oege.de.Moor [67]announced the availability of positions in the Programming Tools Group at Oxford, researching aspect refactoring tools 67. http://article.gmane.org/gmane.comp.lang.haskell.general/14860 Blog noise [68]Haskell news from the blogosphere. * [69]Writing a Simple Search Engine in Haskell: Part 0 - Introduction * [70]Writing a Simple Search Engine in Haskell: Part 1 Maybe and List * [71]Haskell IO for Imperative Programmers * [72]Quotient Types for Information Hiding * [73]How Many Functions are There of Type Bool -> Bool? * [74]Macros for Haskell? Done. * [75]More on Haskell, Side Effects and Code Reuse * [76]The theory of monads * [77]Writing code by types * [78]Haskell: open secret in Ruby land * [79]Ruby vs Haskell: choose what works * [80]Real time Haskell * [81]Folds and functional programming * [82]Countable Ordinals in Haskell * [83]Haskell * [84]Programming and the Metaphorical Mind * [85]Languages and the semiskilled developer * [86]Building a Firewall Against Complexity * [87]The Killer App for a new language * [88]Time travel in Haskell * [89]Comonads and reading from the future * [90]Flirting with Functional Programming * [91]A fold-like procedure in C * [92]Monads in Qi * [93]Monads work because they have a tight interface * [94]What's wrong with for loops * [95]More on what's wrong with for loops * [96]Haskell, CAL and Scala * [97]Haskell: Queues without pointers * [98]Type Classes: Not Quite Overloading * [99]Generalised Algebraic Data Types, Phantom Types, and Dependent Types * [100]An IRC client/server in Haskell * [101]Language design: grand architecture versus feature collections * [102]Thoughts on one week in Haskell * [103]Why its hard for imperative programmers to learn Haskell * [104]Refunctoring with polymorphism * [105]Introductory console IO in Haskell * [106]Learn the lambda calculus * [107]Haskell for Alphas and Betas * [108]My evolution as a Haskell programmer * [109]On learning Haskell * [110]Greenspun's Tenth Rule applied to Haskell * [111]Cabal with rpm goodness * [112]F# * [113]Arithemtic coding in Haskell * [114]A filesystem tree printer * [115]Using Bayesian filtering instead of 'if' in Haskell * [116]Combinator parsing * [117]Monads for vector spaces, probability and quantum mechanics pt. I * [118]Monads, Vector Spaces and Quantum Mechanics pt. II * [119]Learning the Haskell programming language * [120]A twisted history of monad transformers * [121]Monadic parsing * [122]Forth as a Haskell DSL * [123]A better environment for shell scripting * [124]Smart classification using Bayesian monads in Haskell * [125]Haskell like data structures in Common Lisp 68. http://planet.haskell.org/ 69. http://blogs.nubgames.com/code/?p=18 70. http://blogs.nubgames.com/code/?p=19 71. http://blogs.nubgames.com/code/?p=22 72. http://japple.blogspot.com/2007/01/quotient-types-for-information-hiding.htm... 73. http://japple.blogspot.com/2007/01/how-many-functions-are-there-of-type.html 74. http://clemens.endorphin.org/weblog/archives/2007-01.shtml#e2007-01-31T12_21... 75. http://neilbartlett.name/blog/?p=13 76. http://scienceblogs.com/goodmath/2007/01/the_theory_of_monads_and_the_m_1.ph... 77. http://neilmitchell.blogspot.com/2007/01/writing-code-by-types.html 78. http://notes-on-haskell.blogspot.com/2007/01/haskell-open-secret.html 79. http://notes-on-haskell.blogspot.com/2007/01/ruby-vs-haskell-choose-what-wor... 80. http://mikeburrell.wordpress.com/2007/02/01/real-time-haskell/ 81. http://mikeburrell.wordpress.com/2007/02/01/functional-idempotence-optimizat... 82. http://japple.blogspot.com/2007/02/countable-ordinals-in-haskell.html 83. http://vanirsystems.com/danielsblog/?p=103 84. http://toomuchcode.blogspot.com/2007/02/part-1-programming-and-metaphorical.... 85. http://toomuchcode.blogspot.com/2007/02/part-2-languages-and-lesser-skilled.... 86. http://toomuchcode.blogspot.com/2007/02/building-firewall-against-complexity... 87. http://toomuchcode.blogspot.com/2007/02/part-4-killer-app.html 88. http://community.livejournal.com/evan_tech/216270.html 89. http://sigfpe.blogspot.com/2007/02/comonads-and-reading-from-future.html 90. http://johnleesmiller.blogspot.com/2007/02/first-post.html 91. http://www.yomi.at/archive/2007/02/115 92. http://programmingkungfuqi.blogspot.com/2007/02/monads-in-qi.html 93. http://www.sdowney.org/2007/01/monads-rest-and-c-template.html 94. http://notes-on-haskell.blogspot.com/2007/02/whats-wrong-with-for-loop.html 95. http://notes-on-haskell.blogspot.com/2007/02/whats-wrong-with-for-loop-revis... 96. http://blog.tmorris.net/ignorance-is-mostly-bliss-but-not-always/ 97. http://www.randomhacks.net/articles/2007/02/08/haskell-queues-without-pointe... 98. http://www.cs.nott.ac.uk/~pni/Papers/Notes/typeClassOvld.html 99. http://www.cs.nott.ac.uk/~pni/Papers/Notes/GADTs.html 100. http://blog.nurd.se/hype/?p=30 101. http://www.dysfunctor.org/2007/02/13/architecture-vs-features/ 102. http://kevin.scaldeferri.com/blog/2007/02/12/OneWeek.html 103. http://qftblog.wordpress.com/2007/02/14/why-its-so-hard-for-imperative-progr... 104. http://blog.tmorris.net/refunctoring/ 105. http://cod3po37ry.blogspot.com/2007/02/more-on-haskell-io-and-interact.html 106. http://foreigndispatches.typepad.com/dispatches/2007/02/an_introduction.html 107. http://paulspontifications.blogspot.com/2007/02/haskell-for-alphas-and-betas... 108. http://onthebalcony.wordpress.com/2007/02/19/my-evolution-as-a-haskell-progr... 109. http://osfameron.vox.com/library/post/on-learning-haskell.html 110. http://japple.blogspot.com/2007/02/conors-rule.html 111. http://www.serpentine.com/blog/2007/02/20/haskell-cabal-now-with-extra-crunc... 112. http://reddevnews.com/news/devnews/article.aspx?editorialsid=164 113. http://vandreev.wordpress.com/2007/01/07/arithmetic-coding/ 114. http://blog.moertel.com/articles/2007/02/22/a-simple-directory-tree-printer-... 115. http://www.randomhacks.net/articles/2007/02/22/bayes-rule-and-drug-tests 116. http://mikeburrell.wordpress.com/2007/02/25/combinator-parsing/ 117. http://sigfpe.blogspot.com/2007/02/monads-for-vector-spaces-probability.html 118. http://sigfpe.wordpress.com/2007/03/04/monads-vector-spaces-and-quantum-mech... 119. http://printf.wordpress.com/2007/02/27/haskell-functional-programming-langua... 120. http://conway.rutgers.edu/~ccshan/wiki/blog/posts/Monad_transformers.html 121. http://gbacon.blogspot.com/2007/02/my-first-monadic-program.html 122. http://shaurz.wordpress.com/2007/03/03/forth-as-a-haskell-dsl-or-lambda-the-... 123. http://changelog.complete.org/posts/587-A-better-environment-for-shell-scrip... 124. http://www.randomhacks.net/articles/2007/03/03/smart-classification-with-has... 125. http://common-lisp.net/project/patty/patty.html Quotes of the Week * sleepingsquirrel: Programming in Haskell is like having an interactive conversation with a teleportation machine. You tell it you want to go to some place warm and sandy. The machine complains about ambiguous constraints. So you tell it that there should be plenty of free tropical fruit drinks. It carps 'Inferred location less polymorphic than expected'. Whoops, free flowing that is... After a few more iterations, there's a little puff of smoke, and at the sound of the chimes, you discover you're now on the beach in Tahiti. And although you've used the machine many times before, you can't help but be impressed that it usually 'Just works' most of the time. * jmillikin: If I had to work on code with performance requirements, Haskell would be my choice (followed by C++). Haskell has functional goodness with the ability to break into imperative mode, and C++ gives me direct memory management with a few functional pieces. * Cale: It ought to be called simonPerformIO, and only used if your first name is Simon * monochrom: m a -> (a -> m b) -> m b is much more to the point than 'mumble computation mumble computation' * mwc: There's a time when your brain doesn't get the monads. Then something violent and irreversable happens and you hate every other language for not having monads Code Watch Wed Feb 28 05:07:14 PST 2007. Simon Marlow. [126]Remove vectored returns. We recently discovered that they aren't a win any more, and just cost code size. 126. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/19418 Wed Feb 21 09:04:01 PST 2007. simonpj. [127]Allow GADT syntax for newtypes 127. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/19344 About the Haskell Weekly News Each week, new editions are posted to [128]the Haskell mailing list as well as to [129]the Haskell Sequence and [130]Planet Haskell. [131]RSS is also available, and headlines appear on [132]haskell.org. Headlines are available as [133]PDF. To help create new editions of this newsletter, please see the [134]contributing information. Send stories to dons at cse.unsw.edu.au. The darcs repository is available at darcs get [135]http://www.cse.unsw.edu.au/~dons/code/hwn 128. http://www.haskell.org/mailman/listinfo/haskell 129. http://sequence.complete.org/ 130. http://planet.haskell.org/ 131. http://sequence.complete.org/node/feed 132. http://haskell.org/ 133. http://www.cse.unsw.edu.au/~dons/code/hwn/archives/20070305.pdf 134. http://haskell.org/haskellwiki/HWN 135. http://www.cse.unsw.edu.au/~dons/code/hwn
participants (1)
-
dons@cse.unsw.edu.au