vorherige Seite | 1 2 |
Gepostet: |
|||||||||||
Das hört sich super an. Ich bin immernoch begeistert von der schnellen Hilfe, ihr seit super! Nun habe ich nur noch ein Problem, und zwar, dass als Fehlermeldung sowas kommt: ERROR file:.\io Eliza(1).hs:44 - Type error in application Wenn ihr mir hier auch noch weiterhelfen könntet wäre ich fertig und gleichzeitig unendlich dankbar :) Viele Grüße, HaskellAnfänger |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Füge mal zu allen Funktionen Typsignaturen hinzu, also bspw. hilfsliste :: [(Int, String)]. Wenn du diese weglässt bestimmt der Compiler zwar selbst einen Typ, alle Zahlen werden standardmäßig aber zu Integer spezialisiert. Wenn dann an andere Stelle ein Int gefordert ist gibt es den Typfehler. Außerdem helfen explizite Typsignaturen Fehler schneller zu finden und das Schreiben der Funktionen klappt oft auch viel besser, wenn man sich darüber im Klaren ist, welchen Typ die Funktion zum Schluss haben soll. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Ok nun habe ich wieder ein anderes Problem. Und ich verstehe diese Fehlermeldungen irgendwie überhauptnicht. Könnt ihr mir bitte nochmal helfen?ERROR file:.\io Eliza(richtig).hs:19 - Type error in application Hierbei ist elizadatenbank eine Liste und elizahelp eine Funktion, die den eingegebenen String mit der liste vergleicht. So grob gesagt, aber es ist natürlich ein bisschen komplizierter. Vielen Danke im Voraus, HaskellAnfänger |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Ohne Code können wir nur rumraten: Hast du mal bei elizahelp den Typ angegeben? Funktioniert die Funktion elizahelp für sich alleine? Ist der Typ [([Char],[Char])] a.k.a. [(String,String)] für elizadatenbank korrekt? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Darf ich das per e-mail schicken? :) | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Lad es doch irgendwo hoch (irgendein Filehoster oder pastbin.de oder so), dann können alle mitraten :-) | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Also das hier ist mein Quelltext:import System.Random Und momentan bekomm ich diesen Fehler: ERROR file:.\Eliza_hilfe.hs:16 - Type error in application Es geht jetzt nicht darum mir eine besser möglichkeit zu zeigen, da ich das auch nachvollziehen muss. Eigentlich geht es mir nur darum das ich nicht mehr einen fehler bekomme und das Eliza so läuft. Vielen Danke im Voraus, HaskellAnfänger |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, elizadatenbank :: [(String, String)] und du rufst "elizahelp (words (großschreiben str)) elizadatenbank" auf, d.h. der zweite Parameter von elizahelp hat den Typ [(String, String)]. Dann weiter: elizahelp (x:xs) [] = rollDurch den Aufruf oben wissen wir, dass (a,b) :: (Sting, String), und das Ergebnis des zweiten Falls ist b, also muss der Ergebnistyp von elizahelp String sein. Im ersten Fall gibst du aber roll als Ergebnis zurück, das hat den Typ IO (). Da dieselbe Funktion in jedem Fall den selben Rückgabetyp haben muss, gibt es den Typfehler. Eine Möglichkeit diesen Fehlerfall zu beheben wäre im zweiten Fall statt "b" "print b" zurückzugeben, da du um das IO nicht herumkommst, wenn du es einmal innerhalb der Funktion benutzt hast. Ich möchte aber nochmal eindringlich darauf hinweisen jede Funktion mit einer Typsignatur zu versehen! Damit lokalisiert du Typfehler schon innerhalb einer fehlerhaften Funktion, nicht erst irgendwo beim Aufruf. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Soweit so gut, aber nun gibt mein eliza ein problem, nähmlich in dem vordefinierten text oben. Das putStrLn (eliza line) ist das Problem.
ERROR file:.\io Eliza(richtig).hs:9 - Type error in application Mach ich irgendwas falsch oder geht das bei euch auch nicht? Viele Grüße, HaskellAnfänger |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Das fällt mir jetzt erst auf, wenn ihr den oberen Teil nicht verändern dürft, kannst du gar kein IO verwenden. Dann muss eliza nämlich den Typ String -> String haben. Daraus folgt dann aber auch, dass du keine "echten" Zufallszahlen benutzen kannst. Die einzige Möglichkeit einen Zufallszahlengenerator zu erzeugen wäre demnach über mkStdGen. Der übergebene Int sollte dann aber für unterschiedliche Texteingaben möglichst verschieden sein, damit die erzeugten Zufallszahlen noch einigermaßen gut verteilt sind. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
vorherige Seite | 1 2 |