簡體   English   中英

在Haskell中輸出列表列表?

[英]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.Maybemaybe函數,我們可以將其作為從每個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM