Lisp在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
做个小测试, 发布于:2024-03-14 09:53 桥梁安全计算lisp 发布于:2023-10-24 09:36 定义函数 newCalc,接受两个参数 x 和 y 发布于:2023-09-23 16:06 判断两数之和大于第三个数 发布于:2023-09-01 16:21 分数陈述性知识 发布于:2023-08-24 22:27 CAD面积/体积计算 发布于:2023-04-19 12:08 测试lisp语言 发布于:2023-04-10 15:03 计算list中某一元素数量 发布于:2023-02-16 11:32 LISP 初体验 发布于:2021-08-11 13:16 XY坐标标注CAD插件 发布于:2021-06-11 15:25 format t 输出语句 发布于:2020-08-10 18:21 print 输出语句 发布于:2020-08-10 18:20 write 输出语句 发布于:2020-08-10 18:16 write-line 输出语句 发布于:2020-08-10 18:14 循环输出内容 发布于:2020-08-10 18:11 [更多]
显示目录



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

在编程语言的通用术语中,包是专为提供一种方法来保持一组名从另一个分开的。在一个包中声明的符号将不会与另一个声明的相同的符号相冲突。这样的包减少独立的代码模块之间的命名冲突。

LISP读取器会维护所有已发现的符号表。当它找到一个新的字符序列,它在符号表中创建一个新的符号和存储。这个表被称为一个包。

当前包是由特殊变量*package*引用。

有两个预定义的包在LISP:

  • common-lisp - it包含了所有已定义的函数和变量符号。

  • common-lisp-user - it 采用了common-lisp包和其他所有的包与编辑和调试工具;它简称为cl-user

LISP包函数

下表提供了用于创建,使用和操作封装最常用的功能:

SL No 函数 说明
1 make-package package-name &key :nicknames :use 它创建并使用指定的包名返回一个新的包。
2 in-package package-name &key :nicknames :use 使得当前的程序包。
3 in-package name 这个宏的原因*package*设置为名为name的包,它必须是一个符号或字符串。
4 find-package name 它搜索一个包。返回包的名称或昵称;如果没有这样的程序包是否存在,find-package返回nil
5 rename-package package new-name &optional new-nicknames 它重命名一个包。
6 list-all-packages 该函数返回一个当前存在于Lisp语言系统中的所有包的列表。
7 delete-package package 它会删除一个包

创建一个LISP包

defpackage函数用于创建一个用户定义的程序包。它的语法如下:

defpackage :package-name
(:use :common-lisp ...)
(:export :symbol1 :symbol2 ...))

那么,

package-name是包的名称。

:use 关键字指定此包需要的包,即定义在此包中使用包的代码函数。

:export 关键字指定为外部在这个包中的符号。

make-package函数也可用于创建一个包。其语法函数:

make-package package-name &key :nicknames :use

参数和关键字具有相同的含义。

使用包

一旦创建了一个包,则可以使用代码在这个包中,使其成为当前包。in-package宏使得环境中的当前程序包。

示例

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(make-package :tom)
(make-package :dick)
(make-package :harry)
(in-package tom)
(defun hello () 
(write-line "Hello! This is Tom's Tutorials Yiibai")
)
(hello)
(in-package dick)
(defun hello () 
(write-line "Hello! This is Dick's Tutorials Yiibai")
)
(hello)
(in-package harry)
(defun hello () 
(write-line "Hello! This is Harry's Tutorials Yiibai")
)
(hello)
(in-package tom)
(hello)
(in-package dick)
(hello)
(in-package harry)
(hello)

当执行代码,它返回以下结果:

Hello! This is Tom's Tutorials Yiibai
Hello! This is Dick's Tutorials Yiibai
Hello! This is Harry's Tutorials Yiibai

删除包

delete-package宏允许删除一个包。下面的例子演示了这一点:

示例

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:



(adsbygoogle = window.adsbygoogle || []).push({});



(adsbygoogle = window.adsbygoogle || []).push({});
(make-package :tom)
(make-package :dick)
(make-package :harry)
(in-package tom)
(defun hello () 
(write-line "Hello! This is Tom's Tutorials Yiibai")
)
(in-package dick)
(defun hello () 
(write-line "Hello! This is Dick's Tutorials Yiibai")
)
(in-package harry)
(defun hello () 
(write-line "Hello! This is Harry's Tutorials Yiibai")
)
(in-package tom)
(hello)
(in-package dick)
(hello)
(in-package harry)
(hello)
(delete-package tom)
(in-package tom)
(hello)

当执行代码,它返回以下结果:

Hello! This is Tom's Tutorials Yiibai
Hello! This is Dick's Tutorials Yiibai
Hello! This is Harry's Tutorials Yiibai
*** - EVAL: variable TOM has no value
由JSRUN为你提供的Lisp在线运行、在线编译工具
        JSRUN提供的Lisp 在线运行,Lisp 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout