私は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
を出力する場合は、String -> String
の別の名前であるShowS
を作成するのが典型的な方法です。
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のは、与えアーク::のInt - >のInt - >のInt - >のInt - > フォーム
˙
数字のリストはどのようにして文字列に連結できますか?いくつかのように見える[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]はもっと使えるでしょうか? 30::1: 無効な型シグネチャ:˙Arc.hsを –