Ich bin neu in Haskell, und versuchen, den Code von here zu implementieren, um Zeichenfolgen mit einer Karte zu ersetzen. Ich erhalte während der Kompilierung eine Fehlermeldung,String ersetzen mit Karte Kompilierung Fehler
* Expecting one more argument to `StringMap'
Expected a type, but `StringMap' has kind `* -> *'
* In the type signature:
stringMapReplace :: (Show stringMap) => StringMap -> String -> String
sagt, ich gesucht habe versucht, aber die einzige Antwort, die ich für den Fehler finden kann, ist, dass ich nicht bin zu klären, welche Art StringMap
ist. Ich dachte jedoch, das ist was Show stringMap
tat.
import Data.Map
import Data.Strings
type StringMap stringMap = [(String, String)]
myStringMap =
[
("org1", "rep1"),
("org2", "rep2")
]
stringMapReplace :: (Show stringMap) => StringMap -> String -> String
stringMapReplace [] s = s
stringMapReplace (m:ms) s = strReplace ms (replace (fst m) (snd m) s)
main :: IO()
main = do
putStrLn "Enter some text:"
putStrLn =<< stringMapReplace myStringMap <$> toUpper getLine
Hinweis: strReplace
kommt von Data.Strings
Ich weiß nicht, ob es noch etwas falsch mit dem Code ist, wie die Compiler nur oben jetzt den Fehler geben. Wenn Sie noch etwas anderes bemerken, können Sie es gerne erwähnen (oder lassen Sie es mich später als Übung debuggen).
@chi Dank. Jetzt behoben. – crockeea