我试图了解功能的类型并能够对其进行解释。
两个功能:
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)
Run Code Online (Sandbox Code Playgroud)
据我有限的知识,我认为插入功能:
insert 是类型t,它接受两个参数bool和一个类型t的两个列表的元组之一,并返回两个类型t的列表的元组。
partition 是类型t的元组,它返回布尔值,并且将类型t的列表作为其参数,并返回两个类型t的列表的元组。
这是正确的思考方式还是我做错了?我一直在关注一些教程,这是到目前为止我所做的。
我是Haskell的新手,并且正在研究此功能的问题:
iter :: (t -> t) -> t -> [t]
iter f a = a : iter f (f a)
myList = iter (\x -> x + 2) 1
Run Code Online (Sandbox Code Playgroud)
我对此的理解是:
iter接受两个参数(t-> t)和t并返回[t]的列表。
我对下一部分感到困惑:
iter f a = a : iter f (f a)
Run Code Online (Sandbox Code Playgroud)
是myList [1,3]还是我以错误的方式考虑它?
还是[1,3,5,7 ..]?