Сохранение цитат как членов кортежа в Факторе - PullRequest
5 голосов
/ 03 декабря 2010

Я хочу сохранить цитату как член кортежа в Факторе.Но когда я пытаюсь выполнить 'call' на нем, я получаю сообщение об ошибке 'не может применить вызов к вычисляемому значению во время выполнения'.Обратите внимание, что пометка функций как «встроенных» ничего не делает.

Пример кода:

USING: accessors kernel ;
IN: stackoverflow

TUPLE: quottuple quot ;
C: <quottuple> quottuple

: call-quot ( quottuple -- result )
    quot>> call ; inline

: main ( -- )
    [ 1 ] <quottuple>
    call-quot drop ;

MAIN: main

1 Ответ

5 голосов
/ 15 декабря 2010

Ответом является слово 'call ('). Это слово требует, чтобы вы указали эффект цитаты в стеке, но в результате цитату не нужно знать во время компиляции.

USING: accessors kernel ;
IN: stackoverflow

TUPLE: quottuple quot ;
C: <quottuple> quottuple

: call-quot ( quottuple -- result )
    quot>> call( -- result ) ;

: main ( -- )
    [ 1 ] <quottuple>
    call-quot drop ;

MAIN: main
...