interpol: GHC pre-processor to enable variable interpolation in strings

[ gpl, language, library, program, source-tools ] [ Propose Tags ]

This pre-processor enables variable interpolation in strings. See the file for details.

[Skip to Readme]
Versions 0.1.0, 0.2.0, 0.2.1, 0.2.2, 0.2.3
Dependencies base (==4.*), preprocessor-tools, regex-posix, syb [details]
License LicenseRef-GPL
Author Alexandru Scvortov <>
Category Source-tools, Language
Home page
Uploaded by AlexandruScvortov at Thu Nov 3 22:33:53 UTC 2011
Distributions NixOS:0.2.3
Executables interpol
Downloads 1738 total (11 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-26 [all 7 reports]
Hackage Matrix CI


Maintainer's Corner

For package maintainers and hackage trustees

Readme for interpol-0.1.0

[back to package description]


variable interpolations


The interpol pre-processor parses Haskell source file before GHC and performs variable interpolation statically. Concretely, it replaces {identifier} patterns in literal strings with show identifier. For instance,

okVal = 23
"I have {okVal} apples."


"I have 23 apples."

This works on any type that has a Show instance and is safe, in the sense that it does not disable any of GHC's normal checks (i.e. interpolating a non-existing identifier or one whose type does not have a Show instance will result in the appropriate error).


To use interpol, install the cabal package (and/or make sure that the interpol executable is in your path), and compile with the "-F -pgmF interpol" GHC options. For instance, one of the tests for this package is compiled with:

ghc -F -pgmF interpol Test/One.hs

Alternatively, you may specify the options in a GHC_OPTIONS pragma at the top of the file:

{-# OPTIONS_GHC -F -pgmF interpol #-}


The interpol pre-processor effectively replaces "\\{[A-z_][A-z0-9_]*}" with "++ show <ident> ++". So,

"I have {okVal} apples."

actually becomes

("I have " ++ show okVal ++ " apples.")

Run the pre-processor manually and check out the source for details (seriously now, this README is longer than the source).