diff --git a/haskell/README.md b/haskell/README.md index f99c40b18..899449b95 100644 --- a/haskell/README.md +++ b/haskell/README.md @@ -10,26 +10,54 @@ repo](https://github.com/docker-library/official-images). # What is Haskell? -[Haskell](http://www.haskell.org) is a [lazy](http://en.wikibooks.org/wiki/Haskell/Laziness), functional, statically-typed programming language with advanced type system features such as higher-rank, higher-kinded parametric [polymorphism](http://en.wikibooks.org/wiki/Haskell/Polymorphism), monadic [effects](http://en.wikibooks.org/wiki/Haskell/Understanding_monads/IO), generalized algebraic data types ([GADT](http://en.wikibooks.org/wiki/Haskell/GADT)s), flexible [type classes](http://en.wikibooks.org/wiki/Haskell/Advanced_type_classes), associated [type families](http://en.wikipedia.org/wiki/Type_family), and more. +[Haskell](http://www.haskell.org) is a +[lazy](http://en.wikibooks.org/wiki/Haskell/Laziness), functional, +statically-typed programming language with advanced type system features such as +higher-rank, higher-kinded parametric +[polymorphism](http://en.wikibooks.org/wiki/Haskell/Polymorphism), monadic +[effects](http://en.wikibooks.org/wiki/Haskell/Understanding_monads/IO), +generalized algebraic data types +([GADT](http://en.wikibooks.org/wiki/Haskell/GADT)s), flexible [type +classes](http://en.wikibooks.org/wiki/Haskell/Advanced_type_classes), associated +[type families](http://en.wikipedia.org/wiki/Type_family), and more. -Haskell's [`ghc`](http://www.haskell.org/ghc) is a [portable](https://ghc.haskell.org/trac/ghc/wiki/Platforms), [optimizing](http://benchmarksgame.alioth.debian.org/u64q/haskell.php) compiler with a foreign-function interface ([FFI](http://en.wikibooks.org/wiki/Haskell/FFI)), an [LLVM backend](https://www.haskell.org/ghc/docs/7.8.3/html/users_guide/code-generators.html), and sophisticated runtime support for [concurrency](http://en.wikibooks.org/wiki/Haskell/Concurrency), explicit/implicit [parallelism](http://community.haskell.org/~simonmar/pcph/), runtime [profiling](http://www.haskell.org/haskellwiki/ThreadScope), etc. Other Haskell tools like [`criterion`](http://www.serpentine.com/criterion/tutorial.html), [`quickcheck`](https://www.fpcomplete.com/user/pbv/an-introduction-to-quickcheck-testing), [`hpc`](http://www.haskell.org/haskellwiki/Haskell_program_coverage#Examples), and [`haddock`](http://en.wikipedia.org/wiki/Haddock_(software)) provide advanced benchmarking, property-based testing, code coverage, and documentation generation. +Haskell's [`ghc`](http://www.haskell.org/ghc) is a +[portable](https://ghc.haskell.org/trac/ghc/wiki/Platforms), +[optimizing](http://benchmarksgame.alioth.debian.org/u64q/haskell.php) compiler +with a foreign-function interface +([FFI](http://en.wikibooks.org/wiki/Haskell/FFI)), an [LLVM +backend](https://www.haskell.org/ghc/docs/7.8.3/html/users_guide/code-generators.html), +and sophisticated runtime support for +[concurrency](http://en.wikibooks.org/wiki/Haskell/Concurrency), +explicit/implicit [parallelism](http://community.haskell.org/~simonmar/pcph/), +runtime [profiling](http://www.haskell.org/haskellwiki/ThreadScope), etc. Other +Haskell tools like +[`criterion`](http://www.serpentine.com/criterion/tutorial.html), +[`quickcheck`](https://www.fpcomplete.com/user/pbv/an-introduction-to-quickcheck-testing), +[`hpc`](http://www.haskell.org/haskellwiki/Haskell_program_coverage#Examples), +and [`haddock`](http://en.wikipedia.org/wiki/Haddock_(software)) provide +advanced benchmarking, property-based testing, code coverage, and documentation +generation. -A large number of production-quality Haskell libraries are available from [Hackage](https://hackage.haskell.org). The [`cabal`](https://www.fpcomplete.com/user/simonmichael/how-to-cabal-install) tool fetches packages and builds projects using the Hackage ecosystem. +A large number of production-quality Haskell libraries are available from +[Hackage](https://hackage.haskell.org). The +[`cabal`](https://www.fpcomplete.com/user/simonmichael/how-to-cabal-install) +tool fetches packages and builds projects using the Hackage ecosystem. ![logo](https://raw.githubusercontent.com/docker-library/docs/master/haskell/logo.png) -## Contents +## About this image This image ships a minimal Haskell toolchain with the following packages: -* `ghc` 7.8.3 -* `alex` 3.1.3 -* `cabal-install` 1.20.0.3 -* `happy` 1.19.4 +* `ghc` +* `alex` +* `cabal-install` +* `happy` -## Usage +## How to use this image -* Start an interactive interpreter session with `ghci`: +Start an interactive interpreter session with `ghci`: $ docker run -it --rm haskell:7.8 GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help @@ -38,14 +66,15 @@ This image ships a minimal Haskell toolchain with the following packages: Loading package base ... linking ... done. Prelude> -* Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile inheriting from the base image: +Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile +inheriting from the base image: FROM haskell:7.8 RUN cabal update && cabal install MazesOfMonad VOLUME /root/.MazesOfMonad ENTRYPOINT ["/root/.cabal/bin/mazesofmonad"] -* Iteratively develop then ship a Haskell app with a Dockerfile utilizing the +Iteratively develop then ship a Haskell app with a Dockerfile utilizing the build cache: FROM haskell:7.8 @@ -70,9 +99,10 @@ build cache: WORKDIR /opt/server CMD ["snap-example"] -## Examples +### Examples -See the application snippet above in more detail in the [example snap application](https://github.com/darinmorrison/docker-haskell/tree/master/examples/7.8.3/snap). +See the application snippet above in more detail in the [example snap +application](https://github.com/darinmorrison/docker-haskell/tree/master/examples/7.8.3/snap). # License diff --git a/haskell/content.md b/haskell/content.md index 1e18a44fb..fa2c3ebda 100644 --- a/haskell/content.md +++ b/haskell/content.md @@ -1,25 +1,53 @@ # What is Haskell? -[Haskell](http://www.haskell.org) is a [lazy](http://en.wikibooks.org/wiki/Haskell/Laziness), functional, statically-typed programming language with advanced type system features such as higher-rank, higher-kinded parametric [polymorphism](http://en.wikibooks.org/wiki/Haskell/Polymorphism), monadic [effects](http://en.wikibooks.org/wiki/Haskell/Understanding_monads/IO), generalized algebraic data types ([GADT](http://en.wikibooks.org/wiki/Haskell/GADT)s), flexible [type classes](http://en.wikibooks.org/wiki/Haskell/Advanced_type_classes), associated [type families](http://en.wikipedia.org/wiki/Type_family), and more. +[Haskell](http://www.haskell.org) is a +[lazy](http://en.wikibooks.org/wiki/Haskell/Laziness), functional, +statically-typed programming language with advanced type system features such as +higher-rank, higher-kinded parametric +[polymorphism](http://en.wikibooks.org/wiki/Haskell/Polymorphism), monadic +[effects](http://en.wikibooks.org/wiki/Haskell/Understanding_monads/IO), +generalized algebraic data types +([GADT](http://en.wikibooks.org/wiki/Haskell/GADT)s), flexible [type +classes](http://en.wikibooks.org/wiki/Haskell/Advanced_type_classes), associated +[type families](http://en.wikipedia.org/wiki/Type_family), and more. -Haskell's [`ghc`](http://www.haskell.org/ghc) is a [portable](https://ghc.haskell.org/trac/ghc/wiki/Platforms), [optimizing](http://benchmarksgame.alioth.debian.org/u64q/haskell.php) compiler with a foreign-function interface ([FFI](http://en.wikibooks.org/wiki/Haskell/FFI)), an [LLVM backend](https://www.haskell.org/ghc/docs/7.8.3/html/users_guide/code-generators.html), and sophisticated runtime support for [concurrency](http://en.wikibooks.org/wiki/Haskell/Concurrency), explicit/implicit [parallelism](http://community.haskell.org/~simonmar/pcph/), runtime [profiling](http://www.haskell.org/haskellwiki/ThreadScope), etc. Other Haskell tools like [`criterion`](http://www.serpentine.com/criterion/tutorial.html), [`quickcheck`](https://www.fpcomplete.com/user/pbv/an-introduction-to-quickcheck-testing), [`hpc`](http://www.haskell.org/haskellwiki/Haskell_program_coverage#Examples), and [`haddock`](http://en.wikipedia.org/wiki/Haddock_(software)) provide advanced benchmarking, property-based testing, code coverage, and documentation generation. +Haskell's [`ghc`](http://www.haskell.org/ghc) is a +[portable](https://ghc.haskell.org/trac/ghc/wiki/Platforms), +[optimizing](http://benchmarksgame.alioth.debian.org/u64q/haskell.php) compiler +with a foreign-function interface +([FFI](http://en.wikibooks.org/wiki/Haskell/FFI)), an [LLVM +backend](https://www.haskell.org/ghc/docs/7.8.3/html/users_guide/code-generators.html), +and sophisticated runtime support for +[concurrency](http://en.wikibooks.org/wiki/Haskell/Concurrency), +explicit/implicit [parallelism](http://community.haskell.org/~simonmar/pcph/), +runtime [profiling](http://www.haskell.org/haskellwiki/ThreadScope), etc. Other +Haskell tools like +[`criterion`](http://www.serpentine.com/criterion/tutorial.html), +[`quickcheck`](https://www.fpcomplete.com/user/pbv/an-introduction-to-quickcheck-testing), +[`hpc`](http://www.haskell.org/haskellwiki/Haskell_program_coverage#Examples), +and [`haddock`](http://en.wikipedia.org/wiki/Haddock_(software)) provide +advanced benchmarking, property-based testing, code coverage, and documentation +generation. -A large number of production-quality Haskell libraries are available from [Hackage](https://hackage.haskell.org). The [`cabal`](https://www.fpcomplete.com/user/simonmichael/how-to-cabal-install) tool fetches packages and builds projects using the Hackage ecosystem. +A large number of production-quality Haskell libraries are available from +[Hackage](https://hackage.haskell.org). The +[`cabal`](https://www.fpcomplete.com/user/simonmichael/how-to-cabal-install) +tool fetches packages and builds projects using the Hackage ecosystem. %%LOGO%% -## Contents +## About this image This image ships a minimal Haskell toolchain with the following packages: -* `ghc` 7.8.3 -* `alex` 3.1.3 -* `cabal-install` 1.20.0.3 -* `happy` 1.19.4 +* `ghc` +* `alex` +* `cabal-install` +* `happy` -## Usage +## How to use this image -* Start an interactive interpreter session with `ghci`: +Start an interactive interpreter session with `ghci`: $ docker run -it --rm haskell:7.8 GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help @@ -28,14 +56,15 @@ This image ships a minimal Haskell toolchain with the following packages: Loading package base ... linking ... done. Prelude> -* Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile inheriting from the base image: +Dockerize a [Hackage](http://hackage.haskell.org) app with a Dockerfile +inheriting from the base image: FROM haskell:7.8 RUN cabal update && cabal install MazesOfMonad VOLUME /root/.MazesOfMonad ENTRYPOINT ["/root/.cabal/bin/mazesofmonad"] -* Iteratively develop then ship a Haskell app with a Dockerfile utilizing the +Iteratively develop then ship a Haskell app with a Dockerfile utilizing the build cache: FROM haskell:7.8 @@ -60,6 +89,7 @@ build cache: WORKDIR /opt/server CMD ["snap-example"] -## Examples +### Examples -See the application snippet above in more detail in the [example snap application](https://github.com/darinmorrison/docker-haskell/tree/master/examples/7.8.3/snap). +See the application snippet above in more detail in the [example snap +application](https://github.com/darinmorrison/docker-haskell/tree/master/examples/7.8.3/snap).