Haskell |
18.04.2015, 12:26 | Auf diesen Beitrag antworten » | |||||||||||||||
neuling96 | Haskell Vorweg, ich beschäftige mich zum ersten mal mit Haskell und hier bereits das erste Problem > 0:[1,2,3] [0,1,2,3] Soweit klar > 'a' 'b':['c']) "abc" Aber wieso ergibt das ein String? Ich hätte > 'a' 'b':['c']) [a,b,c] erwartet :t ( ( :: a -> [a] -> [a] Wieso ist der Cons- Operator mehrstellig? |
|||||||||||||||
|
||||||||||||||||
18.04.2015, 12:28 | Auf diesen Beitrag antworten » | |||||||||||||||
neuling96 | RE: Haskell da ist vorher was schief gelaufen
|
|||||||||||||||
18.04.2015, 13:09 | Auf diesen Beitrag antworten » | |||||||||||||||
Karlito | Im Prinzip ist ein String nichts anderes als ein char-array... In C zum Beispiel ist ein String ein char-array, was mit dem Zeichen \0 beendet wird. Ich nehme an, dass haskell einfach Char-Array als String interprektiert. Gruß, Karlito |
|||||||||||||||
18.04.2015, 15:39 | Auf diesen Beitrag antworten » | |||||||||||||||
neuling96 | Danke für den Hinweis Wenn ich in den GHCI folgendes eintippe succ :: Int -> Int nimmt er das nicht an. Weißt du wieso nicht? Selbst Funktionen wie f x = x + 1, erst mit let f x = x + 1 wird die Funktion akzeptiert |
|||||||||||||||
Anzeige | ||||||||||||||||
|
||||||||||||||||
19.04.2015, 15:45 | Auf diesen Beitrag antworten » | |||||||||||||||
Karlito | Ghci scheint an dieser stelle einfach etwas anders zu funktionieren. Was Du machen kannst, ist eine Datei anzulegen, in der Du die Funktionen wie in der Lehrveranstaltung definierst. Also beispielsweise:
Das legst du in meinefkt.hs ab und öffnest es in ghci per
Übrigens ist succ bereits in Haskell definiert. Dadurch kommt es zu einem Namenskonflikt:
Ich habe nicht recherchiert wie man den auflösen kann, aber es gibt wohl soetwas wie Scopes. Das Einfachste ist also einfach die Namenskonflikte zu vermeiden. Gruß, Karlito |
|||||||||||||||
21.04.2015, 19:16 | Auf diesen Beitrag antworten » | |||||||||||||||
neuling96 | Besten Dank!! Hat alles funktioniert |
|||||||||||||||
14.05.2015, 21:01 | Auf diesen Beitrag antworten » | |||||||||||||||
neuling96 | foldl :: (a -> b -> a) -> a -> [b] -> a (.) :: (b -> c) -> (a -> b) -> a -> c (.) f g = \x -> f (g x) compose = foldl (.) id was ich hier nicht verstehe ist, dass von der funktion id der typ a->a ist aber in foldl wird nicht (a->a) oder ein wert a erwartet an der stelle id wo genau liegt mein denkfehler? |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |