要約回答:
module PrettyPascal where -- good practice, means you can combine it with other code
import Text.Printf
pascal :: [[Integer]]
pascal = iterate (\prev -> 1 : zipWith (+) prev (tail prev) ++ [1]) [1]
where
前の行よりもさらにインデントする必要があり、次の行と一致longest
する必要がありますrows
:
prettyPascal :: Int -> IO ()
prettyPascal n = mapM_ (\r -> printf "%*s\n" (div (longest + length r) 2) r) rows
where rows = map (unwords . map show) $ take (n + 1) pascal
longest = length $ last rows
あなたはすることができます main = prettyPascal 10
が、あなたは好むかもしれません:
main =
putStrLn "How many rows of Pascal's triangle would you like to see?"
>> readLn >>= prettyPascal
(ghciまたはHugsを使用している場合は、は必要ありません。プロンプトで入力main
するだけですprettyPrint 10
。)
以下の議論からの他のポイント:
- Haskellは大文字と小文字を区別するため
prettyPascal
、ではなく、大文字と小文字を区別する必要がありPrettyPascal
ます。
- (他のコードのように)型クラスを使用している場合は、
Eq a =>
代わりにEq a ->
- 入力ミスを避けるためにコピーアンドペーストを使用してください
- 関数を。のようなファイルに保存します
PrettyPascal.hs
。
- 次に、と入力して関数をghciにロードします
:l PrettyPascal
。
- コンパイラなのかコードなのかわからない場合は
codepad.org
、セカンドオピニオンのためにコピーアンドペーストしてください。(Haskell 98とマルチパラメーター型クラスを実行する高速Hugsコンパイラーをダウンロードしてインストールすることもできますが、多くのghc拡張機能はインストールできません。)