首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我是Common Lisp的新手,我不明白为什么在简单的情况下defun函数不起作用

Common Lisp是一种通用的编程语言,它支持函数式编程和面向对象编程。defun是Common Lisp中定义函数的关键字。在简单的情况下,defun函数可能不起作用的原因可能有以下几种:

  1. 语法错误:在使用defun函数时,需要确保语法正确,包括正确的括号匹配、正确的参数列表和函数体的书写等。如果语法有误,defun函数可能无法正常工作。
  2. 函数名重复:如果已经定义了同名的函数,再次使用defun定义同名函数时,会覆盖之前的定义。因此,需要确保函数名的唯一性,避免重复定义。
  3. 函数调用错误:在调用函数时,需要确保使用了正确的参数和参数类型。如果参数不匹配或类型不正确,defun函数可能无法正常工作。
  4. 环境问题:Common Lisp是一种交互式编程语言,可能存在环境配置问题。确保已经正确配置了Common Lisp的开发环境,并且加载了相关的库和扩展。

针对这个问题,可以尝试以下解决方案:

  1. 检查语法:仔细检查defun函数的语法,确保括号匹配、参数列表和函数体的书写正确。
  2. 检查函数名:确保函数名的唯一性,避免与已有函数重名。
  3. 检查函数调用:检查函数调用时传递的参数是否正确,确保参数匹配和类型正确。
  4. 检查环境配置:确保已经正确配置了Common Lisp的开发环境,并且加载了相关的库和扩展。

如果问题仍然存在,可以提供更多的代码和错误信息,以便更详细地分析和解决问题。

关于Common Lisp的更多信息,可以参考腾讯云的《Common Lisp开发指南》(链接地址:https://cloud.tencent.com/developer/doc/1101)。

请注意,以上答案仅供参考,具体解决方案可能因具体情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Emacs Lisp

前言 Lisp 一门很古老语言 LISP 具有悠久历史计算机编程语言家族,有独特和完全括号前缀符号表示法,起源于1958年,现今第二悠久而仍广泛使用高级编程语言,只有 FORTRAN 编程语言比它更早一年...,LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs Lisp Lisp 一个分支 Emacs Lisp...Lisp与Scheme有所不同 最近迷上了 Emacs 所以顺藤摸瓜,竟然搭进去了一门语言 万万没想到,为了了解一个编辑器,竟然搭进去了一门语言 好在这门语言结构比较简单清晰 以致于可以用 15 分钟入个门...中表示注释 ;; Elisp中做运算,调用函数简单方式 ;; (function arg1 arg2) ;; 这相当于通常function(arg1,arg2),下面的表达式,对两个数字进行加法运算...;; 下面的命令输入结果: Hello, I am Bastien (hello) ;; 前面定义hello函数不接受任何参数,过于简单, ;; 现在我们重新定义hello函数,让它接受一个参数

2.3K40

Emacs Lisp

前言 Lisp 一门很古老语言 LISP 具有悠久历史计算机编程语言家族,有独特和完全括号前缀符号表示法,起源于1958年,现今第二悠久而仍广泛使用高级编程语言,只有 FORTRAN 编程语言比它更早一年...,LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs Lisp Lisp 一个分支 Emacs Lisp...Lisp与Scheme有所不同 最近迷上了 Emacs 所以顺藤摸瓜,竟然搭进去了一门语言 万万没想到,为了了解一个编辑器,竟然搭进去了一门语言 好在这门语言结构比较简单清晰 以致于可以用 15 分钟入个门...中表示注释 ;; Elisp中做运算,调用函数简单方式 ;; (function arg1 arg2) ;; 这相当于通常function(arg1,arg2),下面的表达式,对两个数字进行加法运算...;; 下面的命令输入结果: Hello, I am Bastien (hello) ;; 前面定义hello函数不接受任何参数,过于简单, ;; 现在我们重新定义hello函数,让它接受一个参数

2.2K30

Emacs Lisp2

;; Elisp中做运算,调用函数简单方式;; (function arg1 arg2) ;; 这相当于通常function(arg1,arg2),下面的表达式,对两个数字进行加法运算(+..." my-name);; defun命令用来定义一个函数,语法;; (defun 函数名 (参数列表) (函数体))(defun hello () (insert "Hello, I am " my-name...));; ^ 把光标停在这里,再键入C-x C-e 执行defun命令来定义函数;; 通过defun命令,你已经Emacs中安装了这个hello函数,这个函数就成为了Emacs一部分,知道你退出Emacs...;; 下面的命令输入结果: Hello, I am Bastien(hello);; 前面定义hello函数不接受任何参数,过于简单,;; 现在我们重新定义hello函数,让它接受一个参数name...,按下 Ctrl-c Ctrl-` 时候,会自动输出一个 markdown 代码框,然后将光标定位到要输入代码位置----总结Lisp 真的很简洁优雅只是括号看起来有点怪它提供了编程另一种思维方式很值得花时间了解一下

96940

使用 RustC 开发 Emacs 插件

一个简单 hello world 示例如下: // emacs 动态模块头文件,一般 Emacs 安装目录内可找到 #include #include <string.h...动态链接库后缀名不同平台不一样,Linux 下 so, Windows 下 dll。...为了简化数据类型 C 与 ELisp 之间转化,Emacs 提供了一系列函数,比如: Elisp–>C 更多类型转化可参考官方文档: •Conversion Between Lisp and Module...ret); 热加载 开发过程中,最重要热加载,不能每次重启服务来让新代码生效,但是这里通过 module-load 加载动态模块,无法卸载,只能重启 Emacs 解决,这不是很友好,可以通过一种变通方式来实现..., name)) } 相比 C 代码,这里代码简洁不少,通过 #[defun] 将 say_hello 函数导出到 ELisp 中,并且函数名自动加上了前缀 greeting ,并提供了相应 feature

80320

为什么Lisp语言如此先进?(译文)

原意只是想做一种理论演算,用更简洁方式定义图灵机。 所以,为什么上个世纪50年代编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学不会过时。...Lisp第一种支持递归函数高级语言。   4. 变量动态类型。Lisp语言中,所有变量实际上都是指针,所指向值有类型之分,而变量本身没有。...以Lisp和C比较为例,听到大多数说法C代码长度Lisp7倍到10倍。...Common Lisp写法如下:   (defun foo (n)     (lambda (i) (incf n i))) Ruby写法几乎完全相同:   def foo (n)     ...如果有多个函数,同时指向相同变量,那么这种方法就会失效,但是在这个简单例子中,它已经足够了。

1.2K60

“数”起源 2.1 数据漫话史—抽象、表示与存储

”最原始载体,如果把一条打满了节绳子看做一个“内存条”,简单直接理解了计算机内存使用原理了?...下面,笔者使用 Lisp 语言程序来表达如何通过一个序列来定义任何一个自然数: ;LISP语言示例1 (defun my-number (lst) (if (null lst) 0 (1+ (my-number...(rest lst))))) 这段 Lisp 程序意思定义一个处理序列 lst 函数 my-number, 如果序列为空 那么 返回结果 0 否则 1+(之前一个数) 注意,在前面设计教原始人理解...图 2-2 Lisp程序--数序列定义示例 注:以上程序使用 Common Lisp 编写, LispBox 中调试通过。 读到这里,聪明您可能发现,这不就是求一个列表长度么?...如果将这个列表看作对一个无限长纸带所打的孔,那么纸带就 相当于是“数”存储器,操作纸带机器就是一个最简单“计算机”,上面定义处理“序 列”函数 my-number 就是这样计算机。

78720

Lisp本质(The Nature of Lisp)学习思考

和别人争论了数个小时之后, 最终还是放弃了学Lisp念头。为什么要花费几个月时间学习语法这么难看语言呢? 这种语言概念这么晦涩, 又没什么好懂例子。也许这语言不是该我这样的人学。...那为什么要用 XML呢? 有什么更好理由吗? 有的。虽然不确定James是否确实意识到了。语义可构造性方面, XML弹性Java望尘莫及。...例如, 上面曾经将过C求三次方宏, 用Lisp来写这样子: (defmacro triple (x) `(+ ~x ~x ~x)) (译注: Common Lisp中, 此处单引号应当是反单引号..., 意思对表不求值, 但可以对表中某元素求值, 记号~表示对元素x求值, 这个求值记号Common Lisp中应当是逗号。...尽管电脑科学领域, Lisp已经算是一门古老语言, 直到现在仍然很少有人真的明白该怎样给初学者讲授Lisp。尽管Lisp老手们尽了很大努力,今天新手学习Lisp仍然困难重重。

1.7K60

一名ClojurianEmacs配置

一名热衷于函数式编程Clojurian(Clojure粉),网络IDlambeta(λβ),读作/‘læmeitə/,个人博客网站https://lambeta.com。...转向emacs之前,一名忠实vim党,从大学开始就不断折腾vim配置,还花过一段时间专门学习了vimscript,曾经惊叹于vimscript动态函数式风格优美和强大。...这就不得不提起Clojure这门lisp方言,出于对lisp函数式编程痴迷,选择了基于JVMClojure作为自己偏好语言,而emacs天生为lisp而生。...简单点说,就是防止package-initialize之后重复加载包,因为可能会影响性能。 模块化 如果把什么东西都揉到init.el文件中,这个文件一定会很快变得臃肿不堪。...按照惯例,~/.emacs.d目录下建立一个lisp目录用于存放所有自定义模块文件,随后init.el中加入下面这句代码,意在把lisp目录加到emacs加载路径列表里。

2.7K20

Emacs 折腾记

工作中倒并没有用得到 Lisp 地方,但是最近眼前晃过一些书,比如《计算机程序构造和解释》、《码农》杂志第 13 期,都对这门古老语言推崇备至,历数现代 Lisp 方言先进性,再者也一直有学习一门函数式编程语言想法...Common Lisp 开发环境 学习 Common Lisp 使用 Emacs 最主要任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。...本来什么也不用配置情况下 M-x ielm 就能进入一个 Emacs Lisp REPL,但是它与 Common Lisp 毕竟还是有区别,所以还是另配置一个。... ~/.emacs 文件里加上: M-x slime 就可以进入到 REPL 进行 Common Lisp 学习了。...然后如何运行当前 py 文件这件事上遇到些问题。 Vim 中一直用 :!

1.3K20

深入浅出 Babel 下篇:既生 Plugin 何生 Macros

宏需要返回一个quoted ; ` 这是quote函数简写,表示quote,即这段‘程序’一段‘数据’, 或者说将‘程序’转换为‘数据’. quote不会被‘求值’ ; defun 定义一个函数 ;...通过上面的示例,你会感叹Lisp宏实现竟然如此清奇,如此简单。搞得想跟着题叶学一波Clojure,但是后来学了Elixir ?. ?...Lisp灵活性得益于简单语法(S-表达式可以等价于它AST),对于复杂语法语言(例如Javascript),要实现类似Lisp宏就难得多....复杂语法语言中,没办法使用 quoted 这么简单序列来表示语法,而使用 AST 则更复杂,开发者更难以驾驭。...如果自己维护构建脚本的话,升一次级你需要升级一大堆依赖,如果你要维护跨项目的构建脚本,那就更蛋疼了 为什么要用vue-cli3?》

1.5K31

Emacs 折腾记

工作中倒并没有用得到 Lisp 地方,但是最近眼前晃过一些书,比如《计算机程序构造和解释》、《码农》杂志第 13 期,都对这门古老语言推崇备至,还有垠神也撰文《Lisp 已死,Lisp 万岁!...历数现代 Lisp 方言先进性,再者也一直有学习一门函数式编程语言想法,看起来,Lisp 不二之选。...Common Lisp 开发环境 学习 Common Lisp 使用 Emacs 最主要任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。...本来什么也不用配置情况下 M-x ielm 就能进入一个 Emacs Lisp REPL,但是它与 Common Lisp 毕竟还是有区别,所以还是另配置一个。...然后如何运行当前 py 文件这件事上遇到些问题。 Vim 中一直用 :!

1.8K10

【Rust日报】 2019-07-29:关于创建「更小」Rust思考

rust 官方核心团队成员无船大佬新博文,针对社区中有些人喜欢Rust但还没有真正热爱Rust的人提出看法「能否创造一个更小化更简单更易于使用Rust呢」所做回应?...发出此类问题的人,最想改变Rust一个想法就是给Rust增加垃圾回收,但其实这是错误。因为他们根本不明白Rust语言本质。...如果Rust不以「系统」语言为目标,如何才能设计它才能变得更简单呢?无船大佬给出了以下思考: 放弃变量栈上还是堆上分配任何保证。Rust为开发者做了这种保证,这是Rust复杂性独特来源。...使用uninitialized()函数容易出现UB。一般FFi时候需要使用uninitialized(),因为C/C++中允许创建未初始化变量,而Rust不允许。...#reddit 这是来自于Reddit一个讨论贴,作者十分喜欢Rust,但是看到很多招聘广告要求三年Rust经验,所以他想问,是否有适合Rust新手工作。

66810

PHP 最糟糕编程语言?

这场争论关键LISP 和 C 作为例子来说明为什么“更糟就是更好”。...对于 LISP 程序员 Gabriel 来说,LISP 一种比 C 更好语言,速度和 C 一样快,而且 Common LISP 设计、开发和标准化已经花了很多年。...LISP 本身并非一种单一语言,而是一个语言家族。尽管 Common LISP 被设计成一种标准,但是 LISP 本身实现方式根据需要完成各种工作而存在。...某些情况下,为了保持简单可以牺牲一致性。 甚至不打算假装 PHP 一致,但是它一致性已经足够了。当涉及到数组与字符串函数时,人们可能会抱怨 needle/haystack 参数顺序。...不过,一般而言,数组函数一致,而字符串函数也是一致。与底层 C 库保持一致比语言中保持一致要简单得多。 PHP 在其他方面也足够一致。

1.7K20

斐波那契数列算法分析

嗯,本篇文章的确是关于斐氏数列,但我目的还是为了说一些应该有95%以上程序员不明白东西。如果能够跟着弄明白文中分析手法,其好处不言而喻。请听我细细道来。  ...,我们在此略去不知道通项公式情况下对上述比值存在极限数学证明(数学里一切并不是想当然)。   ...,看起来也差别不大: (define (f n) (if (< n 2) 1 (+ (f (- n 1)) (f (- n 2))) ) )   上面Scheme描述;Common Lisp...关于求整数次幂显然有快速算法,乘法次数为对数级,这个之前好几篇博文里都有说到过,可以认为这个基本算法。   ann个a相乘,平凡算法下我们要计算n-1个乘法。   ...其他地方简单改写一下,最后函数求值函数采用lambda编写就很简单了。

1.6K21

不管嵌套 XML,还是 Lisp 嵌套括号,还是 XXX Map 数据结构,一切都是树形结构——映射。Lisp本质(The Natur

和别人争论了数个小时之后, 最终还是放弃了学Lisp念头。为什么要花费几个月时间学习语法这么难看语言呢? 这种语言概念这么晦涩, 又没什么好懂例子。也许这语言不是该我这样的人学。...那为什么要用 XML 呢? 有什么更好理由吗? 有的。虽然不确定James是否确实意识到了。语义可构造性方面, XML弹性Java 望尘莫及。...例如, 上面曾经将过C求三次方宏, 用Lisp来写这样子: (defmacro triple (x) `(+ ~x ~x ~x)) (译注: Common Lisp中, 此处单引号应当是反单引号..., 意思对表不求值, 但可以对 表中某元素求值, 记号~表示对元素x求值, 这个求值记号Common Lisp中应当是逗号。...尽管电脑科学领域, Lisp已经算是一门古老语言, 直 到现在仍然很少有人真的明白该怎样给初学者讲授Lisp。尽管Lisp老手们尽了很大努力, 今天新手学习Lisp仍然困难重重。

1.4K20
领券