延续的基本概念

同样,我很沮丧地遇到一个从根本上开始的概念
一直闻所未闻.甚至在保罗·格雷厄姆(Paul Graham)的书中都没有
学会了LISP的一部分.它在Marc Feeley的视频中.
谁能解释:
(1)其起源
(2)emacs lisp,common LISP,方案的语法和语义
(3)它存在于Python和Java中吗?
(4)在组装中实施.例如以
从根本上讲,指针是由间接的解决方案产生的,没有什么新鲜事物.
因此,您如何处理PC进行操作.
(5)与功能或子例程相比和优越
称呼.它有何不同.
非常感谢.
(6)有什么好可读的参考文献可以清楚地解释它?

# 回答1


在文章<11 ****************************************@57G2000HSV.GOOGLEGROUPS中. com>,gntheybeydey@gmail.com写道:
不要对此感到沮丧.那里有无数的概念
他们还没有听说过.
lambda演算.而不是功能返回其呼叫者,而是
呼叫者提供了一个额外的论点("延续")
函数b由A结果a调用.纯净的"延续
样式"编码,什么都没有"返回"结果.
机械转换正常功能风格的lambda很容易
积分为延续风格,但相反并非如此.
爪哇,有点.例如,运行接口.
Python,我不知道.
您可以拥有"意大利面条堆栈",也可以保留延续数据结构
在堆中.
这听起来像是作业.到目前为止,您有什么?
谷歌?
- -
---------------------------------------
| BBB B \ Barbara在Living History Stop Co Stop UK
| B B AA RRR B |
| BBB A A R BBB | Quidquid Latine distum坐着,
| B B A A R B B B | altum viditur.
| BBB AA A R BBB |
---------------------------------------
# 回答2


在2007年10月9日星期二05:15:49 +0000,GNUIST006写道:
我认为是Lambda论文之一.我不记得哪个.
ELISP和普通LISP没有它们(尽管SBCL甚至其他用户
内部的连续性).在方案中呼叫 - 电流接触
一个参数的函数,该函数与当前延续绑定.
以某些价值为单位称之为延续
呼叫 - 召集返回该值.所以
(call/cc(lambda(k)(k 42)))= 42
您可以将其视为转到通话/CC后发生的任何事情
被称为函数.连续性的最实际用途
实施控制结构,尽管还有其他一些整洁的技巧
您可以和他们一起玩.
当然不是Java,我不知道Python.我从未见过有人使用
他们在python中,但是pythonistas似乎想添加所有东西
像他们的语言一样,体面的lambda,所以我不会感到惊讶
添加了呼叫/CC. Ruby拥有它.
您有小块的LISP.用小块阅读LISP.
您像函数调用一样使用它们.您也可以像
C中的setJMP/longjmp. m,或
事件,或模拟非确定性或写(call/cc call/cc)之类的东西
(呼叫/CC呼叫/CC))并使您的头爆炸,将其像Goto的近交一样.
第二个表弟或您想做的任何不正当的事情
随着程序中的控制流.
LISP小块用于实施细节,该方案编程
示例的语言.
# 回答3


在10月8日,晚上10:59,Barb Knox 请说明和参考
图片,图表?一张图片胜过千言万语
# 回答4


10月8日,晚上11:09,". 我认为是Lambda论文之一.我不记得哪个.
ELISP和普通LISP没有它们(尽管SBCL甚至其他用户
内部的连续性).在方案中呼叫 - 电流接触
一个参数的函数,该函数与当前延续绑定.
以某些价值为单位称之为延续
呼叫 - 召集返回该值.所以
(call/cc(lambda(k)(k 42)))= 42
您可以将其视为转到通话/CC后发生的任何事情
被称为函数.连续性的最实际用途
实施控制结构,尽管还有其他一些整洁的技巧
您可以和他们一起玩.
当然不是Java,我不知道Python.我从未见过有人使用
他们在python中,但是pythonistas似乎想添加所有东西
像他们的语言一样,体面的lambda,所以我不会感到惊讶
添加了呼叫/CC. Ruby拥有它.
您有小块的LISP.用小块阅读LISP.
您像函数调用一样使用它们.您也可以像
C中的setJMP/longjmp.
事件,或模拟非确定性或写(call/cc call/cc)之类的东西
(呼叫/CC呼叫/CC))并使您的头爆炸,将其像Goto的近交一样.
第二个表弟或您想做的任何不正当的事情
随着程序中的控制流.
LISP小块用于实施细节,该方案编程
示例的语言.
哪张兰伯达纸?
# 回答5

gntheybexpor@gmail.com写道:
...
感谢您的链接,但您可以上传纸张,以便我们也可以
得到它.
您将必须自己获得它,或解释为什么这是一个
对你不可能.
# 回答6


在10月9日,上午7:34,gnuist ...@gmail.com写道:
你是伊利亚斯吗?我想你可能是.
# 回答7


蒂姆·布拉德肖(Tim Bradshaw)写道:
你是伊利亚斯吗?我想你可能是.
他当然不是,但是你是对的,他闻起来像他一直生活
在桥下一段时间...
diez
# 回答8


(3)它存在于Python中...吗?
我不跟上最新的Python Land的发展,
但是我上次使用Python时,当然没有一流的
连续.曾经有一个名为无stack python的项目
试图将连续性添加到Python,但据我所知,
一直与正式的pytho分开 n口译员.我
不知道它是否还活着.您可能需要检查http://stackless.com/
有关详细信息.
如果您熟悉Python语法,则有http://www.ps.uni-sb.de/~duchier/pyt...inuation.inuations.html-甚至
如果不是,您可能想看看它,就像简单的python
代码很容易阅读.
〜matthias
# 回答9


请说明和参考
读取R5RS或R6RS,两者的通话通话通话通话段相似
文本(http://www.r6rs.org/final/html/r6rs/r6rs.html).
对于Lambda微积分,请在Wikipedia上查找.阿隆佐教堂是
您要寻找的名字.
乔尔
- -
乔尔·J·亚当森(Joel J. Adamson)
生物统计学家
小儿心理药理学研究部门
马萨诸塞州综合医院
波士顿,马萨诸塞州02114
(617)643-1432
(303)880-3109
# 回答10


10月9日,上午2:09,". 当然不是Java,我不知道Python.我从未见过有人使用
他们在python中,但是pythonistas似乎想添加所有东西
像他们的语言一样,体面的lambda,所以我不会感到惊讶
添加了呼叫/CC. Ruby拥有它.
在所有计算机语言中都存在延续 - 实际上,
执行代码.延续只是"将会发生什么
程序执行的其余部分."可能存在或不存在的是
一种明确的语言机制来检查它,请参阅
作为函数延续,或保存以供以后使用.
延续通常存在于堆栈中,其中包含全部
继续从
这点. (即,功能调用机制包括一个步骤保存
函数调用是执行指令的位置
完成,以及功能后它将还原的任何寄存器
返回,因为功能调用可能会破坏它们.)
如何保存该延续以供以后使用,可能重复,从
程序中的不同位置是一个不同的问题.
# 回答11


新闻:11 ****************************@57G2000HSV.GOOGLEGRO UPS.COM ...
|同样,我很沮丧地遇到一个从根本上开始的概念
|一直闻所未闻.甚至在保罗·格雷厄姆(Paul Graham)的书中都没有
|学会了LISP的一部分.它在Marc Feeley的视频中.
|
|谁能解释:
|
| (1)其起源
| (2)emacs lisp,common LISP,方案的语法和语义
| (3)它存在于Python和Java中吗?
| (4)在组装中实施.例如以
|从根本上讲,指针是由间接的解决方案产生的,没有什么新鲜事物.
|因此,您如何处理PC进行操作.
| (5)与功能或子例程相比和优越
|称呼.它有何不同.
|
|非常感谢.
|
| (6)有什么好可读的参考文献可以清楚地解释它?
我从Wikipedia文章"延续"开始
引用了其他W.文章和其他几本书和论文.
# 回答12


10月8日,晚上11:09,". 我认为是Lambda论文之一.我不记得哪个.
嘿,无名的" dot",您是唯一一个说它的起源的人
旧的Lambda论文之一.给我参考或某人
给我参考.我无法访问任何ACM期刊或
其他会议.所以
步骤1
参考和其中的想法
第2步
如果您可以上传
这是针对同样的历史和概念发展
学习使用它们的想法的时间.
非常感谢.
# 回答13


这对我来说很有趣一段时间
现在,我实际上仍然很难包裹我的头
完全在它周围.
我遇到的最好的书面解释是"计划
编程语言"(http://mitpress.mit.edu/catalog/item/
default.asp?ttype = 2&tid = 9946).但是也许其他人有更好
参考.
我将尝试对呼叫/CC的小解释.我会屠夫
我敢肯定,但希望那些更有知识的人会礼貌地
纠正我.我将从一个松散的类比开始,并指出一对
我遇到的例子确实很有意义.
首先,我的类比不好(如果您来自C编程
像我一样)是setJMP和longJMP.这是一个不好的比喻
谈论硬件和堆栈状态,而不是功能,但
好的类比,因为它节省了当前的执行状态,并且
稍后返回到同一状态,并带有一块数据
附着在上面.
我使用此示例的第一个示例是在
方案.我希望我不会错,但是例子就是
这样的事情:
(定义(我测试X)
(呼叫/cc(lambda(返回)
(返回x)))))
现在,这是我对正在发生的事情的理解:
1.调用/cc存储当前执行状态并创建函数
恢复到该状态.
2.呼叫/cc然后使用其创建的函数调用自己的参数.
这里的关键是"返回"是一个函数(由呼叫/CC创建)
采用1个论点,并以同一状态恢复执行
当呼叫/CC开始时(或之后立即开始?).这线:
(返回x)
实际上只是调用call/cc创建的函数,它将
将执行状态恢复到呼叫/CC之前的状态
与参数一起(在这种情况下,x的值).
我的下一个例子我不关注100%,我不会尝试复制
它在这里,但是它会产生一种自我修饰的延续(不好?)
定义列表迭代器. http://blog.plt-scheme.org/2007/07/c...ying-code.html
我建议将该代码放入方案解释器并运行
它.你会得到它.
希望这会有所帮助,我期待比我的更好的解释
那也会帮助我. :)
Jeff M.
# 回答14


我认为,在2007年10月9日,19:20:06 +0000,GNUIST006写道:我认为是Lambda论文之一.我不记得哪个.

嘿,无名的" dot",您是唯一一个说它的起源的人
旧的Lambda论文之一.给我参考 E或某人
给我参考.我无法访问任何ACM期刊或
其他会议.所以
我说:"我想."马蒂亚斯纠正了我.他们都在readscheme.org上
(http://library.readscheme.org/page1.html)虽然很值得
阅读.
我注意到我因不使用我的真实姓名而被嘲笑
使用他/她的真名.谢谢,无名的gnuist006,你让我发笑.

# 回答15


2007年10月9日,下午3:32,.写道:嘿," dot",您是唯一一个说其起源的人是旧的lambda论文.给我一个参考或某人的参考.我无法访问任何ACM期刊或其他会议.所以

我说:"我想."马蒂亚斯纠正了我.他们都在
readscheme.org
(http://library.readscheme.org/page1.html)虽然很值得
阅读.
我注意到我因不使用我的真实姓名而被嘲笑
使用他/她的真名.谢谢你,无名的gnuist006,你让我
笑.
放松.,我几乎不认为他在嘲笑你.他可能假设
使用.在句子中作为地址形式将是
在这两个句子中,这是难以理解的.
埃里克·琼斯(Erik Jones)
软件开发人员| emma®Erdy@myemma.com
800.595.4401或615.292.5888
615.292.0777(传真)
艾玛(Emma)帮助各地的组织以风格进行交流和市场.
访问我们在线访问http://www.myemma.com

# 回答16


鉴于您似乎在互联网上闲逛,我希望您
知道如何使用Google ...
# 回答17


谁能解释:
从功能性的第12章连续篇书目注释中
语言,约翰·雷诺兹(John C. Reynolds)的编程语言理论,第370页:
"连续发现的历史(在很大程度上发生
在功能语言的背景下)在雷诺[1993]中给出;
相关的原始论文包括Van Wijngaarden [1996],F.L.的论文.
Morris [1993],Strachey和Wadsworth [1974],J.H.Morris [1972],Fischer
[1972; 1993]和Abdali [1976].操作CallCC并首先投掷
出现在计划中,但是兰丁[1965b]" J-Operator"的后代.
从直接到延续
在程序的设置中描述了语义和解剖化
雷诺(Reynolds)解释渴望评估的功能语言
[1972a]."
"从实施方案开始[Sussman and Steele Jr.,1975]
延续和通过延续的转型发挥了
编译器设计中的主要作用.最近,这个话题已经
Appel [1992]以书籍长度探索."
雷诺(Reynolds)[1993]连续发现.
van Wijngaarden [1996]语法和语义的递归定义
F. L. Morris [1993]下一个700正式语言描述
Strachey and Wadsworth [1974]连续,一种数学语义
处理完整的跳跃.
J. H. Morris [1972] van Wijngarden设备的奖金
Fischer [1972,1993] Lambda微积分S 菜谱
Abdali [1976]一种编程语言的Lambda微积分模型 - I.简单
构造,ii.跳跃和程序
Sussman and Steele Jr. [1975]计划:扩展Lambda的口译员
结石
与连续汇编,安德鲁·W·阿佩尔(Andrew W. Appel),2007年
--------------------
计划编程语言,R.KentDybvig
3.3连续
5.5连续http://www.scheme.com/tspl3/
计划与编程,施普林格和弗里德曼的艺术
第16章延续简介
第17章使用连续
------------------------
1.编程语言:应用和解释,Shriram
克里希那村
第七部分连续http://www.cs.brown.edu/~sk/publicat...2007-04-26.pdf
2.编程语言的要点,弗里德曼,魔杖和海恩斯
第7章延续的口译员
第8章延续式通话风格http://www.cs.brown.edu/~sk/publicat...2007-04-26.pdf
3.编程语言的理论,约翰·雷诺兹(John C. Reynolds)
5.7 [命令式语言的延续语义]
第12章功能语言的延续http://www.cs.indiana.edu/eopl/
从第5章失败,输入输出和
延续,编程语言理论,约翰·C·雷诺兹(John C. Reynolds)
"关于连续性的大多数文献都讨论了该概念
功能语言的设置(我们将在其中返回连续
第12.1节).但是,延续语义的属性
雷诺(Reynolds)[1977]描述了命令性语言,也许是过剩的."
Reynolds [1977]流程图域的语义
# 回答18


更正链接...
1.编程语言:应用和解释
Shriram Krishnamurthi
第七部分连续http://www.cs.brown.edu/~sk/publicat...2007-04-26.pdf
2.编程语言的要点(第二版)
弗里德曼,魔杖和海恩斯
第7章延续的口译员
第8章延续风格http://www.cs.indiana.edu/eopl/
3.编程语言的理论,约翰·雷诺兹(John C. Reynolds)
5.7 [命令式语言的延续语义]
第12章功能语言的连续性http://www.cs.cmu.edu/~jcr/tpl.html(_@_ _)
基本上,功能/子例程呼叫没有区别.这
差异只是没有"呼叫堆栈":动态上下文
因为在堆上创建了通话,并在垃圾中收集
不再可访问.延续只是对国家的参考
当前动态上下文.只要延续
可以访问,您可以根据需要尽可能多地返回它.
- -
大卫·卡斯特鲁普(David Kastrup),克里姆希尔德斯特(Kriemhildstr). 15,44793 bochum
# 回答19


在2007年10月10日星期三12:49:58 +0200,David Kastrup 是的,否.正如您所描述的那样,一般连续性并不是唯一的
表格延续.它们也不是最常见的形式.这
最常见的连续性是函数调用和返回.向上
一个镜头连续(例外或非本地回报)是下一个
最常见的形式,即使在方案中也是如此.
可以实现向上的连续性.在许多CPU上,使用
硬件堆栈(如果可能的话)比使用堆更快
分配的结构.为了性能,一些计划编译器去
识别向上连续和嵌套功能的巨大长度
可以堆栈实现.
乔治
- -
有关电子邮件回复,从地址删除"/"
# 回答20


George Neuner 有一个方案实施(我一直忘记了名称)
实际上两者都做:它实际上使用了呼叫堆栈,但永远不会返回,
垃圾收集包括堆栈.
- -
大卫·卡斯特鲁普(David Kastrup),克里姆希尔德斯特(Kriemhildstr). 15,44793 bochum
# 回答21


大卫·卡斯特鲁普(David Kastrup) +-----------------------
| George Neuner |可以实现向上的连续性.在许多CPU上,使用
|硬件堆栈(如果可能的话)比使用堆更快
|分配的结构.为了性能,一些计划编译器去
|识别向上连续和嵌套功能的巨大长度
|可以堆栈实现.
|
|有一个方案实施(我一直忘记了名称)
|实际上两者都做:它实际上使用了呼叫堆栈,但永远不会返回,
|垃圾收集包括堆栈.
+-----------------------
您正在考虑"鸡肉计划":http://www.call-with-with-current-contination.org/
鸡肉方案实际上是在使用C调用堆栈 * AS *堆[1],
因此,其所有连续性都是 *分配的,因此
实际上根本没有"堆叠分配".
但这不是乔治·诺纳(George Neuner)在谈论的,我读过
而是可能关于肯特·迪布维格(Kent Dybvig)的博士学位论文:http://www.cs.indiana.edu/~dyb/papers/3imp.pdf
"方案的三个实施模型"
R. Kent Dybvig,UNC教堂山,1987年(论文)(190pp)
...
第4章:基于堆栈的模型
...
早期计划实施者认为,由于需要
支持一流的功能,用于用于的标准技术
块结构的语言不适合方案.这
需要进一步优化尾声和支持连续
说服了早期的实施者,标准堆栈技术
不合适.但是,正如本章将显示的那样,这些
可以通过一些修饰来制定技术工作.
最终实现模型允许大多数函数调用
在很少或没有分配的情况下执行,并允许变量
引用将在一个或两个内存引用中执行.
堆分配仍然需要 封口,分配
变量和连续性.由于功能调用和变量
参考速度更快,堆分配有限,运行
大多数程序的时间大大减少.
...
-抢
[1]如:http://home.pipeline.com/~hbaker1/cheneymta.html
"缺点不应劝阻其论点,第二部分:Cheney在M.T.A上"
亨利·贝克(Henry G. Baker)(1994)
-------
Rob Warnock
627 26th Avenue
San Mateo,CA 94403 (650)572-2607
# 回答22


大卫·卡斯特鲁普(David Kastrup) 那将是鸡肉计划. http://en.wikipedia.org/wiki/chicken...implementation)(_@_ _)
matthias benkard 活着和良好,但它已经消除了连续性(确实在
早期版本,根据论文
).
Alex
# 回答23


在消息
那只是一个回调.我一直在C代码(以及其他
相似的语言)多年.
# 回答24


2007年10月15日星期一11:56:39 +1300,劳伦斯·迪奥利维罗
回调是一种延续形式.但是,一般连续
例如计划中的那些,随身携带他们的执行环境.
这使他们可以直接用于用户空间之类的东西
线程.
乔治
- -
有关电子邮件回复,从地址删除"/"

标签: python

添加新评论