基本上我有一个使用Maybe Int来显示数独问题的函数。数独的解决方案仅包含Ints,显示网格的代码几乎相同,但用于解决问题的Int Int和用于解决方案的Int除外。
是否可以对需要Maybe Int的函数使用Int值,如果是这样的话?
编辑:只是工作,有没有办法将Int的列表转换为Int的?
答案 0 :(得分:9)
如果xs
是[Int]
而你想要[Maybe Int]
,请使用map Just xs
。
答案 1 :(得分: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]
。
答案 2 :(得分:1)
Prelude中的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
内有列表,我的版本会很方便。