背景: 我一直在阅读Learn You A Haskell和在线教程,但是这个问题困扰了我一个星期,我还是没能解决。
我尝试制作自己的转换函数:
我已经对列表推导和递归有了很大的进展,但是这个问题仍然是我面临的难题。
问题: 我试图将一个字符串(或者我认为是一个字符串)转换成一个分割后的列表。下面是目前我拥有的代码(再次感谢 Jan 的帮助)。它将一个 .txt 文件的内容导入到程序中。import System.Environment
main :: IO ()
main = do
args <- getArgs
if null args
then putStrLn "usage: ./pattern dataset.txt"
else do contents <- readFile $ head args
putStrLn $ "Filer1: " ++ filterLower(contents)
convert' contents
filterLower :: String -> String
filterLower st = [ c | c <- st, c `elem` ['A'..'Z']]
我尝试制作自己的转换函数:
convert' :: String -> [String]
convert' x = (x:[])
它可以工作,但对于这个问题它不起作用。
任何帮助都将不胜感激。
错误: 这是我经常遇到的错误。
Couldn't match expected type `IO ()' with actual type `[String]'
In the return type of a call of `convert''
In the expression: convert' contents
In the expression:
do { contents <- readFile $ head args;
putStrLn $ "-: " ++ filterLower contents;
convert' contents }
convert
后期望发生什么?看起来你只是试图把结果丢掉:你没有尝试打印它或做任何事情。 - dave4420