Size: a a a

2020 February 25

a

akater in Lisp Forever
В точности описанный результат можно получить
(collect (mapping (((a b c) (chunk 3 1 (scan-range :from 1 :upto 6)))) (list a b c)))

Его должно было быть можно получить
(collect (mapping (((&rest ns) (chunk 3 1 (scan-range :from 1 :upto 6)))) ns))

но это не получится, потому что баг. Баг надо репортить на sourceforge. Ужасно.
источник

AE

Alexey Egorov in Lisp Forever
O
Как получить
((1 2 3)
(2 3 4)
(3 4 5)
(4 5 6))


Из

(1 2 3 4 5 6)
(defun pack (list len)
 (loop
   :until (null list)
   :collect (subseq list 0 len)
   :do (dotimes (i len list) (setf list (cdr list)))))
источник

AE

Alexey Egorov in Lisp Forever
Универсальное решение, но без проверок на ошибки.
источник

AE

Alexey Egorov in Lisp Forever
А если только по три надо, то проще всего так:
(let ((l (list 1 2 3 4 5 6 7 8 9)))
 (loop
   :for (a b c) :on l :by #'cdddr
   :collect (list a b c)))
источник

AE

Alexey Egorov in Lisp Forever
Хороший Лисичко
(defun t (a b c &rest r)
       `((,a ,b ,c) ,(if (nullp r) '() (apply t r))))
Фукнцию нельзя назвать t.
Apply ожидает функции как аргумента, так что должно быть 't как минимум, а лучше #'t.
Твой вариант вернёт из ифа уже вложенный список, так что вложенность будет повышаться.
Но в целом не бред, думаю можно эту штуку починить.
источник

AE

Alexey Egorov in Lisp Forever
Ага, вот так работает:
(defun pack-2 (a b c &rest r)
   `((,a ,b ,c) ,@(if (null r) nil (apply #'pack-2 r))))
источник

AE

Alexey Egorov in Lisp Forever
Найс.
CL-USER> (pack-2 1 2 3 4 5 6 7 8 9)
((1 2 3) (4 5 6) (7 8 9))
источник

ХЛ

Хороший Лисичко in Lisp Forever
Alexey Egorov
Ага, вот так работает:
(defun pack-2 (a b c &rest r)
   `((,a ,b ,c) ,@(if (null r) nil (apply #'pack-2 r))))
Еее
источник

ХЛ

Хороший Лисичко in Lisp Forever
Красота
источник

ХЛ

Хороший Лисичко in Lisp Forever
Alexey Egorov
Ага, вот так работает:
(defun pack-2 (a b c &rest r)
   `((,a ,b ,c) ,@(if (null r) nil (apply #'pack-2 r))))
#' ...
Никак не привыкну к этому. Это же Lisp-2 вынуждает к таким штукам? В Scheme как-то красивее
источник

AE

Alexey Egorov in Lisp Forever
Да.
источник

AE

Alexey Egorov in Lisp Forever
И да, Схемка действительно красивее.
источник

n

nconc in Lisp Forever
(defun pack (a b c &rest w)
 `((,a ,b ,c) ,@(when w (apply #'pack w))))

> (pack 1 2 3 4 5 6 7 8 9)
((1 2 3) (4 5 6) (7 8 9))
источник

AE

Alexey Egorov in Lisp Forever
Да, так ещё лучше.
источник

O

O in Lisp Forever
Alexey Egorov
(defun pack (list len)
 (loop
   :until (null list)
   :collect (subseq list 0 len)
   :do (dotimes (i len list) (setf list (cdr list)))))
Да класс, вчера ковырял Эйлера проект. Нашел для себя :on в `loop :for'
источник

ХЛ

Хороший Лисичко in Lisp Forever
Про Shen спросил, а Egison кто-то тыкал?
источник

AE

Alexey Egorov in Lisp Forever
Хороший Лисичко
Про Shen спросил, а Egison кто-то тыкал?
Я даже не слышал.
источник

AE

Alexey Egorov in Lisp Forever
https://www.egison.org/ вот этот?
источник

ХЛ

Хороший Лисичко in Lisp Forever
Оо
источник

ХЛ

Хороший Лисичко in Lisp Forever
Да
источник