0

文字列の書式設定に関する問題を解決しようとしていますが、うまく機能していないようです。

これらは単なる計算であるため、整数を出力する2つの関数があり、これら2つの計算を使用して3番目の新しい出力で文字列を作成し、それをきれいにします。表(列と行)のように表示したいと思います。

私がこれまでに試していることは次のとおりです。

   tableShow :: Int -> Int -> String
   tableShow n 0 = putStrLn (n  power1  power2)
   tableShow n k 
       | let list_k = [0..k]
       | k > 0      =  show(unlines[n ++ "\t" calc1 x k ++ "\t" ++ "\t" ++ calc2 x k | x <- list_k])

calc1 と calc2 は、ユーザーが指定した 2 つの整数を取り、それらに対して単純な計算を行い、値を返します。少なくとも私はそれらが魅力のように機能するようになりました。:)

誰が私が間違っているのか良い考えを持っていますか?!? 私を正しい方向に向けることができる人はいますか?

ありとあらゆるアイデアや提案は大歓迎です。私は今週末ずっとここにいます :/

//よろしく

4

2 に答える 2

4
tableShow :: Int -> Int -> String
tableShow n 0 = putStrLn (n  power1  power2)
tableShow n k 
    | let list_k = [0..k]
    | k > 0      =  show(unlines[n ++ "\t" calc1 x k ++ "\t" ++ "\t" ++ calc2 x k | x <- list_k])

問題がエラーなのか、関数が意図したとおりに機能しないのかについては言及しませんでしたが、letバインディング構文がオフになっていて、++. あなたが何を意図していたのかはわかりませんがn power1 power2、乗算が必要だったと思います。そのはず:

tableShow :: Int -> Int -> String
tableShow n 0 = putStrLn (n * power1 * power2)
tableShow n k
    | k > 0 = let list_k = [0..k] in 
              show(unlines[n ++ "\t" ++ calc1 x k ++ "\t" ++ "\t" ++ calc2 x k | x <- list_k])

チュートリアルを 1 つか 2 つ見て、構文を理解することをお勧めします。

于 2012-09-09T21:53:55.903 に答える
2

Intsなどの基本的な値を文字列に変換するには、showを使用します。

multMsg x y = "The product of " ++ show x ++ " and " ++ show y ++ " is " ++ show (x*y)

しかし、私は通常、この状況でconcatを使用します。

multMsg2 x y = concat ["The product of ", show x, " and ", show y, " is ", show (x*y)]
于 2012-09-10T01:15:58.880 に答える