Схема соответствия элементов - PullRequest
1 голос
/ 04 мая 2011

В настоящее время я немного разбираюсь со схемой, и я довольно долго застрял, пытаясь выяснить, как реализовать тест, который проверяет, хранится ли какой-либо элемент в 'xs' также в 'l' .

Это математическая функция '\ in', просто для каждого элемента в списке xs.

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Вы хотите написать это сами для практики или вам просто нужна функциональность?

Если вам нужна функциональность, используйте ответ larsmans (я никогда не использовал его, но он выглядит хорошомне).

Для реализации попробуйте следующее (отказ от ответственности: я не проверял это)


(define has-intersect?
      (lambda (xs l)
           (cond
             [(null? xs) #f]
             [(member? (car xs) l) #t]
             [else (has-intersect? (cdr xs) l)])))
1 голос
/ 04 мая 2011

В математических терминах вы проверяете, является ли пересечение двух списков / наборов непустым.Если у вас есть библиотека SRFI-1 , это тривиально:

(not (null? (lset-intersection l xs)))

Реализацию SRFI-1 можно найти в SLIB .

(Отказ от ответственности: я бывший участник SLIB.)

...