scheme心得(1) continuation与阴阳谜题

本文简要介绍Scheme语言中的continuation概念,通过阴阳谜题展示其用法。continuation作为控制上下文的抽象,允许实现类似于break、return的功能。文章通过实例详细解释了continuation的两种用法,并探讨了阴阳谜题的运行机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:简要介绍了scheme语言中continuation的用法。解释了阴阳谜题程序的运行过程与结果。

Scheme是一种lisp方言,个人比较常用的运行环境是MIT-GNU Scheme。

今天谈一谈Continuation,是scheme的一种特性。一个有趣而神秘的应用是阴阳谜题。它将连续不断的打印出一列字符串。@*@**@***。。。这段小代码充分体现了continuation的魅力。

(define call/cc call-with-current-continuation)
(let* ((yin ( (lambda (foo) (display "@") foo) (call/cc (lambda (bar) bar))))
       (yang ( (lambda (foo) (display "*") foo) (call/cc (lambda (bar) bar)))))
  (yin yang))

continuation本质就是control context的抽象,能够实现函数式语言里原本没有的跳转结构,类似break, return, goto等等。continuation就是一个单参数的过程,它等待输入一个值,然后继续其余的运算。或者也可以把这个continuation保存在一个变量里,当这个变量被调用时,相当于返回到定义continuation的那个点重新开始计算。

continuation语法结构是:

(前面的代码... call-with-current-continuation (lambda(k) body) ...后面的代码)

这就是一个过程,过程名为call-with-current-continuation(通常可以define为call/cc),ca

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值