私はちょうどハスケルを学び始めて、オンラインでいくつかの問題を抱えています。ほとんどの場合、私は解決策を理解することができますが、私は期待される出力形式で印刷することができません。ハスケルでパスカルの三角形を印刷
たとえば、私はパスカルの三角形のプログラムを実行しようとしました。 PascalのTriangleをIntsのリストのリストとして生成する方法を見つけましたが、それをどのように印刷するかは分かりません。
ここに私のコードです。
import Data.List
pascal n = map liner [0..n]
where liner x = map (comb x) [0..x]
comb n 0 = 1
comb 0 r = 0
comb n r = comb (n-1) (r-1) * n `div` r
main = do
order <- getLine
let output = pascal . (read :: String -> Int) $ order
print output
現在、出力は、私は、フォーム私はこれをどのように行うのです
1
1 1
1 2 1
1 3 3 1
...
でそれを印刷したい
[[1],[1,1],[1,2,1],[1,3,3,1]...
のようなものですか?私はmapM_やintercalateのようなものを使ってみました。私はまだモナドには入っていないので、mapMのしくみを理解できません。
本当にモナドを理解する必要はありません。 'f = unlines。 map(intercalate ""。map show) 'は' [[Int]] '値の中から目的の' String'値を生成します。単に結果を 'putStr'に渡します。 – Jubobs
と 'intercalate" "'は 'unwords'だけです - あなたは' putStr 'でそれを取得します。行かない。地図(unwords。地図表示) ' – Carsten
美しいアア。私は 'lines'と' unlines'と 'map'をすべて混同していました。私は正しい方法で 'ショー 'を使っていませんでした。ありがとう! –