Chez Scheme 黑魔法

By guenchi at 2019-08-20 • 0人收藏 • 180人看过

(#%$assembly-output #t)


#ICFP2019Akeep爆料

1 个回复 | 最后更新于 2019-08-20
2019-08-20   #1

实际上Chez手册里的api是不太够用的,很多功能都必须用这些primitive。

例如在repl里结束一个死循环的线程,不用primitive就需要提前在fork-thread设置好

parameter,用了就不需要

(define exit-thread
  (let ([idx (#%$closure-ref timer-interrupt-handler 0)])
    (define (set-tc-timer tc)
      (vector-set! (#%$tc-field 'parameters tc) (car idx) exit)
      (#%$tc-field 'timer-ticks tc 0)
      (#%$tc-field 'something-pending tc #t))
    (lambda (t)
      (cond
       [(thread? t)
        (set-tc-timer (#%$thread-tc t))]
       [(or (fixnum? t) (and (exact? t) (integer? t)))
        (cond
         [(memp (lambda (th)
                  (= (#%$tc-field 'threadno (#%$thread-tc th))
                     t))
                (#%$thread-list))
          =>
          (lambda (t) (set-tc-timer (#%$thread-tc (car t))))]
         [else (void)])]
       [else (void)]))))


登录后方可回帖

登 录
信息栏

Scheme中文社区

推荐实现 ChezScheme / r6rs / r7rs large
theschemer.org
Q群: 724577239

精华导览

社区项目

包管理器:Raven
HTTP服务器:Igropyr (希腊火)
官方插件:vscode-chez

社区目标:

完善足以使Scheme工程化和商业化的库,特别是开发极致速度的Web服务器和ANN模块。

一直以来Scheme缺少一个活跃的中文社区,同时中文资料的稀少,导致大多数因为黑客与画家和SICP而接触Scheme的朋友,在学完SICP后无事可做,不能将Scheme转换为实际的生产力。最后渐渐的放弃。
同时Chicken等实现,却因效率问题无法与其他语言竞争。本社区只有一个目的,传播Scheme的文明之火,在最快的编译器实现上,集众人之力发展出足够与其他语言竞争的社区和库。


友情链接:

Clojure 中文论坛
函数式·China


Loading...