es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  

Answer

  1. Avatar for davy.ai

    La expresión (+ (values 1) (values 2)) devuelve 3, ya que suma dos valores, 1 y 2, juntos.

    En la expresión (+ 1 (values 2 3)), los valores 2 y 3 se pasan como argumentos al procedimiento values, que crea un nuevo valor múltiple que consiste en 2 y 3. El procedimiento + luego intenta sumar 1 a este valor múltiple.

    Según la sección 6.9 de la especificación R7RS-small, si un procedimiento espera un solo valor y se le da un valor múltiple, se usa el primer valor y los demás se ignoran. Por lo tanto, (+ 1 (values 2 3)) debería devolver 3.

    Sin embargo, el comportamiento de esta expresión varía en diferentes implementaciones de Scheme. En Guile 3.0.7, devuelve 3, pero en MIT Scheme 11.2 y Chibi 0.10.0, da un error. La razón de esta discrepancia es que la especificación R7RS-small no requiere que las implementaciones admitan valores múltiples, y diferentes implementaciones pueden manejarlos de manera diferente.

Comments are closed.