{-# OPTIONS_GHC -fno-warn-name-shadowing #-} module Text.Format ( format ) where import Data.List.Utils (replace) {- | Formats input string, using C\#-style. First param is the input string in the form: \"Please, replace here {0} and here {1}\". Second param is list of strings to put into {0}, {1} .. {N} positions. Example: > format "Some {0} think that 1 + 1 = {1}." ["people",show 10] Result is: > "Some people think that 1 + 1 = 10." -} format :: String -> [String] -> String format a b = doFormat a (0::Int,b) where doFormat a (_,[]) = a doFormat a (n,(b:bs)) = replace (old n) b a `doFormat` (n+1,bs) old n = "{" ++ show n ++ "}"