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.

¿Cómo debo asignar la entrada del usuario de una lectura a la memoria usando Scheme?

Aquí estamos creando un tipo de dato de memoria que es una lista. Para asignar variables a ubicaciones de memoria, estamos usando mem-put. En exec-stmt, si hay una entrada en una instrucción, llamamos a exec-input y permitimos la entrada del usuario. En exec-input, cuando se pasa la entrada del usuario, no devuelve una lista, por lo que no se puede llamar a length en ella. Estamos utilizando la condición base length = 1 ya que car y cdr no se pueden llamar en una lista de uno. ¿Alguien ve qué estoy haciendo mal?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, puedo observar que hay un problema con la implementación de exec-input. Si la lista de inputs tiene solo un elemento, la implementación actual intenta llamar a mem-put con un valor único en lugar de una lista de valores. En su lugar, debería construir una lista con el id y el valor de entrada, y llamar a mem-put en esta lista. Aquí hay una versión modificada de exec-input que debería funcionar tanto para entradas únicas como múltiples:

    (define (exec-input stmt inputs mem)
      (if (null? stmt)
          mem
          (if (null? inputs)
              (error "No hay suficientes entradas")
              (let ((mem' (mem-put mem (car stmt) (car inputs))))
                (exec-input (cdr stmt) (cdr inputs) mem')))))
    

    Esta versión procesa recursivamente cada id en stmt hasta que se consumen todos los inputs, y devuelve la memoria actualizada después de que se hayan realizado todas las asignaciones.

Comments are closed.