首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建在球拍lisp引擎中使用的程序?

如何构建在球拍lisp引擎中使用的程序?
EN

Stack Overflow用户
提问于 2018-10-30 15:59:13
回答 1查看 84关注 0票数 2

我想使用球拍lisp引擎,它允许执行一个过程,可以被一个计时器超时中断。我不知道如何构造一个引擎会接受的过程,因为我在网上找不到例子。在引擎文档中列出了具有以下合同的输入proc:

代码语言:javascript
复制
(engine proc) → engine?
  proc : ((any/c . -> . void?) . -> . any/c)

我只是学习类型化的球拍注解语义学,这在我的头脑中是暂时的。有人能帮助提供一些具体的例子,有效的程序,可以使用在球拍引擎?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-30 17:01:25

我玩过了。以下是我所做的:

代码语言:javascript
复制
#lang racket
(require racket/engine)

(define (test-engine allow-interrupt)
  (let loop ((n 1))
    (allow-interrupt #f)
    (displayln (list 'step n))
    (allow-interrupt #t)
    (sleep 1)
    (loop (add1 n))))

(define tee (engine test-engine))
(engine-run 2000 tee)

我注意到它可能会在displayln中间中断,因此为了使displayln成为原子,我使用了提供的过程,该过程使原子操作期间的中断延迟。如果没有它,它将在下一个(engine-run 2000 tee)中打印出其余的内容,而不是在返回之前完成它。

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

https://stackoverflow.com/questions/53068325

复制
相关文章

相似问题

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