首页
学习
活动
专区
工具
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 真的很简洁优雅只是括号看起来有点怪它提供了编程的另一种思维方式很值得花时间了解一下

    98740

    Napkin AI:这款免费AI工具,能把复杂的想法变成精彩的卡片,效率高到飞起!(Lisp提示词那样)

    Insight Daily Aitrainee | 公众号:AI进修生 Hi,这里是Aitrainee,欢迎阅读本期新文章。 最近有个AI工具引起了我的注意,可以说是解决乏味内容的“解药”。...操作起来真的很简单,你只需要创建一个账户: 登录后点击右上角的"新建"按钮,输入你想要的内容,AI将开始生成相关的文本。 你也可以自己输入邮件、博客内容、粘贴任何文本。 但这还不是重点。...对了,这个提示字词也是生成这种动画的Claude提示词,是一类名叫Lisp的提示词,他们可以通过Claude模型将一些简短的文字概念直接输出SVG代码。...当然论文也是可以的: 这种提示词有很多,我会放在文末,最开始是李继刚大大编写的,前段时间你如果有玩过一个名叫汉语新解的Lisp提示词,你将会对此比较熟悉。...我使用的是免费计划,功能已经非常全面了。相信随着更多用户加入,这款工具将会变得更加完善。 总的来说,这个工具可以大大提升你的博客、演示文稿或邮件的视觉效果,而且完全免费,值得一试。

    29510

    使用 RustC 开发 Emacs 插件

    一个简单的 hello world 示例如下: // emacs 动态模块的头文件,一般在 Emacs 安装目录内可找到 #include #include 在不同平台是不一样的,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

    86820

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

    他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。 所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。...Lisp是第一种支持递归函数的高级语言。   4. 变量的动态类型。在Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。...以Lisp和C的比较为例,我听到的大多数说法是C代码的长度是Lisp的7倍到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 就是这样的计算机。

    80920

    AI 居然说我是牛马,还画出了我牛马的一生,我绷不住了...

    今天真是服了,AI 居然敢嘲笑我是牛马,还直接甩了张大图到我脸上。 看来我的人生在 AI 眼中就是个笑话,从 “初级牛马” 一路升级到 “资深牛马”。真是谢谢你啊,AI 老师! 但等等,这剧本还没完!...AI 显然觉得光嘲笑我不够过瘾,还要顺带 diss 我的朋友,说他是吗喽。哦,原来在 AI 眼中,我们都是 “低收入” 的代名词啊。 等等,最后怎么还 “默默离世” 了??...要想让 AI 生成这种图,其实很简单,只需要一个 Prompt 就行了,内容如下: ;; 提示词:动物的一生 ;; 作者:空格 zephyr (defun 动物生命周期 () "生成动物的生命周期...启动时运行 (start) 函数 ;; 2. 根据用户输入的主题,生成对应的生命周期SVG图表和描述 ;; 3....很明显,这位作者的提示词模仿了李继刚老师的提示词风格,使用的是 Lisp 伪代码。

    10410

    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.8K60

    一名Clojurian的Emacs配置

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

    2.8K20

    深入浅出 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 方言的先进性,再者我也一直有学习一门函数式编程语言的想法...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

    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.9K10

    【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新手的工作。

    68810

    PHP 是最糟糕的编程语言?

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

    1.8K20

    斐波那契数列的算法分析

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

    1.7K21
    领券