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

人生中写的第一个 Scheme 方言

  •  
  •   lcj2class · 2015-10-05 15:11:53 +08:00 via iPhone · 2937 次点击
    这是一个创建于 3362 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    2015-10-09 21:11:25 +08:00
    htfy96
        1
    htfy96  
       2015-10-05 16:10:44 +08:00
    S 表达式支持完全吗?
    lcj2class
        2
    lcj2class  
    OP
       2015-10-05 17:23:49 +08:00
    @htfy96
    scheme 中的 cons 、 car 、 cdr 、 list 都支持了。
    lcj2class
        4
    lcj2class  
    OP
       2015-10-05 23:29:03 +08:00
    @htfy96
    我感觉把这几个 quote 实现了,基本上就把 macro 给掌握了。
    想想也不难,就是在 eval S-表达式时对这些 quote 符号进行特殊处理即可。
    实现 eval 函数本身更直接了,直接对后面 S-表达式两次求值即可。
    ethego
        5
    ethego  
       2015-10-06 10:34:26 +08:00 via iPad
    我想知道匿名函数在解释器内部的实现机理,楼主对这个有什么心得或者理解吗?
    ethego
        6
    ethego  
       2015-10-06 10:35:20 +08:00 via iPad
    我想知道匿名函数在解释器内部的实现原理,楼主对这方面有了解吗…?
    lcj2class
        7
    lcj2class  
    OP
       2015-10-06 11:48:21 +08:00
    @ethego
    匿名函数没什么特别的呀。有名字的函数,其实是匿名函数的语法糖衣,本质上还是匿名的。
    JScheme 匿名函数也支持,你感兴趣可以看看。
    不过匿名函数无法直接实现递归,需要借助 Y 算子。
    codecrash
        8
    codecrash  
       2015-10-07 16:15:35 +08:00 via Android
    @lcj2class Y 算子是什么
    lcj2class
        10
    lcj2class  
    OP
       2015-10-09 09:47:41 +08:00
    @yxcxx
    @codecrash
    大刘这的这个文章,个人觉得啰嗦了,觉得看起来比较吃力,当然,大刘是吧他思考的过程写出来了,可以参考。

    FYI ,我目前觉得理解 Y 算子 最好的文章应该是这个
    http://shellfly.org/blog/2015/01/07/yi-the-y-combinator-slight-return/
    yxcxx
        11
    yxcxx  
       2015-10-09 21:11:25 +08:00
    @lcj2class
    谢谢推荐
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1083 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:48 · PVG 02:48 · LAX 10:48 · JFK 13:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.