8

我有一个词构成了我想要被调用的引用。但是,当我加载代码时,我得到Cannot apply “call” to a run-time computed value。如果我使用 walker 并逐步执行它按预期执行的代码。你应该如何调用构造的报价?

: ba>struct ( array class -- struct array )
[ <struct> swap ] keep struct-slots
[
    [ type>> to-type ] keep  
    name>> setter-word 1quotation curry
    [ over ] dip  curry  call drop
] each
; 

编辑:这确实有效

: ba>struct ( array class -- struct array )
    [ <struct> swap ] keep struct-slots
    [
        [ type>> to-type ] keep  
        name>> setter-word 1quotation curry
        [ over ] dip  curry  call( -- x ) drop
    ] each
    ; 

问题源于运行时不知道构造引用的堆栈效应是什么。在这些情况下,您必须在调用的引用中声明堆栈的样子。

4

0 回答 0