Gepostet: |
Formeln der Aussagenlogik | ||||||||||
Hallo Ich habe folgendes Problem ich habe den Type AL mit data AL = V Char | And AL AL | Or AL AL | Not AL vorgegeben. Nun soll ich eingegebene Variablen logisch verknüpfen und die Menge dieser in einer Liste aus geben, sodass ich z.B. bei Eingabe von (V 'c') And (V 'b') (V 'a')) als Ergebnis [c,b,a| erhalte. Ich weiß nun leider auch nicht ob ich das Prinzip des Verknüpfens so richtig verstanden habe, aber ich hoffe. Meine Idee hierbei war nun das:
aber irgendwie geht das nicht so wie ich mir das vorgestellt habe...Ich hoffe ihr könnt mir dabei weiterhelfen. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Sieht aber richtig aus. Was stört dich denn an dem Ergebnis? Das einzige Problem, was ich sehen würde, sind doppelte Variablen im Ergebnis. Die kannst du mit der Funktion nub aus Data.List eliminieren. | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
wenn ich das z.B so schreibe getVars ((V 'c') And((V 'a') (V 'b'))) dann kommt eine Fehlermeldung: ERROR - Type error in application *** Expression : V 'c' And (V 'a' (V 'b')) *** Term : V *** Type : Char -> AL *** Does not match : a -> b -> c -> d Was ist da jetzt passiert oder hab ich einfach etwas falsch eingetragen? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Dein Ausdruck ist kein richtiger aussagenlogischer Ausdruck. ((V 'a') (V 'b')) geht z.B. nicht, da fehlt ein Operator. Als Beispiel könntest du das hier nehmen: getVars (And (Or (V 'a') (V 'b')) (Not (V 'c'))) | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Ah. Ok dann geht das ja doch. Danke | |||||||||||
Zum Seitenanfang | |||||||||||