Skip to content

Latest commit

 

History

History
47 lines (34 loc) · 1.39 KB

readme.md

File metadata and controls

47 lines (34 loc) · 1.39 KB

Shell Scripting With Haskell

Build Status

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

Lookup weather for your current IP address

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:
    {-# LANGUAGE OverloadedStrings #-}
    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.