2010-12-03 5 views
5

Deseo mantener una cotización como miembro de una tupla en Factor. Pero cuando intento ejecutar 'call' en él obtengo el error 'no puedo aplicar la llamada a un valor calculado en tiempo de ejecución'. Tenga en cuenta que marcar las funciones como 'en línea' no hace nada.Mantener citas como miembros de la tupla en Factor

Código de ejemplo:

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

podría mostrar un código de cómo se está tratando de ejecutar el presupuesto? – stonemetal

Respuesta

5

La respuesta es la 'llamada (' palabra Esa palabra requiere que se especifique el efecto de chimenea de la cita, pero como resultado no tiene por qué ser conocida la cita. en tiempo de compilación.

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

puede usar 'infer' para conseguir el efecto de chimenea de una cita cuyo efecto chimenea no puede ser conocido en tiempo de compilación . – cat