Ich möchte eine Eingabezeichenfolge mit einer benutzerdefinierten Eingabeaufforderung lesen, jedoch stammt die Eingabeaufforderungszeichenfolge aus unreinem Kontext, daher kann ich readInputLine
nicht verwenden, wie es ist. Ich habe versucht, eine Funktion auf this answerreadInputLine mit IO-String
getLineIO :: MonadException m => IO String -> InputT m (Maybe String)
getLineIO ios = do
s <- ios
res <- getInputLine s
lift res
aber ich bekomme
einen FehlerCouldn't match expected type ‘InputT m String’
with actual type ‘IO String’
Relevant bindings include
getLineIO :: IO String -> InputT m (Maybe String)
(bound at Main.hs:38:1)
In a stmt of a 'do' block: s <- ios
In the expression:
do { s <- ios;
return $ getInputLine s }
Update-Basis zu implementieren: es wurde basierend arbeiten auf @ bheklilr der answer
getLineIO :: (MonadException m, MonadIO m) => IO String -> InputT m (Maybe String)
getLineIO ios = do
s <- liftIO ios
getInputLine s
Sie wahrscheinlich nur verwenden müssen, um '' lift' Ihre IO String' in einen 'InputT IO String' d' s
Lee