gpt4 book ai didi

function - LISP - 通过参数搜索特定函数的程序

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

为了一个类(class)项目,我必须用 lisp 编写一个程序。

程序应该包含最重要的 lisp 函数、它们的输入和输出参数以及可能的可选参数。

例如:函数 - 第一,输入 - 列表,输出 - 对象(列表的第一个成员)。

程序应该以两种不同的方式工作:

  1. 你给程序一个函数名,它应该返回函数参数。

  2. 您输入函数参数,如果存在具有这些参数的函数,它应该返回函数的名称。

我的问题:

  1. 在 lisp 中处理这样的任务的正确方法是什么?我想也许一棵树是处理它的一种方式? (制作一个包含所有函数和参数的树,然后编写一个处理它的程序)。

  2. 有没有人有比这更好的想法来完成这项任务?或者从哪里/如何开始的一些建议?或包含任何信息的教程?

目前我有点不知道如何开始。您能提供的任何帮助将不胜感激。

英语不是我的第一语言,所以我希望一切都能理解。

问候。

最佳答案

首先看一下准备好你常用的lisp开发环境。在那之后我认为你应该调查:

诸如此类。之后看一下两个常见的 lisp 函数:

这是一个小例子:

CL-USER> (defun my-sum (a b) "Add my-sum parameters A and B." (+ a b))
MY-SUM
CL-USER> (my-sum 2 3)
5 (3 bits, #x5, #o5, #b101)
CL-USER> (describe #'my-sum)
#<FUNCTION MY-SUM>
[compiled function]


Lambda-list: (A B)
Derived type: (FUNCTION (T T) (VALUES NUMBER &OPTIONAL))
Documentation:
Add my-sum parameters A and B.
Source form:
(SB-INT:NAMED-LAMBDA MY-SUM
(A B)
"Add my-sum parameters A and B."
(BLOCK MY-SUM (+ A B)))
; No values
CL-USER> (documentation 'my-sum 'function)
"Add my-sum parameters A and B."
CL-USER> (defun my-sum (a b) "Add my-sum parameters A and B." (declare (type fixnum a b)) (+ a b))
WARNING: redefining COMMON-LISP-USER::MY-SUM in DEFUN
MY-SUM
CL-USER> (describe #'my-sum)
#<FUNCTION MY-SUM>
[compiled function]


Lambda-list: (A B)
Derived type: (FUNCTION (FIXNUM FIXNUM)
(VALUES
(INTEGER -9223372036854775808 9223372036854775806)
&OPTIONAL))
Documentation:
Add my-sum parameters A and B.
Source form:
(SB-INT:NAMED-LAMBDA MY-SUM
(A B)
"Add my-sum parameters A and B."
(DECLARE (TYPE FIXNUM A B))
(BLOCK MY-SUM (+ A B)))
; No values

最后,关于使用 describe 输出的字符串的最后一个技巧:

CL-USER> (with-output-to-string (*standard-output*)
(describe #'my-sum))
"#<FUNCTION MY-SUM>
[compiled function]


Lambda-list: (A B)
Derived type: (FUNCTION (FIXNUM FIXNUM)
(VALUES
(INTEGER -9223372036854775808 9223372036854775806)
&OPTIONAL))
Documentation:
Add my-sum parameters A and B.
Source form:
(SB-INT:NAMED-LAMBDA MY-SUM
(A B)
\"Add my-sum parameters A and B.\"
(DECLARE (TYPE FIXNUM A B))
(BLOCK MY-SUM (+ A B)))
"

关于function - LISP - 通过参数搜索特定函数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158158/

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