Personal tools

Haskell Platform

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
Line 4: Line 4:
 
that would be the minimum standard for Haskell library support on a
 
that would be the minimum standard for Haskell library support on a
 
system.
 
system.
 +
 +
More generally, if we want tools as well as libraries, then the simpler name
 +
''Haskell Platform'' may be more appropriate.
  
 
There are now more than 500 libraries available for Haskell,  on
 
There are now more than 500 libraries available for Haskell,  on
Line 17: Line 20:
 
library set that should be available and adopted, to further encourage
 
library set that should be available and adopted, to further encourage
 
Haskell use.
 
Haskell use.
 +
 +
Ensuring that the chosen set of library versions works well together, and
 +
with a particular version of GHC (and other tools), is a major goal.
  
 
== Discussion ==
 
== Discussion ==
Line 28: Line 34:
 
* The HLP should provide good coverage for all typical tasks one might want to accomplish with the language, given library availability.
 
* The HLP should provide good coverage for all typical tasks one might want to accomplish with the language, given library availability.
  
* No bottlenecks: release of the HLP should be entirely independent from GHC
+
* No bottlenecks: release of the HLP should be entirely independent from GHC, and also independent of the development cycle of any individual library or tool.
  
 
===Quality Control===
 
===Quality Control===
Line 216: Line 222:
 
**unix
 
**unix
 
**parseargs
 
**parseargs
 +
 +
== Tools ==
 +
 +
Language-processing tools should probably also be considered to be part of the platform.  Commonly-needed tools include:
 +
 +
* ghc
 +
* happy
 +
* alex
 +
* haddock
 +
* cpphs
 +
* cabal-install (now known simply as cabal?)
 +
 +
What else might we consider?
 +
 +
* DrIFT or derive
 +
* throw in another compiler - e.g. Hugs?
 +
* c2hs
 +
* hsc2hs
  
 
==Release mechanics==
 
==Release mechanics==
  
==Public "Haskell Compliant" list==
+
==Public "Haskell Platform Compliant" list==
  
 
To encourage adoption of the HLP, distributions that support the HLP
 
To encourage adoption of the HLP, distributions that support the HLP
will be publically listed as e.g. "Haskell Compliant"
+
will be publically listed as e.g. "Haskell Platform Compliant"
  
 
==Management==
 
==Management==

Revision as of 14:15, 22 July 2008

Haskell: Batteries Included

The Haskell Library Platform (HLP) is the name of a proposed library set that would be the minimum standard for Haskell library support on a system.

More generally, if we want tools as well as libraries, then the simpler name Haskell Platform may be more appropriate.

There are now more than 500 libraries available for Haskell, on hackage. Choosing which libraries to support on a distro is currently done on an ad hoc basis, with significant variation from one distribution to another.

Some, such as Arch Linux, or Gentoo Linux, include as many libraries as possible (typically over 400), while others have the bare minimum required to build ghc and say, darcs and xmonad.

The Haskell community needs to provide direction and blessing to a library set that should be available and adopted, to further encourage Haskell use.

Ensuring that the chosen set of library versions works well together, and with a particular version of GHC (and other tools), is a major goal.

Contents

1 Discussion

  • A discussion took place in June and July 2008 about the direction of the HLP.

2 Criteria

  • GHC would build against its own core libraries, but would be generally distributed with the HLP.
  • The HLP should provide good coverage for all typical tasks one might want to accomplish with the language, given library availability.
  • No bottlenecks: release of the HLP should be entirely independent from GHC, and also independent of the development cycle of any individual library or tool.

2.1 Quality Control

  • cabal-installable libraries with haddocks.

3 Current library set

3.1 Core system

This will be on every system, as they're required for GHC to build:

  • array
  • base
  • bytestring
  • Cabal
  • containers
  • directory
  • editline
  • filepath
  • haskell98
  • hpc
  • integer-gmp
  • old-locale
  • old-time
  • packedstring
  • pretty
  • process
  • random
  • template-haskell
  • unix OR Win32

3.2 Extra libraries

Current libraries available in the 'extralibs' bundle provided with GHC, a descendent of what used to by fptools, with a few additions.

  • ALUT
  • GLUT
  • HUnit
  • ObjectIO
  • OpenAL
  • OpenGL
  • QuickCheck
  • cgi
  • fgl
  • haskell-src
  • html
  • mtl
  • network
  • parsec
  • parallel
  • regex-base
  • regex-compat
  • regex-posix
  • stm
  • time
  • xhtml

3.3 Hackage

A quick list of key libraries on Hackage, by genre:

  • Codecs
    • base64
    • bzlib
    • zlib
    • dataenc
    • encoding
    • iconv
    • mime
    • utf8-string
    • tar
    • nano-md5/hmac
    • pureMD5
  • Control
    • arrows
    • category-extras
    • logict
    • maybet
    • mtl
    • reactive
    • monad-lib
  • Data
    • array
    • binary
    • binary-strict
    • bloomfilter
    • bytestring
    • carray
    • containers
    • dlist
    • lazyarray
    • numbers
    • ranged-sets
    • stream
    • strict
    • suffixtree
    • avltree
    • bitset
    • bktrees
    • fingertree
    • random-access-list
    • heap
  • Database
    • hdbc
    • takusen
    • sqlite
  • Development
    • alex
    • c2hs
    • cpphs
    • derive
    • haddock
    • happy
    • cabal
    • cabal-install
    • hscolour
  • Graphics
    • Chart
    • gd
    • hgl
    • hpdf
    • opengl
    • x11
  • GUI
    • gtk2hs
    • wxHaskell
  • Languages and parsing
    • haskell-src
    • Language.C
    • parsec
    • polyparse
    • csv
    • feed
    • rss
    • haxml
    • hxt
    • xml
    • html
    • xhtml
    • i18n
    • hssyck
    • pcre-light
    • regex
    • hstemplate
  • Math
    • blas
    • hmatrix
    • cmath
    • fft
    • mersenne-random
  • Network
    • cgi
    • cgi-undecidable
    • curl
    • download-curl
    • fastcgi
    • ftphs
    • hS3
    • http
    • network
    • network-bytestring
  • Sound
    • alut
    • openal
  • System
    • bytestring-mmap
    • directory
    • flepath
    • locale
    • time
    • parsedate
    • process
    • random
    • unix
    • parseargs

4 Tools

Language-processing tools should probably also be considered to be part of the platform. Commonly-needed tools include:

  • ghc
  • happy
  • alex
  • haddock
  • cpphs
  • cabal-install (now known simply as cabal?)

What else might we consider?

  • DrIFT or derive
  • throw in another compiler - e.g. Hugs?
  • c2hs
  • hsc2hs

5 Release mechanics

6 Public "Haskell Platform Compliant" list

To encourage adoption of the HLP, distributions that support the HLP will be publically listed as e.g. "Haskell Platform Compliant"

7 Management

8 Next Steps

What are the next steps to move this process forward? Build distribution packages for the distros listed above, containing the haskell packages listed above?

9 History

  • fptools
  • extralibs/ core libs

10 Related