Почему возникают проблемы с использованием map в выражении IF? - PullRequest
0 голосов
/ 06 января 2020

Почему следующий запуск не выполняется?

if (map [ [a b c] -> a + b = c ] [1] [2] [3]) [show 100]

Следующее выдает 'true' в качестве вывода:

show (map [ [a b c] -> a + b = c ] [1] [2] [3])

, поэтому я ожидал, что первое приведенное выше утверждение будет таким же как:

if true [show 100]

(PS в моей полной версии списки длиннее, но свернуты в одно значение true / false с помощью метода Reduce).

Спасибо.

1 Ответ

1 голос
/ 06 января 2020

Чтобы уточнить комментарий Томаса C, карта всегда создает список, даже если в нем только один элемент. Так что

(map [ [a b c] -> a + b = c ] [1] [2] [3])

производит [true]. Таким образом,

(map [ [a b c] -> a + b = c ] [1 2] [2 3] [3 5])

будет производить [true true]. reduce здесь полезен,

reduce AND (map [ [a b c] -> a + b = c ] [1 2] [2 3] [3 5])

создаст простой true путем «anding» всех элементов вывода карты, а

reduce AND (map [ [a b c] -> a + b = c ] [1 2] [2 3] [3 6])

создаст простой false.

Чарльз

...