相关疑难解决方法(0)

setf中的f代表什么?

LISP具有setf为变量赋值的功能.现在我一直想知道函数的名称:set部分很明显,但f后缀代表什么?

lisp common-lisp

24
推荐指数
1
解决办法
1712
查看次数

常见的lisp如何在二维数组中设置一个元素?

我想我只是使用setq(或者setf,我不确定区别),但我不明白如何[i][j]在lisp中引用数组中的-th元素.

我的开始条件是这样的:

? (setq x (make-array '(3 3)))
#2A((0 0 0) (0 0 0) (0 0 0))
Run Code Online (Sandbox Code Playgroud)

我想改变第三行"第二行"中的第二项来表示:

? ;;; What Lisp code goes here?!
#2A((0 0 0) (0 0 0) (0 "blue" 0))
Run Code Online (Sandbox Code Playgroud)

以下,我认为接近,给出一个错误:

(setq (nth 1 (nth 2 x)) "blue")
Run Code Online (Sandbox Code Playgroud)

那么正确的语法是什么?

谢谢!

common-lisp multidimensional-array

4
推荐指数
2
解决办法
7060
查看次数

Common Lisp:错误"CDR LST应该是lambda表达式"

我正在做一个接受一个列表和两个原子的程序,如果atom-1出现在列表中,则用atom-2替换atom-1.
我正在使用Ubuntu系统在文本编辑器中进行编程

以下是我的代码:

#! /usr/bin/clisp

(defun my-replace (lst x y)
  (cond
    ((eq lst nil) nil)
    ((eq (cdr lst) nil) nil)
    ((eq (car lst) x) (setq (car lst) y))
    ( t (my-replace ((cdr lst) x y)))))
Run Code Online (Sandbox Code Playgroud)

当我尝试执行此操作时,Clisp显示以下错误:

*** - SYSTEM::%EXPAND-FORM: (CDR LST) should be a lambda expression

我是Lisp的初学者.
请告诉我如何解决这个错误.

lisp recursion clisp common-lisp

1
推荐指数
1
解决办法
629
查看次数

常见的lisp函数/特殊形式/宏/等等.名称是什么意思,在哪里可以找到这些信息?

当我在学习HTML时,它是非常有益的,我知道ol的手段ordered list,trtable row等,有些口齿不清基元/形式很简单:funcall应该是function call,defmacro- define macro.有些是在中间 - incf是...... increment... f???但是因为普通的口齿不清是如此古老,这种原始/特殊形式/等......似乎没有敲响钟声.你们能帮助我搞清楚吗?更重要的是:我在哪里可以找到关于学习每一个背后的意义/历史的权威资源?(我会接受基于第二个问题的答案)

该文档也没有帮助我:

* (describe #'let)

#<CLOSURE (:SPECIAL LET) {10013DC6AB}>
  [compiled closure]

Lambda-list: (&REST ARGS)
Derived type: (FUNCTION (&REST T) NIL)
Documentation:
  T
Source file: SYS:SRC;COMPILER;INFO-FUNCTIONS.LISP

* (documentation 'let 'function)

"LET ({(var [value]) | var}*) declaration* form*

During evaluation of the FORMS, bind the VARS to the result of evaluating the …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

1
推荐指数
1
解决办法
105
查看次数