String formatting in Haskell

前端 未结 5 598
一生所求
一生所求 2021-02-05 00:05

What is Haskell\'s equivalent of

string str = string.Format(\"{0} {1}\",10,20); // C#
相关标签:
5条回答
  • 2021-02-05 00:44

    Putting answer here in case somebody searching for formatting libraries in Haskell on StackOverflow. There's type-safe and fast formatting library called fmt now. With it you can write code like this:

    > "There are "+|n|+" million bicycles in "+|city|+"."
    
    0 讨论(0)
  • 2021-02-05 00:46

    Alternatively you could write

    unwords [show 10, show 20]
    

    or even

    unwords (map show [10, 20])
    
    0 讨论(0)
  • 2021-02-05 00:52

    Is this what you are looking for?

    printf "%d %d" 10 20
    

    See Text.Printf.

    0 讨论(0)
  • 2021-02-05 00:57

    There is a Printf module in GHC.

    import Text.Printf
    str :: String
    str = printf "%d %d" 10 20
    

    however it is probably simpler to just do

    str = show 10 ++ " " ++ show 20
    
    0 讨论(0)
  • 2021-02-05 01:06

    You could use the format function provided by the text-format-simple package:

    import Text.Format
    format "{0} {1}" [show 10, show 20]
    

    This function has the signature:

    format :: String -> [String] -> String
    

    So all you need is provide your parameters as strings.
    Another example:

    format "Some {0} believes that 1 + 1 = {1}." ["people",show 10]
    
    0 讨论(0)
提交回复
热议问题