這次我的問題主要是Racklog。我猜。這次也可以是Racket語法。如何在Racklog中的謂詞中使用「%bag-of」原語
這個想法很簡單。我有一個由地點和對象組成的邏輯基礎,我只是想嘗試使用%bag原語打印所有對象。
我的邏輯基礎是這樣的:
(define %contains
(%rel()
[('bridge 'phaser)]
[('engine_room 'toolkit)]
[('toolkit 'screwdriver)]
[('toolkit 'tricorder)]
[('inventory '(communicator, no_tea))]
)
)
現在我有我的謂語是以下一個。它應該簡單地通過查詢「(%which()(%list_objects'toolkit))」來調用,然後發佈工具箱中的所有項目。
(define %list_objects
(%rel (place)
[(place)
(%which (objects)
(%let (x)
(%bag-of x (%contains place x)
objects)))]
)
)
奇怪的是,當我剛剛thake部分從「%,其中(對象)......)」起,直接扔到監聽器,它完美的罰款。但是如果我使用它的謂詞中,它拋出此異常:
"application: not a procedure;
expected a procedure that can be applied to arguments
given: '((objects screwdriver tricorder))
arguments...: [none]"
我試圖重新排列碼好幾次,但現在我很爲難約我做錯了什麼。我會很感激一點暗示,我作爲Scheme和Racket的總Newbee錯過了這裏。我提前感謝!
你怎麼進入挑起這個錯誤嗎? – soegaard