爱意满满的作品展示区。
CismonX

Unlambda 的一个朴素实现

  •  
  •   CismonX · Feb 9, 2020 · 2856 views
    This topic created in 2310 days ago, the information mentioned may be changed or developed.

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

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

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

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

    1 replies    2020-02-09 02:27:07 +08:00
    Mistwave
        1
    Mistwave  
       Feb 9, 2020 via iPhone
    有点强,先马再看
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2858 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 07:47 · PVG 15:47 · LAX 00:47 · JFK 03:47
    ♥ Do have faith in what you're doing.