首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >职能和程序有什么区别?

职能和程序有什么区别?
EN

Stack Overflow用户
提问于 2020-09-05 16:38:03
回答 1查看 155关注 0票数 3

目前,我正在通过计算机程序的结构和解释来完成本书和布莱恩·哈维( Brian )的演讲(他在要点上很搞笑),然而,我还没有真正拥有区分功能和程序的“啊哈时刻”。

现在,我在讲课和阅读之外做了一些研究,并遇到了一些关于这个问题的不同帖子,但所有这些似乎都是针对真正的解释或过时的定义展开单独的讨论/意见。我看到的一个普遍的答案是,函数返回一个值,而过程不返回,但是这对我来说并不清楚,而且大多数用户对这个答案似乎有一些反对的理由。

在课文和讲课中钻研高阶程序,我完全理解这个概念和力量,但我很困惑,因为我会听到“高阶程序”和“高阶功能”。Brian还提到“高阶过程代表一个高阶函数”。

据我所知,下面这两项职能是相同的,但程序不同。

代码语言:javascript
复制
f(x) = 2x + 6
g(x) = 2(x + 3)

下面,make加法器被称为带有num的过程,因为它是形式参数.加法器的域是数,范围是程序.我想真正让我讨厌的是,他是指lambda表达式,就是lambda表达式,但是make-加法器是返回一个过程吗?

代码语言:javascript
复制
(define (make-adder num)
  (lambda (x) (+ x num))

(define plus3 (make-adder 3))
(plus3 8)

我以为我已经有了一个明确的理解,直到有几次在高级程序课程中提到程序,这使事情变得模糊起来。

有什么帮助用一个可能的例子来区分这两者吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-06 00:37:16

TL;DR: A程序和功能在上下文中的含义相同。

在数学中,函数是与参数一起应用并返回值的东西,并且总是将相同的值返回给相同的参数。您可以用结果的参数之间的映射来替换它。

在编程语言(如Scheme或JavaScript )中,对于具有某种副作用的所有代码,或者返回的地方都与参数不一致,使用word函数是不正确的。

过程是一个更通用的术语,所以您不能说一个过程需要具有引用透明度,这样它就可以被看作是一个数学函数,因此Scheme和JavaScript都有过程而不是函数。例如:x86英特尔平台下的子程序是一个过程。它不允许任何参数,也不允许返回值,只允许跳转和返回。然而,C使用代码来操作堆栈,以便能够传递参数并获得返回值,在这个意义上,您可以模拟“一个函数”,但是它们并没有消除每个输入返回不相同的可能性,因此您可以实现一个"c函数“,它不是一个函数,但您可以称它为一个过程。

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

https://stackoverflow.com/questions/63756222

复制
相关文章

相似问题

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