gpt4 book ai didi

macros - 初始内容由函数确定的数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:43 24 4
gpt4 key购买 nike

我正在尝试创建一个多维数组,其初始内容由一个函数确定。对于数组的任何指定维数,这很容易做到。

例如 2x2 数组:

(defmacro array-generation (fun &rest size-dimensions)
(let ((a (gensym))
(b (gensym)))
`(make-array ',size-dimensions
:initial-contents
(loop for ,a from 0 below (first ',size-dimensions) by 1
collect
(loop for ,b from 0 below (second ',size-dimensions) by 1
collect (,fun ,a ,b))))))

(defparameter bla (array-generation + 2 3))

给我 #2A((0 1 2) (1 2 3)).

我如何概括任何维度的宏?例如对于 2x3x5x6x7x8

(defparameter bla (array-generation + 2 3 5 6 7 8))

最佳答案

(defmacro array-generation (fun &rest dims)
(let ((syms (loop :repeat (length dims) :collect (gensym))))
(reduce (lambda (x y) (append x (list y)))
(mapcar (lambda (sym dim)
`(loop for ,sym from 0 below ,dim by 1 collect))
syms dims)
:initial-value (cons fun syms)
:from-end t)))

关于macros - 初始内容由函数确定的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21794379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com