2012-03-13 101 views
4

基本上我有一個函數使用Maybe Int來顯示一個數獨問題。 Sudoku的解決方案僅包含Ints,並且用於顯示網格的代碼將幾乎完全相同,但Maybe Int用於Problems和Int用於解決方案。Haskell Int和Maybe Int

是否有可能使用需要Maybe Int的函數的Int值,如果是這樣的話?

編輯:只是會工作,有沒有辦法將Int列表轉換成Int的列表?

+3

把你的Int值換成'Just'? – arrowd 2012-03-13 16:43:44

+0

編輯我的問題有點像我看着使用Just。 – gdrules 2012-03-13 16:46:47

回答

9

如果xs[Int]並且您想要[Maybe Int],請使用map Just xs

+0

謝謝,那就是我一直在尋找的!說我可以在9分鐘內接受答案:) – gdrules 2012-03-13 16:49:00

4

只需使用「Just」即可。

foobar :: Maybe Int -> IO() 
foobar x = print x 

main = foobar (Just 3) 

要轉換列表,您可以使用map。

maybeList :: [a] -> [Maybe a] 
maybeList = map Just 

如果列表本身上做Just,你會Maybe [Int]結束。

+0

也謝謝你,這是一個很好的方法來做到這一點! – gdrules 2012-03-13 16:52:57

1

在前奏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裏有一個列表。

相關問題