Haskell:键入表示数独行?

时间:2014-06-16 21:00:35

标签: haskell types

在Haskell中,如何创建一个类型来表示长度为9的列表,其中每个元素都是0到9之间的Int?

1 个答案:

答案 0 :(得分:6)

您可以使用智能构造函数:

module Sudoku(SudokuSquare, sudokuSquare) where

import Data.Traversable(traverse)

data SudokuSquare = SSquare Int

sudokuSquare :: Int -> Maybe SudokuSquare
sudokuSquare i = if i >= 0 && i <= 9 then Just (SSquare i) else Nothing

buildRow :: [Int] -> Maybe [SudokuSquare]
buildRow = traverse sudokuSquare