gpt4 book ai didi

lisp - 在没有引用运算符的 LISP 中输入参数(属性列表/语义网络/基本函数)

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

我已经有一段时间没有使用 LISP 了。我现在正在使用它来制作一个属性列表来表示语义网络。虽然我似乎无法弄清楚这个基本问题,但它现在阻碍了所有进展。

我们期望的输入类型如下:

     (FACT (IS-A SEAT1 SEAT))
(FACT (IS-A L1 LEG))
(FACT (IS-A L2 LEG))
(FACT (IS-A L3 LEG))

以第一个为例。首先,我对如何在另一个类似的函数中调用一个函数感到有点困惑。我最初的想法是创建一个名为 fact 的函数,并使用 cond 语句来查看它是使用“is-a”还是“connected”(另一种可能性),但在“is-a”或“之前有一个额外的括号”连接”,我不确定我将如何处理。

为了至少看看我是否理解了基本概念,我决定直接跳到“is-a”部分。这基本上应该是创建对象。

    (defun is-a (name type)
(setf (get type 'name) name)
)

理想情况下这会起作用,但为了实际调用该函数,您需要将引号运算符放在参数前面,因为它们不是变量。所以调用看起来像:

    (is-a 'seat1 'seat)

如果没有这些引号,CLISP 会提示该变量没有值。那么,我将如何着手制作可以完全如上所示读取输入的内容,而无需引号?

最佳答案

您的属性列表不应该被评估。它们将被读取 并进行处理。然后,您的处理函数可以挑选出诸如 factis-aconnected 之类的符号并适本地处理它们。

但是,由于您不是在评估它们,因此您不应该为 factis-aconnected< 定义过程(或宏!)/.

关于lisp - 在没有引用运算符的 LISP 中输入参数(属性列表/语义网络/基本函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29201374/

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