Haskell Int и, возможно, Int
Вопрос
По сути, у меня есть функция, которая использует 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)
Чтобы преобразовать список, вы можете просто использовать карту.
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
.