haskellscript

Command line tool for running Haskell scripts with a hashbang.

http://github.com/seanparsons/haskellscript/

Latest on Hackage:0.2.3

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD-3-Clause licensed by Sean Parsons
Maintained by [email protected]

This tool provides the ability to script in a shell with Haskell (including dependencies) the same way that has been possible with bash scripts or Python.

Examples

Print out JSON constructed with Aeson

https://github.com/seanparsons/haskellscript/blob/master/Example.hs

Lookup weather for your current IP address

https://github.com/seanparsons/haskellscript/blob/master/WeatherExample.hs

Prerequisites

A sandbox capable install of Cabal.

Howto

The script falls into three main parts:

  • The hashbang first line:

#!/usr/bin/env haskellscript
  • Dependencies (potentially including versions):

--#aeson
  • The code:

import Data.Aeson
import Data.ByteString.Lazy hiding (putStrLn, unpack)
import Data.Text
import Data.Text.Encoding
jsonExample = object ["Test" .= True, "Example" .= True]
main = putStrLn $ unpack $ decodeUtf8 $ toStrict $ encode jsonExample

Note that because the dependencies specified are hashed to enable re-use it's worth specifying exact versions across multiple scripts to prevent the version used being quite old after a while.