【发布时间】:2012-02-09 00:13:59
【问题描述】:
背景故事:上周我一直在努力解决这个问题,阅读了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'后会发生什么?看起来你只是想把结果扔掉:你没有尝试打印它或任何东西。 -
我不明白你所说的“分割字符串”是什么意思。
-
通过“分割字符串”我的意思是把这样的“引号中的句子”变成这样的东西 ["A", "sentence", "in", "a", "列表”]。