【发布时间】:2013-10-08 07:00:54
【问题描述】:
我正在编写一个函数,它获取一个列表,检查其中的所有元素是否恰好一次在另一个列表中。我的尝试:
cA = ['A', 'B', 'C', 'D'] {- original list -}
validate :: [Char] -> Bool
validate (n:[]) = if length (filter n cA) == 1 then True else False
validate (n:m) = if length (filter n cA) == 1 then validate m else False
返回
应用程序中的类型错误 * 表达式:过滤器 n cA 术语:n 类型:字符 * 不匹配:Char -> Bool
想法?
【问题讨论】:
-
filter n cA要求n是一个函数,但您提供了一个Char。您可以通过将n替换为(==n)来做到这一点。 -
迷路了,什么是(==n)?
-
(==n)是m==n的一部分 - 与(==) m n相同。这里(==)是两个参数的函数,所以(==n)是一个参数的函数,如果m==n给定m,则生成True。
标签: haskell