【问题标题】:Replace-member is not functioning and simply says that defrule syntax is invalidReplace-member 不起作用,只是说 defrule 语法无效
【发布时间】:2019-04-16 22:25:36
【问题描述】:

您好,我已经编写了一个显示方法来显示一些事实,但我希望将所有“}”替换为“)”。但是我的程序不会接受 replace-member 方法

我之前在我的代码中使用了他的替换成员,但在这种情况下它似乎不起作用。我试过用 $?和 ?没有区别

(deftemplate sentence (multislot sent) (slot or-to-implies-done) (slot implies-to-or-done) (slot comm-or) )

 some more code that creates the sentence 

(Actual method that isn't working)
(defrule display 
(sentence (sent $?check) (or-to-implies-done ~true) (implies-to-or-done ~true) (comm-or ~true))
(bind $?check (replace-member$ $?check "}" (sym-cat ")")))
 => 
(printout t (implode$ (apply sym-cat $?check)) crlf))

我只是希望通过使用 replace-member 方法将所有“}”替换为“(”。任何建议都非常感谢错误只是说 defrule 中的语法错误,没有给出进一步的信息。

【问题讨论】:

    标签: rules clips


    【解决方案1】:

    bind 函数调用移动到规则的操作中:

    (defrule display 
       (sentence (sent $?check) 
                 (or-to-implies-done ~true) 
                 (implies-to-or-done ~true) (comm-or ~true))
       => 
       (bind $?check (replace-member$ $?check "}" (sym-cat ")")))
       (printout t (implode$ (apply sym-cat $?check)) crlf))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2013-11-03
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      相关资源
      最近更新 更多