[英]Outputting a list of lists in Haskell?
我是Haskell的初學者,但我被要求創建一個數獨求解器。 我一直在用它做一些穩定的進步,但它要求我做的一件事就是打印一個有趣的數獨謎題表示。 Puzzle數據類型被定義為列表列表,因此[[Maybe Int]]
並且這由塊值( [Maybe Int]
表示一行)組成。
功能簽名是這樣的:
printPuzzle :: Puzzle -> IO ()
我該如何輸出? 我知道這可能是一個簡單的問題而且我錯過了重點,但我還沒有達到我在語法方面領先的階段。 任何幫助將非常感激!
簡單漂亮的打印可以通過以下方式非常簡潔地完成:
import Data.Char (intToDigit)
showRow :: [Maybe Int] -> String
showRow = map (maybe ' ' intToDigit)
showPuzzle :: [[Maybe Int]] -> [String]
showPuzzle = map showRow
printPuzzle :: [[Maybe Int]] -> IO ()
printPuzzle = mapM_ putStrLn . showPuzzle
showRow
從你的網格中獲取一行並打印它 - 使用Data.Maybe
的maybe
函數,我們可以將其作為從每個Maybe Int
值的快速映射寫入默認的“空格”值或表示數字的字符(使用intToDigit
)。
showPuzzle
只是將showRow
映射到外部列表。
printPuzzle
只是使用以前的純定義來給出打印網格的不純動作,通過putStrLn
每行的漂亮打印。
快速演示:
> printPuzzle [[Just 1, Nothing, Just 3],
[Nothing, Just 3, Just 6],
[Just 2, Just 4, Just 5]]
1 3
36
245
雖然您可以輕松修改上述代碼以打印更明確的內容,例如:
1X3
X36
245
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.