加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

斯威夫特的传感器

发布时间:2020-12-14 04:41:15 所属栏目:百科 来源:网络整理
导读:我正在通过 Haskell学习 Swift中的函数式编程,并遇到了这个有趣的Transducers概念.一个代码示例实现了一个映射函数,它基本上吐出一个传感器,因为我们将转换规则作为参数传递. 灵感,我很快将其翻译成Swift等价物,这就是我得到的: func mapping A,B,C (f: A -
我正在通过 Haskell学习 Swift中的函数式编程,并遇到了这个有趣的Transducers概念.一个代码示例实现了一个映射函数,它基本上吐出一个传感器,因为我们将转换规则作为参数传递.

灵感,我很快将其翻译成Swift等价物,这就是我得到的:

func mapping < A,B,C> (f: A -> B) -> ( ( (C,B) -> C) -> ( (C,A) -> C) ) {
    return { r in
        return { result,a in
            return r(result,f(a))

        }

    }
}

我现在的问题是注意转换函数如何从A到B((A – > B)),但是换能器从B变为A(((C,B) – > C) – >((( C,A) – > C))?这是为什么?我确信这不是巧合,因为这个顺序很重要.哈斯克尔专家,有人吗?

解决方法

看看实际发生f的调用.它将A转换为B,结果用作r的参数.因此r必须期待B;我们正在使用A – > B用于预处理输入到(C,B) – > C函数,得到(C,A) – > C功能.

通常,只要我们改变系统以改变其“输入”,就会发生这种逆转.如果我们正在改造一个系统来改变它的“输出”,那就没有逆转1.

X -> A   --->   A -> B   --->   B -> Y

如果我有一个A – > B函数,我想从它做出一些发出Ys的东西,我需要映射一下它的输出B – > Y功能.这被称为协方差,因为我想要改变的事物(A中的B – > B)“随着我在其上映射的函数(B – > Y)而变化.据说B在A – >中处于积极的位置. B.

如果我有一个A – > B函数,我想从它做一些取代Xs的东西,我需要映射一个X – >一个功能超过其输入.这被称为逆变,因为我想要改变的东西(A中的A – > B)“与我映射的函数(X – > A)不同”.据说A在A – >中处于负位置. B.

1高??阶编程意味着我们可以转换一个系统来改变输出中的输入,这些输入是我们系统输出的输出……!“负位置”和“正位置”这两个术语有助于暗示否定的消极是积极的,等等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读