0

このコミュニティのメンバーの助けを借りて、特にダニエルによって、パスカルの三角形の数のリストを作成することができます。でも、三角形を三角形として表示したいときはいつでも、次のようなエラーが発生します。入力'import'の解析エラー。私はsome1が私にこれを説明するために前に進むことを期待しています。コードは以下のとおりです。

    import Text.Printf

    pascal :: [[Integer]]
    pascal = iterate (\prev -> 1 : zipWith (+) prev (tail prev) ++ [1]) [1]

    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
4

1 に答える 1

1

要約回答:

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拡張機能はインストールできません。)
于 2012-11-13T21:20:44.457 に答える