极致之美——百行代码实现全新智能语言Lisp(4)
作者:月影 来源:51js 发布时间:2010-07-13 13:07:00
到这里为止我们很高兴地看到LispScript已经可以不依赖于javascript来扩展了
现在我们可以直接用LispScript定义一些新函数了:
函数:[isNull,x]测试它的自变量是否是空表.
LispScript.Run(
[defun,'isNull',['x'],
[eq,'x',[_,NIL]]]
);
> [isNull,[_,a]]
[]
> [isNull. [_,[]]]
t
函数:[and,x,y]返回t如果它的两个自变量都是t, 否则返回[].
LispScript.Run(
[defun,'and',['x','y'],
[cond,['x',[cond,['y',true],[true,NIL]],
[true,NIL]]]]
);
> [and,[atom,[_,a]],[eq,[_,a],[_,a]]]
t
> [and,[atom,[_,a]],[eq,[_,a],[_,b]]]
[]
函数:[not,x]返回t如果它的自变量返回[],返回[]如果它的自变量返回t.
LispScript.Run(
[defun,'append',['x','y'],
[cond,[[isNull,'x'],'y'],
[true,[cons,[car,'x'],['append',[cdr,'x'],'y']]]]]
);
> [append,[_,[a,b]],[_,[c,d]]]
[a,b,c,d]
> [append,[], [_,[c,d]]]
[c,d]
函数:[pair,x,y]取两个相同长度的表,返回一个由双元素表构成的表,双元素表是相应位置的x,y的元素对.
LispScript.Run(
[defun,'pair',['x','y'],
[cond,
[[and,[isNull,'x'],[isNull,'y']],NIL],
[[and,[not,[atom,'x']],[not,[atom,'y']]],
[append,[[[car,'x'],[car,'y']]],['pair',[cdr,'x'],[cdr,'y']]]
]]]
);
> [pair,[_,[x,y,z]],[_,[a,b,c]]]
[[x,a],[y,b],[z,c]]
[assoc,x,y]取原子x和形如pair函数所返回的表y,返回y中第一个符合如下条件的表的第二个元素:它的第一个元素是x.
LispScript.Run(
[defun,'assoc',['x','y'],
[cond,[[eq,[car,[car,'y']],'x'],[car,[cdr,[car,'y']]]],
[[isNull,'y'],NIL],[true,['assoc','x',[cdr,'y']]]]]
);
> [assoc,[_,x],[_,[[x,a],[y,b]]]]
a
> [assoc,[_,x],[_,[[x,new],[x,a],[y,b]]]]
new
[ret,e]返回表达式计算结果
LispScript.Run(
[defun,'ret',['e'],[car,['e']]]
);
[str,e]返回表达式计算结果的引用
LispScript.Run(
[defun,'str',['e'],[_,[_,'e']]]
);


猜你喜欢
- 本文也是开发项目中的一个小经验Tip,虽然很简单,但对很多朋友也有小帮助。我们实际工程中,可能遇到开发环境、预上线环境、线上环境等环境场景,
- 一:安装PyQt5pip install pyqt5如果你的系统没有安装pip请阅读我们的另一篇文章 windows下python安装pip
- 说明1、模型集成是指将一系列不同模型的预测结果集成在一起,从而获得更好的预测结果。2、对于模型集成来说,模型的多样性非常重要。Diversi
- PHP get_html_translation_table() 函数实例输出 htmlspecialchars 函数使用的翻译表:<
- 介绍图像分类器通常在训练更多的图像时表现得更好。在图像分类模型中,一个常见的问题是,模型不能正确地对图像进行分类,只是因为它没有针对同一图像
- 这篇文章主要介绍了Python如何基于smtplib发不同格式的邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 如下所示:# coding = GBKa =[1,2,3,4,5]sum=0b = len(a)print("这个数组的长度为:&
- 本文实例讲述了Python的批量远程管理和部署工具Fabric用法。分享给大家供大家参考。具体如下:Fabric是Python中一个非常强大
- 了解了上一篇的ADO.NET简介,我们就可以来对数据库进行增删改查等基本操作了!下面是每种操作的具体实现。先在自定义类的头部定义好数据库连接
- 一、架构介绍Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方
- python的版本及依赖的库的安装#版本python 3.7.1pip install pywin32==224pip install nu
- 先把要抓取的网络地址列在单独的list文件中https://www.jb51.net/article/83440.htmlhttps://w
- 下面的代码主要用于使用python语言调用NASA官方的MODIS处理工具HEG进行投影坐标转换与重采样批量处理主要参考HEG的用户手册:h
- 简述今天也是同事在做微信小程序的开发,需要音乐接口的测试,可是用网易云的开放接口比较麻烦,也不能进行测试,这里也是和我说了一下,所以就用爬虫
- 在做前端界面开发的时候,遇到需要改变颜色的需求,就需要使用颜色选择器。针对这个问题,第一想法,自然是H5提供了input color,可以实
- 本文为大家分享了oracle11g安装图文教程,供大家参考,具体内容如下0、安装环境1、安装包下载1)http://www.oracle.c
- vue-cli 环境变量 process.env使用参考官网: https://cli.vuejs.org/zh/gu
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 前言本文提供将音频提升音量的python代码,一如既往的实用主义代码。环境依赖ffmpeg环境安装ffmpy安装:pip install f
- windows10:1,先要pip安装pydotplus和graphviz:pip install pydotpluspip install