首页 文章
  • 1 votes
     answers
     views

    在Scheme中传递 Value 混淆

    请考虑从SICP获取以下过程: (define (make-withdraw balance) (lambda (amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) ...
  • 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 自修...
  • 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 ...
  • 47 votes
     answers
     views

    Clojure中快速素数生成

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

    Common Lisp中的等于运算符

    为什么这样: (every (lambda (x) (equal "a" x)) "aaaaa") 还有这个: (every (lambda (x) (equal "a" x)) "a") 返回 NIL ,同时: (every (lambda (x) (equal "a" x)) '(&quot...
  • 1 votes
     answers
     views

    方案:附加到当地环境

    比如说,我想在Scheme中实现“声明式”对象系统,方法是定义对象符号,然后将方法和字段附加到该对象 . 在这样做的时候,我想利用这个对象的本地环境来正确绑定它们在方法中的字段(稍后会添加),例如(一个非常“混乱”的例子): (define myobj (begin (define x 5) ; some local field (hard-coded for example) ...
  • 1 votes
     answers
     views

    词汇范围和共享对象

    考虑SICP中的 生产环境 帐户程序 . (define (make-account balance) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) &qu...
  • 1 votes
     answers
     views

    将值绑定到环境模型中的帧

    我对评估的环境模型如何运作有点困惑,并希望有人可以解释 . SICP说: 环境模型指定:要将过程应用于参数,请创建一个包含框架的新环境,该框架将参数绑定到参数的值 . 此框架的封闭环境是过程指定的环境 . 现在,在这个新环境中,评估过程体 . 第一个例子: 如果我: (define y 5) 在全球环境中,然后打电话 (f y) 哪里 (define (f x) (set! x 1)) ...
  • 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,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题 .
  • 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作为读者和评估者之间的代理,在评估发生之前以任意方式转换表单 . 在内部,他们可以使用所有语言功能,包括函数,特殊形式,文字,递归,其他宏等 . 功能正好相反 . 在调用之前计算参数,返回值之后...
  • 6 votes
     answers
     views

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

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

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

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

    编译语言可以同音吗?

    根据定义,homoiconic这个词的意思是: 代码和数据的相同表示 在LISP中,这意味着您可以使用带引号的列表并对其进行评估,因此 (car list) 将是函数和 (cdr list) 参数 . 这可以在编译时或在运行时发生,但是它需要解释器 . 没有编译时解释器的编译语言是否也可能是homoiconic?或者说同性恋的概念仅限于口译员?
  • 266 votes
     answers
     views

    是什么让Lisp宏如此特别?

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

    使用slime-fancy(slime-autodoc)设置clojure和常见lisp的emacs

    我为clojure和常见的lisp设置了emacs,但我也希望(slime-setup'(slime-fancy))用于常见的lisp . 如果我将该行添加到init.el,clojure将无法工作:它给了我repl,但它在我运行任何代码后挂起 . 我的配置 对于clojure: 我通过ELPA设置了clojure-mode,slime,slime-repl 我在项目目录中运行$ lein...
  • 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),我认为这是一...

热门问题