首页 文章
  • 0 votes
     answers
     views

    Common Lisp - 函数之间的错误:表单中未定义的运算符get-param(get-param:mem)

    我在LispWorks,我看到这个 Headers 的其他问题,但没有一个帮助我 . 这是我写的代码: (defun get-param (param) (lambda (state) (getf (cdr state) param))) (defconstant get-acc (get-param ':acc)) (defconstant get-pc (get-para...
  • 25 votes
     answers
     views

    同构和“不受限制”的自我修改代码lisp是否真的可以自我修改?

    我将继续承认我对Lisp的了解非常少 . 但是我对这门语言非常感兴趣,并计划在不久的将来开始认真学习它 . 我对这些问题的理解无疑是有缺陷的,所以如果我说出任何有些错误的东西,请评论并纠正我而不是贬低 . Truly Homoiconic and Self-modifiable languages 我正在寻找支持Homoiconicity(代码与数据具有相同表示)和 unrestricted 自修...
  • 2 votes
     answers
     views

    在进行SICP练习时,DrRacket应该使用什么语言?

    我应该在DrRacket中选择什么语言才能进行SICP练习?
  • 5 votes
     answers
     views

    Lisp语法的目的是建模AST

    据我所知,Lisp语法代表AST,但是在高级格式中允许人们轻松读取和修改,同时也使机器也可以轻松处理源代码 . 出于这个原因,在Lisp中,据说代码是数据,数据是代码,因为代码(s-epxression)本质上只是AST . 我们可以将更多的AST(这是我们的数据,只是lisp代码)插入其他AST(lisp代码)或独立地扩展其功能并动态操作它(运行时),而无需重新编译整个操作系统以集成新的在其他语...
  • 120 votes
     answers
     views

    除了“符号”之外,为什么Clojure还有“关键字”?

    我从其他方面了解其他Lisps(特别是Scheme) . 最近我一直在阅读Clojure . 我看到它既有"symbols"又有"keywords" . 符号我很熟悉,但没有关键字 . 其他Lisps有关键字吗?关键字如何与除了具有不同符号(即:冒号)之外的符号不同?
  • 16 votes
     answers
     views

    如何实现Lisp宏系统?

    我已经在node.js上实现了自己的Lisp,我可以像这样运行s表达式: (assert (= 3 (+ 1 2))) (def even? (fn [n] (= 0 (bit-and n 1)))) (assert (even? 4)) (assert (= false (even? 5))) 现在我想添加宏 - defmacro 函数 - 但这是我想知道如何在其他Lisps中实现宏系...
  • 14 votes
     answers
     views

    为什么要求矢量?

    在我向一个不熟悉clojure的同事解释一些clojure代码之前,我从未真正想过这个 . 当他问你为什么使用向量来声明绑定而不是列表时,我向他解释了 let . 我真的没有他的答案 . 但该语言确实限制您使用列表: => (let (x 1) x) java.lang.IllegalArgumentException: let requires a vector for its bind...
  • 180 votes
     answers
     views

    为什么Lisp用于AI? [关闭]

    我一直在学习Lisp以扩展我的视野,因为我听说它用于AI编程 . 在做了一些探索之后,我还没有找到人工智能的例子或语言中的任何东西,这会使它更倾向于它 . 过去使用Lisp是因为它可用,还是有些东西我只是缺少?
  • 2 votes
     answers
     views

    Common Lisp Unbound Variable

    是否可以使用未初始化的变量作为函数参数?对于作业,我必须使用CLOS编写语义网络系统,我的教授包括一个测试函数来测试我们的输出,其中一个指定: (print (def-concept Human)) , 这意味着将参数Human传递给函数def-concept . 运行此测试功能时,我无法摆脱错误(在Allegro CL中): Error: Attempt to take the value of...
  • 105 votes
     answers
     views

    Clojure,Scheme / Racket和Common Lisp有什么区别?

    我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题 .
  • 6 votes
     answers
     views

    常见的lisp,未定义的交集函数行为?

    根据CLHS条目的INTERSECTION功能(http://www.lispworks.com/documentation/HyperSpec/Body/f_isec_.htm): 对于满足测试要求的每一对,该对中的两个元素中的一个将被放入结果中 . 我的问题是我需要知道对中的 which one of the two elements 将被放入结果中,这很重要,例如 :key #'car ...
  • 2 votes
     answers
     views

    Common Lisp函数

    我想创建一个函数来验证列表的数字是否介于1和10之间(包括1和10) . 如果他们这样做,我想将它添加到我创建的新列表中 . 然而,如果它们未能落在该范围内,我决定将它们转换为适合而不是丢弃它们(通过添加(1(随机10)) . (defun fit (lst) "(lst) check every number if it fits the range (1-10)" ...
  • 24 votes
     answers
     views

    Common Lisp中的值函数

    这些值是Common Lisp中的函数,只是用于将多个值打包到一个被调用者解构的列表中的语法糖 . 我问,因为我认为Common Lisp支持"true"多值返回,而不是像其他语言一样返回元组或列表,例如python . 有人告诉我,这只是语法糖,所以我希望有人能够解释它 . 为了尝试理解values函数返回的类型,我键入 (type-of (values 1 2 3)) ,输...
  • 0 votes
     answers
     views

    Common Lisp:在函数中使用未定义的变量

    我想在Common Lisp中做类似的事情: (defparameter *fun* (lambda () x)) (let ((x 0)) (funcall *fun*)) ;should return 0 我想在定义函数时访问未定义的函数中的本地绑定 . 如果我使用x作为参数,它会工作,但我无法更改变量的值: (defparameter *fun* (lambda (x) ...
  • -2 votes
     answers
     views

    Common Lisp程序错误

    我是一个很新的Lisp编程语言,我得到一个我无法解决的错误:/希望有人可以帮助我 . (对不起,如果是新手的错误) 这是我的代码: (defun inicia() (princ "Ingresa la infija") (setf temp(read-line)) (setf final nil) (setf pilatemp nil) (setf tamaño (lengt...
  • 0 votes
     answers
     views

    EVAL:Common LISP中的未定义函数[重复]

    这个问题在这里已有答案: Writing recursive GCD in Lisp 4个答案 我在CLISP中定义了一个简单的功能函数: (defun power(B E) (if (= E 1) B (* B ( power (B (- E 1)))))) 但是当我尝试这样调用函数时: (power 2 6) 我收到以下错误: *** - EVAL:未...
  • 0 votes
     answers
     views

    SBCL -Common Lisp错误

    我试图从以下链接运行存储库:https://github.com/JafferWilson/test-program 我收到此错误: sbcl --script paraphrasing.lisp Unhandled SB-KERNEL:SIMPLE-PACKAGE-ERROR in thread #<SB-THREAD:THREAD ...
  • 4 votes
     answers
     views

    Common Lisp中的列表对象方法(CLOS)

    有没有办法让对象定义所有方法并检查对象是否响应指定的方法? 寻找类似Ruby的“foo”.methods (list-methods *myobj*) ;; -> (method0 method1 methodN) 还有像ruby的“foo”.respond_to? :方法 (has-method-p *myobj* 'foo-method) ;; -> T 对于插槽有slot-e...
  • 0 votes
     answers
     views

    更好地访问Common Lisp中的Assoc列表

    我有一个天气获取应用程序,我正在努力,我有一些关于列表的麻烦 . 我使用openweathermap和convert-to-json从我的get-weather函数返回以下列表: ((:COORD (:LON . -123.12) (:LAT . 49.25)) (:WEATHER ((:ID . 500) (:MAIN . "Rain") (:DESCRIPTION ....
  • 6 votes
     answers
     views

    Clojure,宏可以做一些无法通过函数完成的事情

    我正在学习Clojure宏,并想知道为什么我们不能只使用函数进行元编程 . 据我所知,宏和函数之间的区别在于宏的参数没有被计算,而是作为数据结构和符号传递,而返回值被评估(在调用宏的地方) . Macro作为读者和评估者之间的代理,在评估发生之前以任意方式转换表单 . 在内部,他们可以使用所有语言功能,包括函数,特殊形式,文字,递归,其他宏等 . 功能正好相反 . 在调用之前计算参数,返回值之后...
  • 9 votes
     answers
     views

    同质性水平[关闭]

    这是我previous question的后续行动 . 我不相信Lisp代码与Von Neumann架构上的机器代码一样是Homoiconic . 对我来说似乎很明显,在这两种情况下代码都表示为数据,但似乎很明显,你可以在机器代码中比在Lisp中更自由地利用这个属性 . 在使用机器代码时,自我修改代码非常容易,它总是偶然发生,通常是偶然的,并且(根据我的经验)是搞笑的结果 . 在编写一个简单的“打...
  • 27 votes
     answers
     views

    在什么意义上,像Elixir和Julia homoiconic这样的语言?

    Lisp中的同质性很容易看出: (+ 1 2) 是 + 的函数调用,带 1 , 2 作为参数,以及包含 + , 1 和 2 的列表 . 它同时是代码和数据 . 但是,像朱莉娅这样的语言: 1 + 2 我知道我们可以将其解析为Julia中的 Expr : :(1 + 2) 然后我们可以获得AST并操纵它: julia> Meta.show_sexpr(:(1+2)) (:call, :+, 1...
  • 266 votes
     answers
     views

    是什么让Lisp宏如此特别?

    阅读编程语言的Paul Graham's essays,人们会认为Lisp macros是唯一的出路 . 作为一个忙于开发人员,在其他平台上工作,我没有使用Lisp宏的特权 . 作为想要了解嗡嗡声的人,请解释是什么让这个功能如此强大 . 还请将此与我从Python,Java,C#或C开发世界中理解的内容联系起来 .
  • 47 votes
     answers
     views

    Clojure中快速素数生成

    我一直在努力解决Clojure中的问题,以便变得更好,而且我已经遇到了几次素数 . 我的问题是它只是花了太长时间 . 我希望有人可以帮我找到一种以Clojure-y方式做到这一点的有效方法 . 当我拳头做到这一点时,我粗暴地强迫它 . 这很容易做到 . 但是计算10001个素数在Xeon 2.33GHz上用了2分钟,对规则来说太长了,一般来说太长了 . 这是算法: (defn next-prime...
  • 79 votes
     answers
     views

    Clojure与其他Lisps [关闭]

    我的问题的意图是 not 开始一场火焰战,而是确定在什么情况下每种语言都是"the best tool for the job." 我已经阅读了几本有关Clojure的书(Programming Clojure,Practical Clojure,The Joy of Clojure和Manning Early Access版本Clojure in Action),我认为这是一...
  • 2 votes
     answers
     views

    编程语言名称的历史? [关闭]

    有谁知道编程语言名称的历史?它们来自哪里? a,b,c,java,python,scheme,prolog,ada,fortran,algol,cobol,assembly,pascal,lisp,perl,haskell,php,javascript,c#,ruby,c等等 .
  • 6 votes
     answers
     views

    如何保存我在LispBox / Slime中输入的所有函数?

    情况:我在Emacs中使用REPL时输入了几个函数 . 问题:当我只是保存缓冲区时,有像“;评估中止”这样的垃圾 . 我想要的:清楚地描述我在最新版本中输入的所有功能 . 我能这样做吗?谢谢 .
  • 2 votes
     answers
     views

    在Atom上有Common Lisp的github降价语言标识符吗?

    我试图在Atom上使用GitHub Markdown在Common-Lisp中编写一些代码块,但是如果我写的话 ```common-lisp ```cl 它没有突出语法 .
  • 1 votes
     answers
     views

    在Scheme中检查对象是否为“listdiff”

    listdiff是一对谁的车是L,其cdr是eq?到L,或到(cdr L),或到(cdr(cdr L)))等.listdiff的cdr不必是列表;它可能是任何物体 . listdiff D表示(cd D)之前的(车辆D)的前缀 . 例如,假设ils是不正确的列表(e i o u.y) . 然后(cons ils)返回一个空的listdiff,(cons ils(cdr(cdr ils)))返回...
  • 6 votes
     answers
     views

    DrRacket口译员是否使用基于SICP练习1.5的正常顺序评估?

    必须根据以下 Value 决定: (测试0(p)) 测试定义为: (define (test x y) (if (= x 0) 0 y)) 和p定义为: (define (p) (p)) 当我评估 (test 0 (p)) 时,解释器进入无限循环,表明它正在评估 p . 这显示 normal-order evaluation ,因为在替换参数之前评估操作数 ....

热门问题