我想連接在Haskell字符串和也整數 從功能是這樣的:如何將整數連接爲Haskell中的字符串?
arc 13 34 234 3
13 34 234 3將圓弧函數的自變量,我想輸出像
"arc(13, 34, 234, 3)"
爲字符串我怎樣才能實現這個?
我想連接在Haskell字符串和也整數 從功能是這樣的:如何將整數連接爲Haskell中的字符串?
arc 13 34 234 3
13 34 234 3將圓弧函數的自變量,我想輸出像
"arc(13, 34, 234, 3)"
爲字符串我怎樣才能實現這個?
如果您想要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"
我試過,但ghci中給出˙Arc.hs:30:1: 無效簽名類型:圓弧::詮釋 - >內部 - >內部 - >內部 - >顯示 應該是形式
你無法命名以大寫字母開頭的函數(或值):'Arc'在Haskell中是無效的函數名稱。 (只有以大寫字母開頭的構造函數,類型,模塊和類名。) – 2012-03-05 16:38:29
數字列表如何連接成一個字符串?看起來像[Int] -> String
函數可以幫助這裏。
> concat . intersperse ", " . map show $ [13, 34, 234, 3]
"13, 34, 234, 3"
因此,讓我們爲該字符串添加一些括號和「弧」。
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)"
你確定你的'arc'功能應該有4'Int'參數呢?也許[Int]會更有用嗎? – 2012-03-05 17:20:15