2016-07-25 13 views
0

Wenn ich in das Repl eingeben fmap (+1) $ lesen "[1]" Ich würde erwarten, [2] zu bekommen, aber stattdessen bekomme ich die Fehler:

kein Beispiel für (Functor f0) von einer Verwendung des Entstehens 'es'

Leider ist dies mir nicht helfen. Könnte mir jemand erklären, was mit diesem Code-Code falsch ist?

+2

Versuchen Sie es ausdrücklich, geben Sie einen Typ, z. 'fmap (+1) $ read" [1] ":: [Int]' – pdexter

+3

Unabhängig davon sollten Sie nie 'read' verwenden, da dies Ihr Programm zum Absturz bringt, wenn ein Parse-Fehler auftritt. Verwenden Sie stattdessen etwas wie 'readMaybe'. – dfeuer

+0

oder einfach 'map' verwenden ... –

Antwort

7

Es weiß nur nicht, welchen Typ Sie Ihren Wert lesen. Helfen Sie dabei, indem Sie den Typ explizit angeben:

fmap (+1) $ (read "[1]" :: [Int])