Class ForEachInt Haskell

Class ForEachInt a in Haskell

我做运动有困难。我知道我必须定义除函数 feget 之外的函数的签名,但我不知道该怎么做。

我必须设置 ForEachInt class 来描述结构的交叉 存储整数并包含以下函数的数据:

这是我所做的:

class ForEachInt a where data ForEachInt = Empty | Int Int Int

谢谢你

您似乎希望创建一个全 Int 列表 class。很好:

data ForEachInt = None | Some Int ForEachInt

这为我们定义了数据类型,允许我们使用 Some 构造函数将 Int 链接在一起。从那时起,这很容易:

felength :: ForEachInt -> Int
felength None        = 0
felength (Some x xs) = 1 + (felength xs)

fehead :: ForEachInt -> Int
fehead (Some x xs) = x
fehead None        = error "Cannot retrieve from None"

fetail :: ForEachInt -> ForEachInt
fetail (Some x xs) = xs
fetail None        = error "Cannot retrieve from None"

fe2list :: ForEachInt -> [Int]
fe2list None        = []
fe2list (Some x xs) = x : fe2list xs

我建议仔细研究这些函数中的每一个:递归很容易让人混淆。至于模式匹配,那很容易,但我发现实际上数据结构是最难理解的。 LYAH 对数据类型有很好的解释,所以请检查一下。