我想在Haskell和整数中连接字符串 从这样的功能:
arc 13 34 234 3
13 34 234 3将是arc函数的参数,我希望输出像
"arc(13, 34, 234, 3)"
作为String我该如何实现呢?
答案 0 :(得分:7)
如何将数字列表连接成字符串?看起来某些[Int] -> String
功能可以在这里提供帮助。
> concat . intersperse ", " . map show $ [13, 34, 234, 3]
"13, 34, 234, 3"
所以,让我们在该String中添加一些括号和“arc”。
import Data.List (intersperse)
arc :: [Int] -> String
arc nums = "arc(" ++ (concat . intersperse ", " . map show $ nums) ++ ")"
我们得到答案。
> arc [13, 34, 234, 3]
"arc(13, 34, 234, 3)"
如果你真的需要像Int -> Int -> Int -> Int -> String
这样的签名功能:
arc' :: Int -> Int -> Int -> Int -> String
arc' a1 a2 a3 a4 = "arc(" ++ (concat . intersperse ", " . map show $ [a1,a2,a3,a4]) ++ ")"
> arc' 13 34 234 3
"arc(13, 34, 234, 3)"
答案 1 :(得分:5)
如果您想要String
输出,典型的技巧是创建ShowS
,这只是String -> String
的另一个名称。
showsArc :: Int -> Int -> Int -> Int -> ShowS
showsArc a b c d = showString "arc" . shows (a, b, c, d)
>>> showsArc 13 34 234 3 []
"arc(13,34,234,3)"
函数调用结束时的[]
只是一个空字符串。它允许您将数据附加到末尾,而不必担心O(N)
字符串连接。
>>> showsArc 13 34 234 3 " and some extra text"
"arc(13,34,234,3) and some extra text"