Haskell Int和Maybe Int

时间:2012-03-13 16:42:16

标签: haskell int maybe

基本上我有一个使用Maybe Int来显示数独问题的函数。数独的解决方案仅包含Ints,显示网格的代码几乎相同,但用于解决问题的Int Int和用于解决方案的Int除外。

是否可以对需要Maybe Int的函数使用Int值,如果是这样的话?

编辑:只是工作,有没有办法将Int的列表转换为Int的?

3 个答案:

答案 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内有列表,我的版本会很方便。