Ich habe eine Liste von Elementen:Haskell Mustererkennung auf Inhalt Liste
data Foo = A Int | B Int | C Int
myList :: [Foo]
myList = [A 1, B 2, C 3]
Ich möchte eine Funktion, die den Wert eines bestimmten Konstruktor wird, falls vorhanden:
-- returns value of the first A constructor, if exists:
getA :: [Foo] -> Maybe Int
-- returns value of the first B constructor, if exists:
getB :: [Foo] -> Maybe Int
Jede elegante Lösung ? Und was ist mit einer getX
Funktion, die in der Lage ist, den Wert eines bestimmten Konstruktors in der Liste zu erhalten?
Dank bekommen, das ist elegant. Ich vergesse immer das Listenverständnis. – cdupont
In Bezug auf die Generalisierung könnte der somethingToRepresentAConstructor ein String sein? – cdupont
Hmmm, dies zu tun ist sicherlich möglich .... Es auf eine elegante Art und Weise zu tun, das ist eine andere Frage .... Der Brute-Force-Ansatz wäre, es von Hand zu schreiben 'getX" A "= getA; getX "B" = getB'. – jamshidh