【发布时间】:2012-03-28 12:45:36
【问题描述】:
几周前我们开始了一篇关于 Haskell 的论文,并且刚刚收到我们的第一个任务。我知道 SO 不喜欢家庭作业问题,所以我不会问如何去做。相反,如果有人能以此推动我朝着正确的方向前进,将不胜感激。鉴于这可能不是一个具体的问题,在讨论/社区 wiki 中是否更合适?
问题:标记一个字符串,即:“Hello, World!” -> [“你好”,“世界”]
来自 Java 背景,我不得不忘记所有关于通常方法的事情。问题是我对 Haskell 仍然一无所知。这是我想出的:
module Main where
main :: IO()
main = do putStrLn "Type in a string:\n"
x <- getLine
putStrLn "The string entered was:"
putStrLn x
putStrLn "\n"
print (tokenize x)
tokenize :: String -> [String]
tokenize [] = []
tokenize l = token l ++ tokenize l
token :: String -> String
token [] = []
token l = takeWhile (isAlphaNum) l
第一个明显的错误是什么? 谢谢。
【问题讨论】:
-
Stack Overflow 确实喜欢家庭作业问题,只要你适当地标记它们并展示你已经尝试过的东西(这是一种努力,即使被误导了)。这个没问题。
-
在您的 Java 背景中,您还没有完全忘记的一件事是,变量在 Haskell 中是不可变的。您似乎希望表达式
token l将修改l。不会的。
标签: haskell