Haskell Int и Maybe Int - PullRequest
       17

Haskell Int и Maybe Int

4 голосов
/ 13 марта 2012

По сути, у меня есть функция, которая использует Maybe Int для отображения проблемы с судоку.Решение для Судоку содержит только Ints, и код для отображения Grid будет практически идентичен, за исключением Maybe Int, используемого для Задач, и Int, используемого для Решений.

Можно ли использовать значения Int дляфункция, которая требует Maybe Int, если да, то как?

Редактировать: Просто сработало бы, есть ли способ преобразовать список Int в, возможно, Int?

Ответы [ 3 ]

9 голосов
/ 13 марта 2012

Если xs является [Int] и вы хотите вместо [Maybe Int], используйте map Just xs.

4 голосов
/ 13 марта 2012

Просто используйте «Just».

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

main = foobar (Just 3)

Чтобы преобразовать список, вы можете просто использовать карту.

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

Если вы сделаете Just в самом списке, выв конечном итоге с Maybe [Int].

1 голос
/ 14 марта 2012

Функция 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.

...