V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
CismonX
V2EX  ›  分享创造

Unlambda 的一个朴素实现

  •  
  •   CismonX · 2020-02-09 01:33:27 +08:00 · 2162 次点击
    这是一个创建于 1532 天前的主题,其中的信息可能已经有所发展或是发生改变。

    近日在工作之余,对编译原理相关基础知识稍有涉猎。开了一个练手项目,作为对这段时间学习的一个小测验。

    我选择了 Unlambda 这门编程语言,它是一个函数式的 esolang,由法国数学家 David Madore 于 1999 年设计。之所以尝试实现这门语言,主要是因为它语法特性极为简单,实现起来比较容易。尽管如此,实现的过程还是具有一定的挑战性的,比如 continuation 的实现、promise 的实现等等。

    我看了一下现有的 Unlambda 解释器实现,基本上都是 AST walker,并用 CPS 来实现 continuation。这其实也是“官方”推荐的实现思路。为了追求挑战,我决定另辟蹊径,尝试设计了 Unlambda VM 和对应的指令集,并借助 segmented stack 实现 continuation。目前已达到基本可用的状态,但只做了一些简单的测试,有一些问题还没有修复。

    由于是第一次尝试,所以设计思路和具体实现都比较粗糙,还望各位前辈不吝赐教。

    1 条回复    2020-02-09 02:27:07 +08:00
    Mistwave
        1
    Mistwave  
       2020-02-09 02:27:07 +08:00 via iPhone
    有点强,先马再看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2925 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:53 · PVG 21:53 · LAX 06:53 · JFK 09:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.