基本上我有一個函數使用Maybe Int來顯示一個數獨問題。 Sudoku的解決方案僅包含Ints,並且用於顯示網格的代碼將幾乎完全相同,但Maybe Int用於Problems和Int用於解決方案。Haskell Int和Maybe Int
是否有可能使用需要Maybe Int的函數的Int值,如果是這樣的話?
編輯:只是會工作,有沒有辦法將Int列表轉換成Int的列表?
基本上我有一個函數使用Maybe Int來顯示一個數獨問題。 Sudoku的解決方案僅包含Ints,並且用於顯示網格的代碼將幾乎完全相同,但Maybe Int用於Problems和Int用於解決方案。Haskell Int和Maybe Int
是否有可能使用需要Maybe Int的函數的Int值,如果是這樣的話?
編輯:只是會工作,有沒有辦法將Int列表轉換成Int的列表?
如果xs
是[Int]
並且您想要[Maybe Int]
,請使用map Just xs
。
謝謝,那就是我一直在尋找的!說我可以在9分鐘內接受答案:) – gdrules 2012-03-13 16:49:00
只需使用「Just」即可。
foobar :: Maybe Int -> IO()
foobar x = print x
main = foobar (Just 3)
要轉換列表,您可以使用map。
maybeList :: [a] -> [Maybe a]
maybeList = map Just
如果列表本身上做Just
,你會Maybe [Int]
結束。
也謝謝你,這是一個很好的方法來做到這一點! – gdrules 2012-03-13 16:52:57
在前奏sequence
功能則正好相反,你需要什麼,但sequence
版本Traversable
爲你工作:
import Data.Traversable as T
T.sequence $ Just [1..10]
--[Just 1,Just 2,Just 3,Just 4,Just 5,Just 6,Just 7,Just 8,Just 9,Just 10]
當然map Just
的是你的情況更容易,但我的版本是很方便,如果你在Just
裏有一個列表。
把你的Int值換成'Just'? – arrowd 2012-03-13 16:43:44
編輯我的問題有點像我看着使用Just。 – gdrules 2012-03-13 16:46:47