2017-05-09 1 views
2

Ich versuche, eine Gruppe von Wörtern und jede Wortlänge in Haskell zu drucken. Die Worte sind in einer TXT-Datei so zuerst muss ich den Inhalt in Haskell und dann geteilt ich sie in einzelne Worte, so habe ich dies so weit:So drucken Sie eine Gruppe von Wörtern mit jeder Wortlänge in Haskell

main = 
     do 
      textdat <- openFile "palindrom.txt" ReadMode 
      inhalt <- hGetContents textdat 
      winhalt <- return (words inhalt) 
      print winhalt 
      putStrLn "has the length " 
      print (length winhalt) 

palindrom.txt ist die TXT-Datei im die Wörter nehmen von. Mit openFile und hGetContents habe ich den Inhalt der .txt "inhalt" zugewiesen. "winhalt" ist der Inhalt, der in Worte mit der "Wort" -Funktion aufgeteilt wird. Jetzt dieses Ergebnis im bekommen:

"wordexample1""wordexample2""wordexample3"..."wordexample45" 
has the length 
45 

(45 ist die Menge der Wörter in der TXT-Datei)

Wie kann ich die Reihenfolge der Wörter in einzelne Wörter aufgespalten, damit ich die Länge erhalten und drucken kann von jedem Wort jeweils?

Antwort

1

Wenn Sie diesen Code ausführen (auf seinem eigenen Quellcode):

main = do                                                
    contents <- readFile "words.hs" 
    print $ [(w, length w) | w <- words contents] 

Sie erhalten

[("main",4),("=",1),("do",2),("contents",8),("<-",2),("readFile",8),("\"words.hs\"",10),("print",5),("$",1),("[(w,",4),("length",6),("w)",2),("|",1),("w",1),("<-",2),("words",5),("contents]",9)] 

Natürlich können Sie das Ausgabeformat:

main = do 
    contents <- readFile "words.hs" 
    putStr $ unlines [w ++ ": " ++ show (length w) | w <- words contents]                
Verwandte Themen