編輯:添加的新代碼和新的錯誤也改變了。它編譯!Haskell逐行打印文件
我是Haskell的新手,並且正在嘗試創建用於從文本文件打印行的代碼中遇到問題。在這樣做的時候,我需要輸出文件來逐一列出這些行並給它們編號,並在不以相同字符開頭的行之間放置一排破折號。這裏是我想要的輸出示例:
$runghc group.hs (file I input)
1 able
2 academia
3 algae
------
4 carton
------
5 fairway
------
6 hex
7 hockshop
這裏是我目前的代碼。我認爲我從正確的方向接近這一點,但我遇到了一些錯誤。
import System.Environment (getArgs)
group :: [Char] -> [Char]
group file = printSplit (words (show file)) 1
printSplit (x:[]) n = show n ++ x
printSplit (x:t) n
| head x == head (head t) = ((show n) ++ x) ++ printSplit t (n+1)
| otherwise = ((show n) ++ x ++ "\n------") ++ printSplit t (n+1)
main = do
args <- getArgs
bytes <- readFile (head args)
putStrLn (group bytes)
我遇到了這個錯誤:
*Main> main
1"able\nacademia\nalgae\ncarton\nfairway\nhex\nhockshop\n"
而且不太還不知道怎麼用這個做...
原來的職位信息:一種不同的方式我試圖做的是文字(顯示文件),它會給我
["able","academia","algae","carton","fairway","hex","hockshop"]
但我不知道該去哪裏。因爲我試圖學習更高級的函數,也許有人可以解釋如何使用map或fold來嘗試這些給我? :)
請使用類型簽名。它至少會使第一個錯誤消息更加混亂,並且代碼變得更加可讀。 – leftaroundabout
我已經添加了一個類型簽名並更新了代碼! :) – user3290526
@ user3290526:文件結構如何?每一行都有一個單詞? – Zeta