ebook img

haskell_report.pdf (PDFy mirror) PDF

3.9 MB·
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview haskell_report.pdf (PDFy mirror)

Haskell Communities and Activities Report http://tinyurl.com/haskcar Twenty-Seventh Edition — November 2014 Mihai Maruseac, Alejandro Serrano Mena (eds.) Andreas Abel Alexander Granin Heinrich Apfelmus Emil Axelsson Carl Baatz Doug Beardsley Jean-Philippe Bernardy Alexander Berntsen Jeroen Bransen Joachim Breitner Erik de Castro Lopo Lucas DiCioccio Roman Cheplyaka Olaf Chitil Alberto Gómez Corona Duncan Coutts Atze Dijkstra Péter Diviánszky Corentin Dupont Richard Eisenberg Andrew Farmer Dennis Felsing Julian Fleischer Michal J. Gajda Andrew Gibiansky Brett G. Giles Andy Gill Jurriaan Hage Greg Hale Bastiaan Heeren Sylvain Henry Lars Hupel PÁLI Gábor János Bob Ippolito Philipp Kant Robin KAY Anton Kholomiov Ian-Woo Kim Oleg Kiselyov Edward Kmett Eric Kow Nickolay Kudasov Ben Lippmeier Andres Löh Rita Loogen Boris Lykah Ian Lynagh Christian Maeder José Pedro Magalhães Ketil Malde Mihai Maruseac Dino Morelli JP Moresmau Ben Moseley Natalia Muska Tom Nielsen Rishiyur Nikhil Kiwamu Okabe Ivan Perez Jens Petersen Haskell Consultancy Munich Simon Peyton Jones Jeffrey Rosenbluth Ian Ross David Sabel Martijn Schrage Austin Seipp Carter Tazio Schonwald Jeremy Shaw Christian Höner zu Siederdissen Gideon Sireling Jim Snow Michael Snoyman Andrei Soare Kyle Marek-Spartz Doaitse Swierstra Henk-Jan van Tuyl Bernhard Urban Alessio Valentini Adam Vogt Daniel Wagner Greg Weber Kazu Yamamoto Edward Z. Yang Brent Yorgey Alan Zimmerman Preface This is the 27th edition of the Haskell Communities and Activities Report. As usual, fresh entries – either completely new or old entries which have been revived after a short temporarily disappearance – are formatted using a blue background, while updated entries have a header with a blue background. Entries on which no new activity has been reported for a year or longer have been dropped completely. Please do revive such entries next time if you do have news on them. AcallfornewHCARentriesandupdatestoexistingoneswillbeissuedontheHaskellmailing lists in March. It is possible that by that time we would have switched to a different generation pipeline. In that case, we might issue a call to update old entries which have been completely removed from the report in the past but are still there in the pipeline. Now enjoy the current report and see what other Haskellers have been up to lately. Any feedback is very welcome, as always. Mihai Maruseac, University of Massachusetts Boston, US Alejandro Serrano Mena, Utrecht University, Netherlands [email protected] 2 Contents 1 Community 4 1.1 Haskellers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Books, Articles, Tutorials 5 2.1 The Monad.Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Oleg’s Mini Tutorials and Assorted Small Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Agda Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 School of Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 Implementations 7 3.1 The Glasgow Haskell Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 Ajhc Haskell Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 The Helium Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 UHC, Utrecht Haskell Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.5 Specific Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.5.1 Haskell on FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.5.2 Debian Haskell Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.5.3 Fedora Haskell SIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 Related Languages and Language Design 13 4.1 Agda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2 MiniAgda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.3 Disciple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.4 Ermine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5 Haskell and ... 15 5.1 Haskell and Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1.1 Eden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1.2 speculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2 Haskell and the Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.1 WAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.2 Warp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.3 Happstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2.4 Mighttpd2 — Yet another Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2.5 Yesod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.2.6 Snap Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.2.7 Sunroof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.2.8 MFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.2.9 Scotty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.3 Haskell and Compiler Writing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.3.1 MateVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.3.2 UUAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.3.3 LQPL — A Quantum Programming Language Compiler and Emulator . . . . . . . . . . . . . . . . 22 5.3.4 free — Free Monads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.3.5 bound — Making De Bruijn Succ Less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6 Development Tools 24 6.1 Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.1.1 Haskell IDE From FP Complete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.1.2 EclipseFP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.1.3 ghc-mod — Happy Haskell Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6.1.4 HaRe — The Haskell Refactorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3 6.1.5 IHaskell: Haskell for Interactive Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.2 Code Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.2.1 Darcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.2.2 DarcsWatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.2.3 cab — A Maintenance Command of Haskell Cabal Packages . . . . . . . . . . . . . . . . . . . . . . 27 6.3 Interfacing to other Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.3.1 java-bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.3.2 fficxx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.4 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.4.1 Cabal and Hackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.4.2 Stackage: the Library Dependency Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.4.3 Haskell Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.5 Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.5.1 lhs2TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.5.2 ghc-heap-view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.5.3 ghc-vis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.5.4 Hat — the Haskell Tracer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.5.5 Tasty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.5.6 Automatic type inference from JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7 Libraries, Applications, Projects 34 7.1 Language Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.1.1 Conduit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.1.2 lens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.1.3 folds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.1.4 machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.1.5 exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.1.6 tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.1.7 Faking even more dependent types! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.1.8 Type checking units-of-measure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.1.9 Dependent Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.2 Education . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.2.1 Exercism: crowd-sourced code reviews on daily practice problems . . . . . . . . . . . . . . . . . . . 37 7.2.2 Talentbuddy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.2.3 Holmes, Plagiarism Detection for Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.2.4 Interactive Domain Reasoners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 7.3 Parsing and Transforming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 7.3.1 epub-metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 7.3.2 Utrecht Parser Combinator Library: uu-parsinglib . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 7.3.3 Grammar Products, Set Grammars, and Automatic Outside Grammars . . . . . . . . . . . . . . . . 40 7.3.4 HERMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.3.5 parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.3.6 trifecta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.4 Generic and Type-Level Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.4.1 Optimising Generic Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.4.2 constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.5 Mathematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.5.1 Rlang-QQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.5.2 order-statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.5.3 Eliminating Redundancies in Linear Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.5.4 linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.5.5 algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.5.6 semigroups and semigroupoids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.5.7 Arithmetics packages (Edward Kmett) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.5.8 ad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.5.9 integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.5.10 categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.5.11 contravariant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4 7.5.12 bifunctors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.5.13 profunctors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.5.14 comonad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.5.15 recursion-schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.5.16 kan-extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.5.17 arb-fft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.5.18 hblas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.5.19 HROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.5.20 Numerical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.6 Data Types and Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.6.1 HList — A Library for Typed Heterogeneous Collections . . . . . . . . . . . . . . . . . . . . . . . . 48 7.6.2 Persistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.6.3 Groundhog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.6.4 reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.6.5 tag-bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.6.6 hyperloglog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.6.7 concurrent-supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.6.8 hybrid-vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.6.9 lca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.6.10 heaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.6.11 sparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.6.12 compressed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.6.13 charset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.6.14 Convenience types (Edward Kmett) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.7 User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.7.1 HsQML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.7.2 LGtk: Lens GUI Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.7.3 Gtk2Hs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.7.4 Haskell-EFL binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.7.5 wxHaskell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.7.6 threepenny-gui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.7.7 reactive-banana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.8 Graphics and Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.8.1 diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.8.2 csound-expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.8.3 Chordify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.8.4 Glome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.9 Text and Markup Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 7.9.1 epub-tools (Command-line epub Utilities) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 7.9.2 lens-aeson. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.9.3 hyphenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.10 Natural Language Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.10.1 NLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.10.2 GenI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.11 Bioinformatics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.11.1 ADPfusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.11.2 Ab-initio electronic structure in Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 7.11.3 Semi-Classical Molecular Dynamics in Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.11.4 Biohaskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.11.5 arte-ephys: Real-time electrophysiology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.12 Embedding DSLs for Low-Level Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.12.1 Feldspar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.12.2 Kansas Lava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.13 Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.13.1 General framework for multi-agent systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.13.2 ersatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.13.3 arbtt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.13.4 Hoodle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5 7.13.5 Reffit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.13.6 Laborantin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.13.7 The Amoeba-World game project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.13.8 Nomyx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.13.9 tempuhs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 8 Commercial Users 69 8.1 Well-Typed LLP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.2 Bluespec Tools for Design of Complex Chips and Hardware Accelerators . . . . . . . . . . . . . . . . 69 8.3 Industrial Haskell Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.4 Barclays Capital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.5 Oblomov Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.6 OpenBrain Ltd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.7 Pariah Reputation System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.8 Haskell in the industry in Munich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8.9 Better . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 8.10 Keera Studios LTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 8.11 plaimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9 Research and User Groups 75 9.1 Haskell at Eötvös Loránd University (ELTE), Budapest . . . . . . . . . . . . . . . . . . . . . . . . . . 75 9.2 Artificial Intelligence and Software Technology at Goethe-University Frankfurt . . . . . . . . . . . . . 75 9.3 Functional Programming at the University of Kent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.4 Formal Methods at DFKI and University Bremen and University Magdeburg. . . . . . . . . . . . . . 77 9.5 Haskell in Romania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.6 fp-syd: Functional Programming in Sydney, Australia . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.7 Functional Programming at Chalmers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.8 Functional Programming at KU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.9 Regensburg Haskell Meetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.10 Haskell in the Munich Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.11 HaskellMN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6 1 Community 1.1 Haskellers Report by: Michael Snoyman Status: experimental Haskellers is a site designed to promote Haskell as a language for use in the real world by being a central meeting place for the myriad talented Haskell develop- ersoutthere. Itallowsuserstocreateprofilescomplete withskillsetsandpackagesauthoredandgivesemploy- ers a central place to find Haskell professionals. Haskellers is a web site in maintenance mode. No new features are being added, though the site remains active with many new accounts and job postings con- tinuing. If you have specific feature requests, feel free to send them in (especially with pull requests!). Haskellers remains a site intended for all members of the Haskell community, from professionals with 15 years experience to people just getting into the lan- guage. Further reading http://www.haskellers.com/ 7 2 Books, Articles, Tutorials 2.1 The Monad.Reader was the original presentation, described by Huet (JFP, 1997) and Hinze and Jeuring (JFP 2001); the data Report by: Edward Z. Yang structure derivative was expounded by McBride. We advocate a different view, emphasizing not the There are many academic papers about Haskell and result of navigating through a data structure to a de- many informative pages on the HaskellWiki. Unfortu- sired item and extracting it, but the process of naviga- nately, there is not much between the two extremes. tion. Whereas datatype-derivative zipper necessarily That is where The Monad.Reader tries to fit in: more depends on the data type (different data types have formalthanawikipage,butmorecasualthanajournal different derivatives), our “suspended-walk” zipper is article. datatype-invariant. Our approach works generically There are plenty of interesting ideas that might not notonlyfor(generalized)algebraicdatatypesbutalso warrant an academic publication—but that does not for abstract types (whose structure is hidden) and for mean these ideas are not worth writing about! Com- types that are not data types at all. All is needed is municating ideas to a wide audience is much more im- to support the Traversable interface – at the very least, portant than concealing them in some esoteric journal. providing something like mapM. Even if it has all been done before in the Journal of It takes only three lines of Haskell code to build a Impossibly Complicated Theoretical Stuff, explaining zipperforanyTraversable. Themini-tutorialillustrates a neat idea about “warm fuzzy things” to the rest of the process on a concrete example. us can still be plain fun. Read the tutorial online. The Monad.Reader is also a great place to write about a tool or application that deserves more atten- tion. Mostprogrammersdonotenjoywritingmanuals; Undelimited continuations are not functions writing a tutorial for The Monad.Reader, however, is an excellent way to put your code in the limelight and Wealerttothemisconceptionofexplicit, orfirst-class, reach hundreds of potential users. undelimited continuations as ordinary functions. The confusion is wide-spread, for example, in the descrip- Since the last HCAR there has been one new issue, tion and the code for the Cont monad in Haskell’s featuring tutorials on generalized algebraic data types, monad transformer libraries. We argue for a better monad transformers, and approximating NP-complete call/ccinterface,tohopefullyreducethebewilderment problems with monoids. commonly associated with that control operator. We describe the proper undelimited continuation monad, Further reading pointing out that Haskell’s Cont is actually the monad http://themonadreader.wordpress.com/ fordelimited continuations. Delimitedandundelimited continuations are vastly different. Delimited continu- ations are isomorphic to functions, they do return the 2.2 Oleg’s Mini Tutorials and result and can be composed. We emphasize the great Assorted Small Projects helpoftypesinunderstandingcontinuationsandavoid- ing their surprises. Report by: Oleg Kiselyov The proper implementation of undelimited continu- ations is surprisingly tricky. In particular, the Cont monad in Haskell’s monad transformer library has a couple of imperfections. Our ideal monad for undelim- The collection of various Haskell mini tutorials and itedcontinuations: (i)spellsoutinsyntaxandtypesof assorted small projects (http://okmij.org/ftp/Haskell/) itsoperationsthatundelimitedcontinuationsarenotto has received three additions: betreatedasfunctions;(ii)staticallypreventsbuilding or executing computations that break the undelimited Zipper from any Traversable continuation abstraction and depend on the answer- Zipper is a functional cursor into a data structure. It type. We eventually develop two implementations sat- lets us navigate to and change, without mutation, an isfyingbothrequirements;thesecondoneisalmostthe item deeply buried in a tree or a nested record. The same as Cont, but with a crucial distinction of the resultisanewdatastructure,sharingmuchofitscom- higher-rank type for runCont. The higher-rank type ponents with the old one. Zipper for a data structure preventstheprogramfromusingrunCont internallyto D is itself a data structure D0, derived (almost in the run parts of its computation. calculus sense) from D. This zipper-as-datatype view Read the tutorial online. 8 Recursion from Iteration, an exercise in program derivation 2.4 School of Haskell Letuscalltheloopingcomputationiteration andiden- Report by: Natalia Muska tify the least fix-point combinator with recursion: Participants: Michael Snoyman, Edward Kmett, Simon Peyton Jones and others loop::Monadm ⇒(a →m a)→(a →m b) Status: active loop g =λx →g x >>=loop g fix ::Monadm ⇒ ((a →m b)→(a →m b))→(a →m b) The School of Haskell has been available since early fix f =λx →f (fix f)x 2013. It’s main two functions are to be an education resource for anyone looking to learn Haskell and as Weusedthemonadicversionofloop sothatwecanget a sharing resources for anyone who has built a valu- outofit(e.g.,bythrowinganexception). Accordingto able tutorial. The School of Haskell contains tutorials, itstypetheabovefix istheapplicativefix-pointcombi- courses, and articles created by both the Haskell com- nator (like the one typically used in strict languages), munity and the developers at FP Complete. Courses tobedistinguishedfromtheverydifferent,lazymfix of are available for all levels of developers. Haskell. It is trivial to write loop in terms of fix. Can Two new features were added to the School of we do the other way around? Haskell. FirstistheadditionofDisqusforcommenting on each tutorial and highlighting other potentially in- Intuitively, that should be possible: after all, any teresting tutorials. Second is the inclusion of autorun recursive program, however general, is going to be ex- tags. This enables users to run a snippet as soon as ecuted on a CPU, which runs in a simple tail-recursive they open a tutorial. loop. The details are very tricky and the final result is Currently 3150 tutorials have been created (a 125% all but intuitive or comprehensible. One wonders how increase from this time last year) and 441 have been it could ever work. Andrzej Filinski was the first to officially published (a 53% increase from this time last systematically derive recursion from iteration in 1992. year). Some of the most visited tutorials are Text Ma- We show an alternative, shorter derivation relying on nipulation Attoparsec, Learning Haskell at the SOH, monads and equational reasoning. Introduction to Haskell - Haskell Basics, and A Little Wesolvetheproblembyequationallyderivingacon- Lens Starter Tutorial. Over the past year the School structive proof of the proposition of Haskell has averaged about 16k visitors a month. All Haskell programmers are encouraged to visit the ∀f x k.exists h y◦fix f x k =loop h y k School of Haskell and to contribute their ideas and projects. This is another opportunity to showcase the stating that fix is expressible via loop in the continua- virtuesofHaskellandthesophisticationandhighlevel tion monad. thinking of the Haskell community. Read the tutorial online. Further reading 2.3 Agda Tutorial Visit the School of Haskell here https://www. fpcomplete.com/school Report by: Péter Diviánszky Participants: Ambrus Kaposi, students at ELTE IK Status: experimental Agda may be the next programming language to learn after Haskell. Learning Agda gives more insight into the various type system extensions of Haskell, for ex- ample. The main goal of the tutorial is to let people ex- plore programming in Agda without learning theoret- ical background in advance. Only secondary school mathematics is required for the tutorial. Further reading http://people.inf.elte.hu/divip/AgdaTutorial/Index.html 9 3 Implementations Overloaded record fields In 2013, Adam Gundry im- plementedthenew−XOverloadedRecordFieldsexten- 3.1 The Glasgow Haskell Compiler sionforGHC,describedonthewiki. We’restillaim- ing to make this part of 7.10, but there’s still work Report by: Austin Seipp to be done! Participants: many others Using an SMT Solver in the type-checker Iavor Di- atchki is working on utilizing an off-the-shelf SMT solver in GHC’s constraint solver. Currently, the GHC development is as busy as ever, and 7.10 is going main focus for this is improved support for reason- to be no different. Our current release schedule looks ing with type-level natural numbers, but it opens like we’d like an RC by Christmas, and a release the doors to other interesting functionality, such as close to Feburary 2015, which is something of an supported for lifted (i.e., type-level) (&&), and ({}), adjustment based on the 7.8 release. But we’ve still type-level bit-vectors (perhaps this could be used to got plenty planed for all our users, as usual. implement type-level sets of fixed size), and others. However, we still need help with it all. GHC is a This work is happening on branch wip/ext−solver. community project, and as you may be aware, most of this is done by our wonderful contributors. If you Kind equality and kind coercions Richard Eisenberg want something done, you should certainly try to get (withsupportfromSimonPJandStephanieWeirich, in touch and help make it a reality! among others) is implementing a change to the Core language, as described in a recent paper. When this work is complete, all types will be promotable to Libraries, source language, type system: kinds, and all data constructors will be promotable Applicative is now a superclass of Monad After to types. This will include promoting type syn- much debate, in GHC 7.10, Applicative is finally onyms and type families. As the details come to- a superclass of Monad, hence completing the gether, there may be other source language effects, Applicative Monad Proposal. such as the ability to make kind variables explicit. It is not expected for this to be a breaking change BBP: Foldable/Traversable As part of the so-called – the change should allow strictly more programs to "Burning-Bridges Proposal", the monomorphic be accepted. definitions in Prelude/Data.List/Control.Monad that conflict with those from Data.Foldable and Partial type signatures Thomas Winant and Do- Data.Traversable have been replaced by their respec- minique Devriese are working on partial type sig- tive ones from Data.Foldable/Data.Traversable. This natures for GHC. A partial type signature is a type will be in 7.10. signature that can contain wildcards, written as un- derscores. Thesewildcardscanbetypesunknownto Signature sections Lennart Augustsson is implement- the programmer or types he doesn’t care to anno- ing (::ty) to work the same as (λx →x ::ty). tate. The type checker will use the annotated parts of the partial type signature to type check the pro- ApplicativeDo Now that Applicative is a superclass of gram, and infer the types for the wildcards. A wild- Monad,SimonMarlowhasplanstoimplementanew cardcanalsooccurattheendoftheconstraintspart extension for GHC, which will allow do notation to of a type signature, which indicates that an arbi- beusedinthecontextofApplicative,notjustMonad. trary number of extra constraints may be inferred. Whereas −XTypedHoles allow holes in your terms, Strict language extension Johan Tibell is working on −XPartialTypeSignatures allow holes in your types. a −XStrict language extension that will make GHC The design as well as a working implementation are compile programs in a by-default strict way. Details currentlybeingsimplified. Moredetailscanbefound here. at this wiki page. Cloud Haskell statics Mathieu Boespflug and Fa- Binary literals Herbert Valerio Riedel implemented cundo Domínguez at TweagIO are working on sup- the −XBinaryLiterals language extension which fi- port for Cloud Haskell’s static feature. Details here. nally closes the syntax gap relative to other lan- The current in-progress code review is available at guages which allow to write base-2 literals such as https://phabricator.haskell.org/D119. 0b11001001. This is in GHC 7.10. 10

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.