Observé que casi todas las funciones de esquema solo pueden devolver una lista como salida.Esquema ¿Cómo devolver valores múltiples?
A continuación, me gustaría devolver varios valores de todos los nodos adyacentes de los vecinos.
(define (neighbors l w)
(if (and (= 1 l) (= 1 w))
(list (and (l (+ 1 w))) (and (+ 1 l) w)))) ; how to output 2 or more values?
En este caso estoy primera prueba si el nodo está en la esquina, si es así, volver 2 valores de las coordenadas donde (l y w + 1), (l + 1 y w), básicamente, si estoy en (1,1) return me (1,2) y (2,1)
Lo mismo se aplica cuando el nodo tiene solo 1 vecino cerca del borde, en este caso tendré 3 valores.
Cuando no haya bordes cerca tendré 4 valores de retorno.
Intenté usar cons, append, list, display, write
ninguno de ellos parece funcionar con valores adicionales. Necesito esto como una función secundaria de this question. ¿Cómo debo implementarlo para poder pasar el valor de retorno y usarlo recursivamente para devolverme todos los nodos adyacentes?
Editar: He encontrado la respuesta: utilice la palabra clave "values
" para devolver valores múltiples. Ejemplo:
(define (store l w)
(values (write l)
(write w)
(newline)
(list (+ 1 w) l)
(list w (+ 1 l))))
¿Sabías de enviar una respuesta a su propia pregunta? (Si te gusta obtener puntos en Stack Overflow. :) –
gracias por señalarlo, no me di cuenta que puedo hacerlo – Jonathan