I hat die folgende Struktur:Haskell schaffen neuen Operator und Steuerfehler
Terra [[ '0', '1', '0', '1'] [ '0', '1', '0', '1'] [ '1', '0', 'G', '1']]
und de Funktion:
esTerra:: Taulell -> (Int,Int) -> Bool
esTerra t (u,d) =
case t!!!u!!!d of
Left e -> False
Right p -> True
(!!!) :: [a] -> Int -> Either Bool a
xs !!! n | n < 0 = Left False -- error Exception: Prelude.!!:...
[] !!! _ = Left False -- error Exception: Prelude.!!:...
(x:_) !!! 0 = Right x
(_:xs) !!! n = xs!!!(n-1)
die Funktion !!! ist gleich der Vorgang !! aber wenn Sie eine Fehlermeldung zurück gibt False zurück
aber Return-Fehler:
Couldn't match expected type ‘[a0]’
with actual type ‘Either Bool [Char]’
In the first argument of ‘(!!!)’, namely ‘t !!! u’
In the expression: t !!! u !!! d
In the expression:
case t !!! u !!! d of {
Left e -> False
Right p -> True }
Weil?
Dankten
auf einer Randnotiz - Ihr 'Entweder Bool a' verwendet niemals' Left True', also ist das äquivalent zur Verwendung eines 'Maybe a', wenn Ihre Wahl ein' Entweder' ist, würde ich 'Entweder String' empfehlen und mit 'Left' für 'Left" nette beschreibende Fehlermeldung "' – epsilonhalbe