The placeholders package

[Tags:bsd3, library]

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

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. For details, see http://github.com/ahammar/placeholders


[Skip to Readme]

Properties

Versions 0.1
Dependencies base (==4.*), template-haskell [details]
License BSD3
Copyright (c) 2011 Andreas Hammar
Author Andreas Hammar
Maintainer Andreas Hammar <ahammar@gmail.com>
Stability Unknown
Category Development
Home page http://github.com/ahammar/placeholders
Source repository head: git clone git://github.com/ahammar/placeholders.git
Uploaded Fri Apr 29 05:06:32 UTC 2011 by AndreasHammar
Distributions Arch:0.1, LTSHaskell:0.1, NixOS:0.1
Downloads 3628 total (0 in the last 30 days)
Votes
2 []
Status Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for placeholders

Readme for placeholders-0.1

placeholders

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.

example

{-# 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.