【发布时间】:2014-07-08 11:30:29
【问题描述】:
我对 Haskell 还很陌生。
我要传递两个项目:
首先是一个数字列表作为字符串说["1","2","3","4"],我想看看这些项目中的每一个是否出现在随机数字字符串中说"14321"
例如myFunction ["6","2","3"] "1234"
我的返回值可能是我想要返回Just("the number found", "14321") 的类型。
第一个返回参数将是列表中找到的数字,第二个是最初传递的字符串。
问题是,我只想将匹配的第一个实例作为可能返回,如果没有匹配则什么都不返回。
我不确定如何执行这样的循环,以检查一个是否匹配,如果匹配则返回并完成或继续转到列表中的下一项。
我有这个:
isMatch :: [String] -> String -> Maybe (String,String)
isMatch (x:xs) test | x `isInfixOf` test = Just (x, test)
| otherwise = Nothing
如果第一个匹配项为真,它应该可以工作,但如果不是,我怎样才能让它继续到列表中的下一个?
提前致谢
【问题讨论】:
-
在
Just中返回参数似乎很奇怪——调用者已经知道test是什么,那为什么还要返回呢? -
这只是一个理论问题。我打算稍后在 Just 中归还其他东西。
-
otherwise = Nothing的情况看起来不对。如果x不是test的中缀,则需要递归检查xs。
标签: haskell functional-programming