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

人生中写的第一个 Scheme 方言

  •  
  •   lcj2class · Oct 5, 2015 via iPhone · 3407 views
    This topic created in 3906 days ago, the information mentioned may be changed or developed.
    11 replies    2015-10-09 21:11:25 +08:00
    htfy96
        1
    htfy96  
       Oct 5, 2015
    S 表达式支持完全吗?
    lcj2class
        2
    lcj2class  
    OP
       Oct 5, 2015
    @htfy96
    scheme 中的 cons 、 car 、 cdr 、 list 都支持了。
    lcj2class
        4
    lcj2class  
    OP
       Oct 5, 2015
    @htfy96
    我感觉把这几个 quote 实现了,基本上就把 macro 给掌握了。
    想想也不难,就是在 eval S-表达式时对这些 quote 符号进行特殊处理即可。
    实现 eval 函数本身更直接了,直接对后面 S-表达式两次求值即可。
    ethego
        5
    ethego  
       Oct 6, 2015 via iPad
    我想知道匿名函数在解释器内部的实现机理,楼主对这个有什么心得或者理解吗?
    ethego
        6
    ethego  
       Oct 6, 2015 via iPad
    我想知道匿名函数在解释器内部的实现原理,楼主对这方面有了解吗…?
    lcj2class
        7
    lcj2class  
    OP
       Oct 6, 2015
    @ethego
    匿名函数没什么特别的呀。有名字的函数,其实是匿名函数的语法糖衣,本质上还是匿名的。
    JScheme 匿名函数也支持,你感兴趣可以看看。
    不过匿名函数无法直接实现递归,需要借助 Y 算子。
    codecrash
        8
    codecrash  
       Oct 7, 2015 via Android
    @lcj2class Y 算子是什么
    lcj2class
        10
    lcj2class  
    OP
       Oct 9, 2015
    @yxcxx
    @codecrash
    大刘这的这个文章,个人觉得啰嗦了,觉得看起来比较吃力,当然,大刘是吧他思考的过程写出来了,可以参考。

    FYI ,我目前觉得理解 Y 算子 最好的文章应该是这个
    http://shellfly.org/blog/2015/01/07/yi-the-y-combinator-slight-return/
    yxcxx
        11
    yxcxx  
       Oct 9, 2015
    @lcj2class
    谢谢推荐
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   951 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 20:25 · PVG 04:25 · LAX 13:25 · JFK 16:25
    ♥ Do have faith in what you're doing.