首页 / 知识
关于功能:“组合器”的很好解释(针对非数学家)
2023-04-17 10:55:00

Good explanation of “Combinators” (For non mathematicians)有人对"组合器"(Y组合器等,而不是公司)有很好的解释吗? 我正在为了解递归和高阶函数但又没有扎实的理论或数学背景的实用程序员寻找一个。 (注意:我在谈论这些事情)
除非您深入理论,否则可以考虑使用Y组合器
Monad使您可以链接动作,Y组合器使您可以
Python内置了对自递归函数的支持,因此您可以
但是如果Python不同,并且
解决方案是将
Y使这成为可能:
它所做的全部工作就是调用一个以自身为参数的函数。 (我不知道Y的这种定义是否100%正确,但是我认为这是普遍的想法。) 雷金纳德·布雷思韦特(Reginald Braithwaite,又名Raganwald)在他的新博客homoiconic上撰写了有关Ruby中组合器的系列文章。 虽然他(据我所知)没有查看Y组合器本身,但确实查看了其他组合器,例如:
以及有关如何使用它们的几篇文章。 引用维基百科:
现在这是什么意思?这意味着组合器是一个函数(输出仅由其输入确定),其输入包括一个函数作为自变量。 这些功能是什么样的?它们的用途是什么?这里有些例子:
这里的
组合器可用于隐藏逻辑。假设我们有一个数据类型 可以编写如下乏味的代码:
注意所有关于
可以将其概括为程序员在诸如Haskell之类的功能语言中使用的所谓的 组合器是没有自由变量的函数。这意味着,除其他事项外,组合器不依赖于函数之外的事物,而仅依赖于函数参数。 使用F#,这是我对组合器的理解:
在上述情况下,sum是组合器,因为
上面的函数不是组合器,因为它使用 通过简单地将sum函数作为参数之一,我们可以使sum3成为组合器:
通过这种方式绑定
因此,这就是我对组合器的理解。另一方面,它们的重要性仍然让我难以忘怀。正如其他人指出的那样,定点组合器允许人们表达递归函数而无需 这是我发现的最容易理解的组合器派生之一: http://mvanier.livejournal.com/2897.html 这看起来不错:http://www.catonmat.net/blog/derivation-of-ycombinator/
这是一篇好文章。 我在理论上还很短,但是我可以举个例子,使我的想象力浮出水面,这可能对您有所帮助。最简单有趣的组合器可能是"测试"。 希望你知道Python
用法:
如果第一个参数为true,则test计算第二个参数,否则为第三个。
整个系统可以由几个基本的组合器组成。 (此示例或多或少地由Benjamin C. Pierce从类型和编程语言中复制而来) 不久,Y组合器是一个高阶函数,用于对lambda表达式执行递归(匿名函数)。请参阅Mike Vanier的文章如何在没有真正递归的情况下成功进行递归-这是我所见过的对此问题的最佳实用解释之一。 另外,扫描SO档案:
|
最新内容
相关内容
递归查找linux命令?
递归查找linux命令?,时间,档案,命令,标准,数据,系统,名称,文件,服务,信息,linux搜索文件名命令(使用find命令在Linux上查找文件和目录)1、findlinuxps组合命令?
linuxps组合命令?,系统,工作,信息,命令,地址,基础,进程,标准,状态,软件,Linux系统中的ps进程查看命令使用实例集锦首先打开xshell软件,连接上lilinux实用组合命令?
linux实用组合命令?,工作,系统,命令,管理,网络,基础,信息,目录,用户,口令,新手必须掌握的linux命令1、linux常用命令: pwd命令 该命令的英文解linux解释命令解释符?
linux解释命令解释符?,系统,数据,名称,基础,工作,工具,状态,命令,脚本,进程,Linux中的sh命令的详细解释sh是linux中运行shell的命令,是shell的linuxls命令解释?
linuxls命令解释?,信息,系统,标准,命令,时间,名称,数据,文件,目录,观察,LS(LINUX中ls命令)详细资料大全ls命令是linux下最常用的命令之一,ls跟dlinux组合命令别名?
linux组合命令别名?,系统,别名,地方,环境,工作,新增,命令,终端,文件,环境变量,linux系统怎样设置命令别名1、可将设置别名的命令写进启动文件linux中递归压缩命令?
linux中递归压缩命令?,系统,工作,命令,工具,管理,信息,设备,文件,目录,常用命令,Linux第二章-Linux常用命令1、linux常用命令有pwd命令、cd命linux各种命令的解释?
linux各种命令的解释?,地址,工作,系统,信息,命令,目录,时间,管理,控制台,常用命令,linux的常用命令有哪些呢???希望带上解释date:打印或者设置linux路径命令解释?
linux路径命令解释?,系统,信息,设备,数据,工具,命令,文件,标准,发行,时间,linux查看路径命令1、linux命令如果记不得,可以使用man命令来查看某linux进程命令解释?
linux进程命令解释?,系统,状态,基础,进程,信息,时间,命令,实时,软件,名称,Linux中用于进程显示的top命令使用实例集锦1、Top 命令输出: 首先,让linux关机命令解释?
linux关机命令解释?,系统,工作,命令,时间,银河,信息,用户,级别,终端,指令,linux关机命令1、shutdown命令 shutdown命令用于安全关闭Linux系统linux递归删除的命令?
linux递归删除的命令?,系统,名称,命令,文件夹,目录,通用,环境,档案,不了,文件,Linux里面删除空文件夹命令是什么?Linux的文件和目录的删除命令