Clojure: Как использовать сопоставление с анонимной функцией? - PullRequest
0 голосов
/ 08 марта 2020
 (defn recurse

   [temp total]                    ;total is: (and true true(and false))

  (map (fn [i]
     (cond
      (seq? i) (println "");If total is not a single parenthesis (single sequence), recur until it is

      (= i 'and)  (System/exit 0)  ;I want this to be called only when the **second** "and" is called

      :else (println "This should never print I think")
       ))
   idealreturn)
)

Я хочу, чтобы (система / выход 0) вызывался только , когда обнаруживается второе "и" в всего , а не раньше. Как бы я go об этом?

1 Ответ

0 голосов
/ 08 марта 2020

Вы на правильном пути с отображением функции на данные для ее преобразования. Есть несколько способов получить то, что вы ищете:

  1. Не используйте карту, а используйте вместо нее уменьшение. Сокращение предназначено для создания состояния с течением времени. Таким образом, вы можете сократить его до выражения, и каждый раз, когда вы сталкиваетесь с and, вы смотрите, есть ли уже and в результате, который вы накапливаете, и если это and уже существует, вызывайте выход.
  2. Пусть функция, которую вы отображаете на входе, выполняет только одну функцию, превращая отдельные элементы в более значимые. Затем, как только это будет сделано, передайте этот результат второй функции, которая проверяет, пора ли выйти.

Если взять на себя одну вещь, это делает код намного проще для написания, а составление их после слов является эффективным и легким. Позже вам будет намного легче, когда вы вернетесь к работе над кодом позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...