首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数编程:使用泛型会使函数变得不纯吗?

函数编程:使用泛型会使函数变得不纯吗?
EN

Software Engineering用户
提问于 2018-02-23 17:43:56
回答 2查看 241关注 0票数 2
代码语言:javascript
复制
    public static Func<string, Task<T>> MyMethod<T>(
        UserCredentials credentials,
        Func<string, string, string, Task<T>> func
    ) =>
        async (value) => await func(credentials.user, credentials.pwd, value);

我很难分辨函数的纯度,因为很明显,T(int)会产生与T(string)不同的输出。还是纯度取决于T(int) = 5总是导致10,而T(string) = "Foo“总是导致"Bar"?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2018-02-23 17:57:25

还是纯度取决于T(int) =5总是导致10,而T(string) = "Foo“总是导致"Bar"?

是。

类型参数仍然是函数的输入参数之一,即使它不驻留在函数的括号内。纯函数的定义是,给定输入参数的相同值,它仍然会产生相同的结果(没有任何副作用)。

票数 7
EN

Software Engineering用户

发布于 2018-02-23 18:00:20

使用维基百科的纯功能的定义,一个函数是纯的,如果:

  1. 给定相同的参数值,函数总是计算相同的结果值(S)。函数的结果值不能依赖于任何隐藏的信息或状态,这些隐藏信息或状态可能在程序执行过程中或程序的不同执行之间发生变化,也不能依赖于来自I/O设备的任何外部输入(通常见下文)。
  2. 对结果的评估不会导致任何语义上可观察到的副作用或输出,例如可变对象的突变或输出到I/O设备(通常-见下文)。

我认为有两种方法可以这样看: 1.类型参数T是函数定义的一部分,或者是函数输入的一部分。不管是哪种方式,我都不认为在确定函数是否是纯函数时很重要。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/366455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档