【发布时间】:2019-10-16 10:56:19
【问题描述】:
我正在尝试理解函数的类型并能够解释它们。
两个功能:
insert :: t -> Bool -> ([t],[t]) -> ([t],[t])
insert a True (b,c) = (a:b,c)
insert a False (b,c) = (b,a:c)
partition :: (t -> Bool) -> [t] -> ([t],[t])
partition p [] = ([],[])
partition p (x : xs) = insert x (p x) (partition p xs)
根据我有限的知识,我认为插入功能:
insert是 t 类型,它接受两个参数,一个是 bool,一个是两个 t 类型列表的元组之一,并返回两个 t 类型列表的元组。partition是一个 t 类型的元组,它返回一个布尔值,它接受一个 t 类型的列表作为它的参数,并返回一个由两个 t 类型的列表组成的元组。
这是正确的思考方式还是我理解错了?我一直在关注一些教程,这是我目前所理解的。
【问题讨论】:
-
看来你对柯里化的理解太基础了,柯里化是 Haskell 中的一个重要概念。看看Learn You A Haskell
-
insert不是t类型,它的第一个参数 是t类型。insert a如您所描述的,还有两个参数。 ---partition不是一个元组,它是一个函数。它的第一个参数p不是一个元组,它是一个函数。
标签: function haskell types functional-programming semantics