Liest n Zeilen in einen [String]

8

Ich versuche, n Zeilen des Inhalts in eine Liste von Strings zu lesen. Ich habe verschiedene Varianten des Codes ausprobiert, aber nichts hat funktioniert.

%Vor%

Dies wirft den folgenden Fehler auf:

%Vor%

Und

%Vor%

wirft

%Vor%

Wie kann ich das tun?

    
user1349427 23.04.2012, 18:06
quelle

2 Antworten

43

Verwenden Sie replicateM von Control.Monad :

%Vor%

Im Geiste, einem Mann einen Fisch zu geben / einem Mann beizubringen zu fischen: Sie hätten dies selbst herausfinden können, indem Sie Hoogle .

Sie haben:

  • eine auszuführende Aktion vom Typ IO String
  • mehrmals, um diese Aktion auszuführen (geben Sie Int )
  • ein

Sie wollen:

  • eine Aktion vom Typ IO [String]

Sie könnten also suche Hoogle nach (IO String) -> Int -> (IO [String]) . replicateM ist der erste Treffer.

    
dave4420 23.04.2012, 18:22
quelle
0

Eine andere Möglichkeit, wie Sie diese Aktion ausführen können, besteht darin, das Tool "pure replicate" und das Tool " sequence :: (Traversable t, Monad m) => t (m a) -> m (t a) " zu verwenden. Sagen wir zuerst, wir werden nach einer Zählung fragen und dann nach so vielen ganzen Zahlen fragen, um ihre Summe auf dem Terminal auszudrucken.

%Vor%     
Redu 25.05.2017 16:16
quelle

Tags und Links