2010-12-03 16 views
5

Je souhaite conserver une citation en tant que membre d'un tuple dans Factor. Mais quand j'essaie d'exécuter 'call', j'obtiens l'erreur 'impossible d'appliquer un appel à une valeur calculée au moment de l'exécution'. Notez que marquer les fonctions comme 'inline' ne fait rien.Conserver les citations en tant que membres de tuple dans le facteur

Exemple de code:

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 
+0

Pourriez-vous montrer un code de la façon dont vous essayez d'exécuter la citation? – stonemetal

Répondre

5

La réponse est le « appel (» mot Ce mot vous oblige à préciser l'effet de la pile de la citation, mais en raison de la citation n'a pas besoin d'être connu. au moment de la compilation.

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 
+0

vous pouvez utiliser 'infer' pour obtenir l'effet de la pile d'une citation dont l'effet pile ne peut pas être connu au moment de la compilation . – cat