Euler Problem in Haskell - Kann jemand meinen Fehler finden?

8

Ich versuche meine Hand bei Euler Problem 4 in Haskell. Es fragt nach dem größten Palindrom, das durch Multiplikation zweier dreistelliger Zahlen entsteht. Das Problem war einfach genug, und ich dachte, dass mein Haskell-fu der Aufgabe gewachsen war, aber ich bekomme ein Ergebnis, das, um es milde auszudrücken, uneinheitlich aussieht.

Hier ist mein Palindrom-Detektor (der einfach zu programmieren war):

%Vor%

Von hier an ist es eine einfache Frage, eine Funktion zu schreiben, um zu erkennen, wenn ein Produkt ein Palindrom bildet (und möglicherweise eins von einem der Multiplikanden zu subtrahieren und über eine Brute-Force-Suche zu rekrutieren, wenn dies nicht der Fall ist). Hier ist meine sehr vereinfachte Version davon, abgespeckte und eine IO-Aktion zum Debuggen zurückgeben:

%Vor%

Hier sind zwei separate Ausgaben in GHCi:

%Vor%

Mit anderen Worten, der Aufruf von isPalindrome wird in der case-Anweisung von findPal immer auf true ausgewertet, auch wenn er falsch sein sollte.

Was sehe ich hier nicht?

    
rtperson 18.11.2009, 20:02
quelle

2 Antworten

13

Ich denke, du musst "True" und "False" groß schreiben. Ich habe keinen Haskell-Interpreter zur Hand, aber wahrscheinlich deklarierst du gerade eine neue Variable "wahr", um gleich "pal" zu sein

    
Steven Huwig 18.11.2009, 20:06
quelle
6

Könnte es sein, dass Sie in findPal True und False anstelle von true und false schreiben?

EDIT: Ok, von dem frühen Vogel hier gründlich geschlagen ...

    
Tom Bartel 18.11.2009 20:29
quelle

Tags und Links