에 인수 람다 전달 : 이것은 잘 작동다음과 같이 내가 람다을 받아 부울 제스 기능을 정의 제스
(bind ?condition1 (at-least 1 (lambda (?arg) (= ?arg 0)) ?a ?b ?c))
(bind ?condition2 (at-least 2 (lambda (?arg) (< ?arg 0)) ?a ?b ?c))
다음과 같이 내가 호출 할 수 있습니다
(deffunction at-least(?n ?lambda $?values)
(>= (length$ (filter ?lambda ?values)) ?n))
. 그러나 나는 많은 다른 장소에서 같은 람다를 사용, 그래서 나는 그들을 위해 일부 기능을 정의하여 코드가 좀 더 간결하고 싶습니다 :
(deffunction fn-zero()
(lambda (?arg) (= ?arg 0)))
을 그리고 다음과 같이 호출 :
(bind ?condition1 (at-least 1 (fn-zero) ?a ?b ?c))
이 또한 잘 작동합니다.
하지만 매개 변수를 추가하려면 오류 메시지가 나타납니다. 그것은 다음과 같은 예외가 발생
(deffunction fn-less-than(?x)
(lambda (?arg) (< ?arg ?x)))
(bind ?condition2 (at-least 1 (fn-less-than 0) ?a ?b ?c))
:
jess.JessException: No such variable x
내가 잘못 여기서 뭘하는지 알아낼 수 없습니다 나는이 코드를 가지고있다. 왜 이것은 매개 변수가없는 함수에서는 작동하지만 매개 변수가없는 함수에서는 작동하지 않습니까? 더 중요한 것은이 작업을 어떻게 할 수 있습니까?
감사합니다. 실제로 작동합니다. – jqno