In Haskell, versuche ich eine Methode, die eine Int
zurückgibt, zu drucken. Für den Moment ist mySum
nur ein Stub, weil ich versuche, herauszufinden, wie es gedruckt wird.Druck Funktion, die int
schaute ich auf, wie dies zu tun, und ich sah putStr
ein String
drucken kann und Show wandelt ein Int
zu einem String
so habe ich dies:
mySum :: [Int] -> Int
mySum _ = 0
main = putStr show mySum [1..5]
Allerdings habe ich diese Fehler bin immer:
Couldn't match expected type ‘([Int] -> Int) -> [Integer] -> t’
with actual type ‘IO()’
Relevant bindings include main :: t (bound at weirdFold.hs:10:1)
The function ‘putStr’ is applied to three arguments,
but its type ‘String -> IO()’ has only one
In the expression: putStr show mySum [1 .. 5]
In an equation for ‘main’: main = putStr show mySum [1 .. 5]
und
Couldn't match type ‘a0 -> String’ with ‘[Char]’
Expected type: String
Actual type: a0 -> String
Probable cause: ‘show’ is applied to too few arguments
In the first argument of ‘putStr’, namely ‘show’
In the expression: putStr show mySum [1 .. 5]
Wie kann ich das Ergebnis der Methode tatsächlich ausdrucken?
versuchen, einige Klammern hinzu: 'main = putstr (show (mySum [1..5]))'. Funktionsanwendung bleibt assoziativ. – user2297560
Erster Eindruck des Titels: Sie versuchen, eine Funktion zu drucken (nicht den Wert, den Sie erhalten, wenn Sie die Funktion anwenden). Sie können leicht zu der Lösung gelangen, indem Sie erkennen, dass Sie einfach eine Int-Funktion drucken möchten. Wie 'print n' (' print = putStrLn. Show') und dann durch 'n' ersetzen:' print (mySum [1..5]) '. Ich habe 'print' zur Vereinfachung verwendet, aber Sie können' putStr. Show' oder irgendetwas anderes. – jakubdaniel