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

是否可以将 Int 值用于需要 Maybe Int 的函数,如果可以,如何实现?

编辑:只是可行,有没有办法将 Int 列表转换为 Int 列表?

有帮助吗?

解决方案

如果 xs 是一个 [Int] 你想要一个 [Maybe Int] 相反,使用 map Just xs.

其他提示

就用“就”吧。

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

main = foobar (Just 3)

要转换列表,您可以只使用map。

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

如果你这样做 Just 在列表本身上,你最终会得到 Maybe [Int].

sequence Prelude 中的函数与您需要的正好相反,但是 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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top