Zauważam, że prawie wszystkie funkcje schematu mogą zwracać tylko jedną listę jako wynik.Schemat Jak zwrócić wiele wartości?
Poniżej chciałbym zwrócić wiele wartości wszystkich sąsiednich węzłów sąsiadów.
(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?
W tym wypadku mówić pierwszy badania, jeśli węzeł w narożniku, a jeśli tak, powrót 2 wartości współrzędnych, w którym (L i W + 1), (L + 1 i W), w zasadzie, jeśli I 'm at (1,1) zwraca mi (1,2) i (2,1)
To samo dotyczy sytuacji, gdy węzeł ma tylko 1 sąsiada blisko krawędzi, w tym przypadku będę miał 3 wartości.
Gdy w pobliżu nie ma krawędzi, będę mieć 4 wartości zwracane.
Próbowałem użyć cons, append, list, display, write
żaden z nich nie działa z dodatkowymi wartościami. Potrzebuję tego jako podfunkcji this question. Jak powinienem go zaimplementować, abym mógł przekazać wartość zwracaną i użyć jej rekursywnie do zwrócenia mi wszystkich sąsiednich węzłów?
Edytuj: Znalazłem odpowiedź: użyj słowa kluczowego "values
", aby zwrócić wiele wartości. Przykład:
(define (store l w)
(values (write l)
(write w)
(newline)
(list (+ 1 w) l)
(list w (+ 1 l))))
Czy wiesz, że możesz pisać odpowiedzi na swoje pytanie? (Jeśli lubisz dostawać punkty na Stack Overflow. :) –
dziękuję za wskazanie tego, nie zdawałem sobie sprawy, że mogę to zrobić – Jonathan