在这个社区的成员的帮助下,尤其是丹尼尔,我可以找到帕斯卡三角形数字列表。 BUt每当我想将三角形显示为三角形时,它会给出错误:输入'import'上的解析错误。我告诉some1将cme向前解释我这个。代码如下:
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
答案 0 :(得分: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
即可。)
下面讨论的其他要点:
prettyPascal
,而不是PrettyPascal
。Eq a =>
而不是Eq a ->
PrettyPascal.hs
。:l PrettyPascal
。codepad.org
以获得第二意见。 (您也可以下载并安装快速Hugs编译器,该编译器执行Haskell 98和多参数类型类,但没有大量的ghc扩展。)