Frage

Im Wesentlichen habe ich eine Funktion, die Maybe Ints verwendet, um ein Sudoku-Problem anzuzeigen.Die Lösung des Sudokus enthält nur Ints und der Code zur Anzeige des Rasters ist nahezu identisch, mit Ausnahme von Maybe Int für Probleme und Int für Lösungen.

Ist es möglich, Int-Werte für eine Funktion zu verwenden, die Maybe Int erfordert, und wenn ja, wie?

Bearbeiten:Würde einfach funktionieren. Gibt es eine Möglichkeit, eine Liste von Ints in vielleicht Ints umzuwandeln?

War es hilfreich?

Lösung

Wenn xs ist ein [Int] und du willst ein [Maybe Int] Verwenden Sie stattdessen map Just xs.

Andere Tipps

Verwenden Sie einfach „Just“.

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

main = foobar (Just 3)

Um eine Liste zu konvertieren, können Sie einfach Map verwenden.

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

Wenn Sie tun Just Auf der Liste selbst werden Sie am Ende landen Maybe [Int].

Der sequence Funktion in Prelude macht genau das Gegenteil von dem, was Sie brauchen, aber die sequence Version in Traversable funktioniert für Sie:

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]

Natürlich map Just ist in Ihrem Fall einfacher, aber meine Version ist praktisch, wenn Sie eine Liste darin haben Just.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top