LINUX.ORG.RU

Как работает Function: MAPPEND

 


0

2

Тут https://common-lisp.net/project/bdb/qbook/mycl-util/api/function_005FMYCL-UTI..., этот странный нерабочий код, или я ошибаюсь

(defun mappend (fn &rest lsts)
  "maps elements in list and finally appends all resulted lists."
  (apply #'append (apply #'mapcar fn lsts)))

(mapcar 'car '((3 4) (5 6))) ;; работает

append &rest sequences

(apply 'append (apply 'mapcar 'car '((3 4) (5 6)))) ;; это не работает, второго листа нет

(mappend 'car '((3 4) (5 6))) ;; не работает

(mappend '* '(((3 4)) ((5 6)))) и эта не работат



Последнее исправление: saufesma (всего исправлений: 1)

(mapcar ’car ’((3 4) (5 6))) ;; работает

И чё он возвращает? То с чем можно append вызывать?

ados ★★★★★
()

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

(mappend ’car ’(((3 4)) ((5 6)))) ;; так сработает

LeninGad
()

(mappend ’car ’((3 4) (5 6))) ;; не работает

Ты на чём программируешь? Оно тебе никаких ошибок не пишет? Backtrace не даёт?

ados ★★★★★
()
Ответ на: комментарий от LeninGad

(mappend ’car ’(((3 4)) ((5 6)))) ;; так сработает

это для append, такой лист ’(((3 4)) ((5 6))))?

saufesma
() автор топика
Ответ на: комментарий от Sectoid

не, эт я херню написал.

(mappend 'car '((3 4) (5 6))) ;; не работает

что ты ожидаешь от этого кода? как он должен работать по твоему мнению?

Sectoid ★★★★★
()
Ответ на: комментарий от ados

Ты на чём программируешь?

Emacs Lisp, Лисп код немного меняю.

Backtrace не даёт? Молчит сука.

saufesma
() автор топика
Ответ на: комментарий от saufesma

Разобраться как он работает. Больше ничего.

он не работает, тут ты верно подметил.

(mappend #'car '((3 4) (5 6))) == (append (car '(3 4)) (car '(5 6))) == (append 3 5), что является ошибкой типа, ибо ни 3, ни 5 не являются list, а значит к ним неприменима функция append

Sectoid ★★★★★
()
Ответ на: комментарий от Sectoid
(mappend 'car '(((3 4)) ((5 6))))
(mappend #'car '(((3 4)) ((5 6)))) == (append (car '((3 4))) (car '((5 6)))) == (append (3 4) (5 6)) == (3 4 5 6)

И ещё, не каждая функция пролезет

(mappend ’* ’(((3 4)) ((5 6)))) ;;не работает

saufesma
() автор топика
Последнее исправление: saufesma (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Чувак, elisp и cl это разные лиспы.

Я в курсе, но ведь портировать не запрещено.

saufesma
() автор топика
Ответ на: комментарий от saufesma

И ещё, не каждая функция пролезет

любая функция, которая возвращает список, пролезет. это естественно вытекает из того, что результаты этой функции передаются append’у как параметры, который, в свою очередь, ожидает списки.

Sectoid ★★★★★
()
Ответ на: комментарий от slovazap

программированием…

Ща модераторам настучу за оффтоп.

ados ★★★★★
()
Ответ на: комментарий от turtle_bazon

Задают вопрос по одной теме, ответ абсолютно о другом.

Да и фиг с ним, активный участник форума так сказать.

saufesma
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.