小编Aro*_*oob的帖子

Common Lisp`loop`:最大化为`let`引入的局部变量

loopCommon Lisp中的工具允许使用多个价值累积条款maximize.
现在,它也可以提供可变varmaximize条款:

(loop for x from 0 to 10 maximize (func x) into var)
Run Code Online (Sandbox Code Playgroud)

我的问题是:

是否有可能作为var一个新的局部变量引入let

一个示例场景是:

(let ((var -1)) ; assume numeric result
  (loop for x from 0 to 10 maximize (func x) into var))
Run Code Online (Sandbox Code Playgroud)

x具有数值并不重要,仅用于说明目的.

loops common-lisp local-variables let-binding

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

Common Lisp:Zip任意数量的列表

假设您有一个列表列表,例如'(("abc" "def" "ghi") ("012" "345" "678") ("jkl" "mno" "pqr"))'(("ab" "cd" "ef") ("01" "23" "45")).

压缩给定列表中列表的规范方法是什么?即如何func定义如此

(func '(("ab" "cd" "ef") ("01" "23" "45")) :sep "|" :combiner #'concat) 
  ;; => ("ab|01" "cd|23" "ef|45")

(func '(("abc" "def" "ghi") ("012" "345" "678") ("jkl" "mno" "pqr")) ...)
  ;; => ("abc|012|jkl" "def|345|mno" "ghi|678|pqr")
Run Code Online (Sandbox Code Playgroud)

哪个concat := (lambda (args) ...)是组合各个列表的头部的功能.

据推测,这种类型的操作被称为旋转zipMany(根据不同语言的相关问题的答案).

我有类似的东西(双apply)

(apply #'mapcar #'(lambda (&rest args) (apply #'concatenate 'string args)) lst) …
Run Code Online (Sandbox Code Playgroud)

functional-programming common-lisp

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

本地“macrolet”中未知的参数类型

在这个示例代码中

(defvar mat (make-array (list 5 3)
                        :initial-contents '((1 2 3)
                                            (4 5 6)
                                            (7 8 9)
                                            (10 11 12)
                                            (13 14 15))))

(defun mk-idx (dims dim)
  (loop
     for i below (length dims)
     if (= i dim) collect 1
     else collect 0))

(defun loop-over-dim (ary dim)
  (macrolet ((expan (a d)
               (let* ((dims (array-dimensions a))
                      (dim-max (nth d dims))
                      (sel (mk-idx dims d))
                      (i (gensym)))
                 `(loop
                     for ,i below ,dim-max
                     collect (aref ,a ,@(substitute i 1 sel))))))
    (expan ary dim)))
Run Code Online (Sandbox Code Playgroud)

我尝试访问一个一维固定的矩阵(当前在 …

macros common-lisp

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