Placeholders for use while developing Haskell code

Version on this page:0.1
LTS Haskell 8.6:0.1
Stackage Nightly 2017-03-29:0.1
Latest on Hackage:0.1
BSD3 licensed by Andreas Hammar
Maintained by Andreas Hammar

Module documentation for 0.1


While working on some Haskell code, it is often useful to develop incrementally by inserting undefined as a placeholder for missing code.

This approach has a couple of drawbacks.

  • If you have several occurrences of undefined in your code, it can be hard to track down the one reponsible for the error at run-time.

  • It is too easy to forget to replace undefined with the proper code, which might cause unexpected errors.

This library provides placeholders that produce better messages when evaluated at run-time and also generate compile-time warnings so that they do not get forgotten so easily.


{-# LANGUAGE TemplateHaskell #-}

import Development.Placeholders

theUltimateAnswer :: Int
theUltimateAnswer = $notImplemented

main = do
    putStrLn "The ultimate answer:"
    print theUltimateAnswer

This will compile with a warning about the unimplemented function:

$ ghc --make Simple.hs
Simple.hs:6:21: Unimplemented feature

At runtime, an exception will be thrown when the placeholder is evaluated, indicating the location of the placeholder.

$ ./Simple
The ultimate answer:
Simple: PlaceholderExcption "Unimplemented feature at Simple.hs:6:21"

If compiled with the GHC flag -Werror, the warning will get turned into an error and compilation will fail. -Werror can therefore be used to verify that you haven't left any unintended placeholders behind.

comments powered byDisqus