小编Jam*_*ong的帖子

了解功能类型

我试图了解功能的类型并能够对其进行解释。

两个功能:

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 types functional-programming function semantics

3
推荐指数
3
解决办法
110
查看次数

Haskell函数迭代结果

我是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 ..]?

haskell functional-programming

2
推荐指数
1
解决办法
71
查看次数