В Clojure, Можете ли вы добавить элемент от второго до последнего списка? - PullRequest
0 голосов
/ 11 марта 2020
 (defn my-function
   [all]                   ; Assume all = '((I am) (A Fan) (Of) Yours)
 )

Есть ли способ взять последний элемент из всех (который является вашим ) и сохранить его во второй до последней коллекции, чтобы:

 user->          (my-function '((I am) (A Fan) (of) Yours)  )
 Output ->       ((I am) (A Fan) (Of Yours)

I Я не уверен, если есть какая-либо конкретная c встроенная функция. Вот некоторый псевдокод к тому, что я думаю:

 (defn my-function
   [all]                   

  (cons (last input) (second to last input)

 )

Предположим, что input all может иметь любую длину с любыми переменными.

1 Ответ

1 голос
/ 11 марта 2020

Используя комбинацию drop-last take-last и concat, вы можете реализовать my-функцию следующим образом:

(defn my-function [all]
  (let [start (drop-last 2 all)      ; start=(I am) (A Fan)
        [a b] (take-last 2 all)      ; a=(of) b=Yours
        new-end (concat a (list b))] ; new-end=(of Yours)
    (concat start (list new-end))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...