gpt4 book ai didi

lisp - LISP 中的动态构建函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:41 29 4
gpt4 key购买 nike

我有一个关于动态构建函数(或类似的东西)的问题。在 Java 中,我可以通过编程将一些 Source 写入字符串,编译该字符串并像函数一样执行它多次。

假设我有一些遗传算法来创建最佳代码以获取 n 个输入参数,根据基因组计算它们并返回 m 个输出参数。所以我想知道是否有可能(而且我很确定它是),创建一个列表列表的列表....包含该函数,然后用不同的输入参数调用这个函数几千次来计算错误率.

我现在需要的是一个示例,说明如何以编程方式创建这样的列表以及如何使用它。目前我完全卡住了。

热烈欢迎任何引用或示例。

最佳答案

Lisp 代码是数据:列表、符号、数字......

(defun foo () 42)

Lisp 有list+ 等函数。你可以使用它:

(list 'defun
'foo
'()
(+ 25 17))

如何编译一个函数?评估代码并编译它。

(compile (eval my-function-definition))

所以放在一起:

CL-USER 10 > (compile (eval (list 'defun 'foo '() (+ 25 17))))
FOO
NIL
NIL

CL-USER 11 > (foo)
42

真的编译了吗?

CL-USER 11 > (disassemble 'foo)
424000EA3C:
0: 49396275 cmpq [r10+75], rsp
4: 7720 ja L1
6: 4883F900 cmpq rcx, 0
10: 751A jne L1
12: 4157 push r15
14: 55 push rbp
15: 4889E5 moveq rbp, rsp
18: 4989DF moveq r15, rbx
21: BF50010000 move edi, 150
26: B901000000 move ecx, 1
31: 4889EC moveq rsp, rbp
34: 5D pop rbp
35: 415F pop r15
37: C3 ret
L1: 38: 41FFA6E7020000 jmp [r14+2E7] ; SYSTEM::*%WRONG-NUMBER-OF-ARGUMENTS-STUB
45: 90 nop
46: 90 nop
47: 90 nop
48: 90 nop
49: 90 nop
50: 90 nop
51: 90 nop

好像是...

关于lisp - LISP 中的动态构建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286667/

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