标签: lisp

lisp中的字符串添加分配

我有一个带有条件的循环,根据该循环,我决定是否应该向现有字符串添加内容.在Python中,它应该看起来像(这是虚拟代码,只是为了显示这个想法):

result_str = ''
for item in range(5):
  if item % 2 == 0:
    result_str += str(item)

print(result_str)
Run Code Online (Sandbox Code Playgroud)

输出: 024

所以问题是:如何+=在lisp中对strings()执行添加赋值?

lisp common-lisp

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

有人可以解释一下:(+ 2(if(> ba)ba))?

开始完成计算机程序的结构和解释练习,我在第一组练习中坚持这一点.

a=3
b=4
(+ 2 (if (> b a) b a))
Run Code Online (Sandbox Code Playgroud)

我已经找到了答案:6但是,我自己一直在努力,我无法弄清楚如何获得这个数字.

谁能解释一下?

lisp scheme

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

什么'null?','程序?' 和'符号?' 在下面的代码中表示什么?

我将通过以下文档来实现Python中的Lisp Interpreter:http://norvig.com/lispy.html

standard_env函数中,已经定义了一个字典,用于将某些符号或变量映射到它们相应的函数或值.但是,我无法理解env词典中的以下条目:

env = {}
env.update({
    'equal?':  op.eq, 
    'list?':   lambda x: isinstance(x,list),
    'null?':   lambda x: x == [], 
    'number?': lambda x: isinstance(x, (int, float)),   
    'procedure?': callable,
    'symbol?': lambda x: isinstance(x, str),
})
Run Code Online (Sandbox Code Playgroud)

什么是'?' 在关键意义的最后?您能否提供一些使用这些条目的例子?

lisp python

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

Clojure:将值设置为键

可能是,这是一个愚蠢的问题,但它可能对许多新手有所帮助。如何将键值对添加到地图?

我的意思是:

(defn init-item [v item]
  (let [{:keys [id value]} item]
    (-> v
        (assoc :{ID_AS_A_KEY} value))))
Run Code Online (Sandbox Code Playgroud)

我得到:

(init-item {} {:id "123456789" :value [:name "King" :surname "Leonid"]})
user=> {:123456789 [:name "King" :surname "Leonid"]}
Run Code Online (Sandbox Code Playgroud)

lisp clojure

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

读者级别的Common Lisp调试

我不确定如何恰当地说出这个问题.但是,它就是这样的.

假设我们有一些类似于defunCommon Lisp的宏,并且构建在它之上.我用其中一个宏做了声明,编译得很好.

但是,当我在REPL打电话时,我得到NIL了结果.这看起来令人费解,所以我在REPL评估了原始声明.它评估为NIL.

我需要调试这个.我的问题是我是否应该关注读者级别或其他地方.也就是说,如果没有抛出错误,我可以在哪里开始对此进行故障排除?

lisp common-lisp

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

常见的Lisp映射到单词

我试图做一个转换函数,该函数接受数字`(1 2 3)的列表并写入(“一个”,“两个”,“三个”)。这是我到目前为止的内容:

(defun translate-number (num)
        (if (= num 0) (return "ZERO") ())
        (if (= num 1) (return "ONE") ())
        (if (= num 2) (return "TWO") ())
        (if (= num 3) (return "THREE") ())
        (if (= num 4) (return "FOUR") ())
        (if (= num 5) (return "FIVE") ())
        (if (= num 6) (return "SIX") ())
        (if (= num 7) (return "SEVEN") ())
        (if (= num 8) (return "EIGHT") ())
        (if (= num 9) (return "NINE") ())
)

(defun translate (L) …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

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

Lisp交互式Emacs乘法不正确

我在Emacs Lisp Interaction上运行以下代码:

(defun square (x) (* x x))
(square (square (square 1001)))
Run Code Online (Sandbox Code Playgroud)

这给了我1114476179152563777。但是,((1001^2)^2)^2实际上是1008028056070056028008001。这怎么可能?

lisp emacs elisp numbers bignum

0
推荐指数
2
解决办法
99
查看次数

剪辑:变量没有值

我想让用户程序提取列表中具有成对的a元素b(由参数给定)的元素。

像,如果我给c作为参数和list ((c a) (c b) (d f) (d g)),结果应该是'a' 'b';

所以我定义一个函数如下

(defun myr (b a) (if (= CAAR(a) b) CDAR(a) 'nope myr(b CDR(a))));
Run Code Online (Sandbox Code Playgroud)

像这样打电话

myr(b ((b a) (b c) (a d) (a f)))
Run Code Online (Sandbox Code Playgroud)

但是结果就像 variable myr has no value

这是我第一次在Lisp中,所以只要告诉我应该搜索哪个关键字将对我有很大帮助。

感谢您的阅读。

lisp common-lisp

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

Common Lisp中的自执行Lambda表达式

我认为这是在Common LISP中编写自执行lambda表达式的唯一方法:

(funcall #'(lambda (x) (format t "~S" x)) 10)
Run Code Online (Sandbox Code Playgroud)

但似乎在GNU / Linux上的CLISP中也可以使用:

((lambda (x) (format t "~S" x)) 10)
Run Code Online (Sandbox Code Playgroud)

这更像您在Scheme中执行的操作。根据Common LISP规范,这是否正确?其他CL实施是否也以这种方式工作。

lisp lambda common-lisp

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

为什么递归函数中的计数总是需要两个参数?

我用递归和循环宏编写了一些简单的循环,但令我困扰的是,递增计数需要两个参数,递减计数不需要。

是否存在示例?

这个问题的开始只是如何打印递增的内容。我的第一个功能是“ printsomestuff”。

(defun printsomestuff (stuff times) 
  (if (= times 0)
      'im-the-return-value
      (progn 
        (print stuff)
        (printsomestuff stuff (1- times)))))

(defun counting-down (topnumber)
  (if (= topnumber 0)
      'done
      (progn 
        (print topnumber)
        (counting (- topnumber 1)))))


(defun loopcounting (uptonumber)
  (loop for i from 1 to uptonumber
    do (print i)))

(defun recurcounting-up (uptonumber)
  (let ((incrementer 0))
    (if  
     (= incrementer uptonumber)
     'done
     (progn 
       (print incrementer)
       (recurcounting-up (+ incrementer 1))))))

(defun recur-counting-up-two (uptonumber startnumber)
  (if (> startnumber uptonumber)
      'done
      (progn
        (print startnumber)
        (recur-counting-up-two uptonumber …
Run Code Online (Sandbox Code Playgroud)

lisp recursion scheme

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

标签 统计

lisp ×10

common-lisp ×5

scheme ×2

bignum ×1

clojure ×1

elisp ×1

emacs ×1

lambda ×1

numbers ×1

python ×1

recursion ×1