![]() |
1
20
这是一个很好的问题,需要一点解包。
我想马上纠正你一点:
不
然而,这并不会使你的问题无效。为什么类型不简单
为此,我们首先要谈谈
透镜
A.
简单的选择
然而,这种类型非常令人不满意。
如果最后一个问题没有解决,为什么还要写一个库呢?我们不希望用户必须不断思考自己在UML光学层次结构中的位置,每次上下移动时都要调整其函数调用。
现在的问题是:有没有一种类型可以写下来
Getter公司
设置器
所有人一起
有了这些文书工作,我们可以将setter和getter统一为一个吗
这是Haskell,我们可以抽象出
(还有其他选择的理由
注意事项
需要注意的是,这个推导是
不
最初的动机
我认为这些多重衍生产品是一件好事,也是一种衡量健康的试金石
我最近还对Setter的类型撒了一点谎
这是另一个将高阶类型抽象为光学类型的示例,以便为库用户提供更好的体验。几乎总是这样
|
![]() |
2
6
在某种意义上,原因
事实上,当setter
习惯于
,函子将被实例化为
嗯,这是不可能的
这只是一个很好的自由定理 .
更实际地说,我们需要的是
兼容性
。虽然您可以定义
设置器
没有这个包装器,getter就不可能这样做,因为
想想看,这种保证实际上不是很有力……我仍然可以用一些东西来颠覆它
|
![]() |
Paul Spencer · 部分应用函数类型的函子 7 年前 |
![]() |
cha · 将函数对象传递给std::function 7 年前 |
![]() |
softshipper · fmap的参数太多 7 年前 |
![]() |
Gaurav Sehgal · 函数指针与C中的函子++ 8 年前 |
![]() |
Sam · std::bind创建的函子在哪里? 10 年前 |