首页 > 其他分享 >steed - 自制Lisp方言实现

steed - 自制Lisp方言实现

时间:2023-01-19 16:11:29浏览次数:55  
标签:steed 自制 when Lisp 源码 求值 实现

之前有网友提到写Lisp,我也挺感兴趣的,最近写了一个,主要参考Practical Common Lisp和Successful Lisp这两本书,读到哪实现到哪。

求值和解析实现了,特性方面是包括let binding,宏,函数,lambda,quote/backquote,for,if等等,剩下就是逐步完善特殊操作符,我会尽可能将两本书里提到的都搞完,最后,兔年新年快乐~

https://github.com/y1yang0/steed


p.s. 读到宏的时候,我的第一版宏展开实现是源码替换,实现完之后,我其实很困惑为啥需要宏的if还需要backquote:

(defmacro when (cond body)
    `(if ,cond (block ,body))
)
(when (eq 1 4) (format "{}" "test")

when调用直接替换成if不是已经完成任务了吗?反正书上没有解答疑惑,我目前的理解是,lisp的宏展开阶段还是要求值,不是单纯源码替换,只是求值的对象变成了源码级的s-expression list,所以目前是宏展开是这样做的,目前工作良好,有懂哥可以comment。

标签:steed,自制,when,Lisp,源码,求值,实现
From: https://www.cnblogs.com/kelthuzadx/p/17061689.html

相关文章

  • 【点击即用】自制的一款情侣小游戏
    开发前提学了3个月的编程,始终停留在书本阶段,并没有开发出产品。所以最近借鉴大神们的源码,加上自己的改动,做了一款在线小游戏(结合使用环境,主要照顾手机移动端,所以电脑端的体......
  • Arcaea 自制 | 学习笔记
    安装图形化制谱工具ArcadeZero谷歌云盘:https://drive.google.com/drive/folders/1ziY89wDWrwQJxbD-YGCSIwMwdE_WzrRE?usp=sharing关于Arcade的使用请参考https://n......
  • 基于 Arcaea v4.1.9 ipa 制作的自制谱 | 壳子
    "一个很好的逆向入门的练习"首先需要准备IDAPro7.7以及Sideloadlyv0.28两个软件,前者能帮助你魔改ipa内容,后者能将ipa导入ios设备.Hash校验这是逆向......
  • CLISP学习(一)
    LispLisp发表于1960,是由数学家约翰·麦卡锡发明的。在计算机有所发展时,数学家们对人工智能有着极大的兴趣,觉得可以实现一个共通的方法,使计算机能够处理链表中的符号数据,......
  • CLISP学习(二)
    它是一门函数式语言,你要用函数的思维来思考。只不过与数学的表达不同的是,数学里的函数是在括号外 f(x),而lisp是在括号内,以列表的形式(fx),cos(x)-->(cosx)。lisp不区......
  • 自制1.8V~3.3V双向电平转换器(适用于SWD下载接口)
    文档标识符:Bi_Dir_Volt_Trans_T-D-P25作者:DLHC审阅:DLHC最后修改日期:2023.1.8_PM最后修改内容:添加内容、审阅内容发布状态:已发布本文链接:https://www.cnblogs.com/DLH......
  • [oeasy]python0037_字符画艺术_asciiview_自制小动物_imagick_asciiart
    ​ 牛说(cowsay)回忆上次内容我们狂飙了一路从用shell直接执行python程序到用shell循环执行python程序循环体中把python的输出结果用管道交给了......
  • MyEclispe修改最大内存和最小内存的方法
    ......
  • 在vmware启动anolis自制iso镜像出现 ERROR: could not insert 'floppy' : No such dev
    解决linux启动出现ERROR:couldnotinsert'floppy':Nosuchdevice报错如下:最后屏幕狂刷Warning:dracut-initqueuetimeout-startingtimeoutscript如下:......
  • 自制一个极限精简的起始页
    概括起来讲:约等于空白页有一日我望着青柠心想,我需要的起始页,或许只是空白页,但是为了让起始页不至于那么单调,于是我就将背景做成了必应的每日一图(CSS来自梧桐)。之后我又加......