Safe Haskell | None |
---|---|
Language | Haskell98 |
Development.Placeholders
Contents
Description
This module defines placeholders that you can use while coding to
allow incomplete code to compile. They work just like undefined
,
but with improved error messages and compile-time warnings.
- notImplemented :: Q Exp
- todo :: String -> Q Exp
- placeholder :: String -> Q Exp
- placeholderNoWarning :: String -> Q Exp
- data PlaceholderException = PlaceholderException String
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:
@
Placeholders
notImplemented :: Q Exp #
Indicates that this piece of code has not yet been implemented.
$notImplemented = $(placeholder "Unimplemented feature")
Indicates unimplemented code or a known bug with a custom message.
$(todo msg) = $(placeholder ("TODO: " ++ msg))
placeholder :: String -> Q Exp #
Generates an expression of any type that, if evaluated at runtime will
throw a PlaceholderException
. It is therefore similar to error
, except
that the source location is automatically included. Also, a warning is
generated at compile time so you won't forget to replace placeholders
before packaging your code.
placeholderNoWarning :: String -> Q Exp #
Similar to placeholder
, but does not generate a compiler warning. Use
with care!
Exceptions
data PlaceholderException #
Thrown when attempting to evaluate a placeholder at runtime.
Constructors
PlaceholderException String |
Instances