История изменений
Исправление saufesma, (текущая версия) :
Не могли бы вы подсказать как разложить код пошагово
(defun f-F-a (lst1 lst2)
(if (or (null lst1) (null lst2))
""
(let ((current (format "%s * %s" (car lst1) (car lst2)))
(rest (f-F-a (cdr lst1) (cdr lst2))))
(if (string-empty-p rest)
current
(format "%s %s" current rest)))))
(print (f-F-a '("- F1" "+ F2" "- F3") '("a1" "a2" "a3")))
первый шаг
current => (format "%s * %s" (car lst1) (car lst2)) => "- F1 * a1"
rest => (f-F-a (cdr lst1) (cdr lst2)) => '("+ F2" "- F3") '("a2" "a3")
(format "%s %s" current rest) => (format "%s %s" "- F1 * a1" '("+ F2" "- F3") '("a2" "a3")) => "- F1 * a1 (+ F2 - F3)"
второй шаг
(format "%s * %s" (car "- F1 * a1 (+ F2 - F3)") (car '("a2" "a3"))) => format: Wrong type argument: listp, "- F1 * a1 (+ F2 - F3)"
Исправление saufesma, :
Не могли бы вы подсказать как разложить код пошагово
(defun f-F-a (lst1 lst2)
(if (or (null lst1) (null lst2))
""
(let ((current (format "%s * %s" (car lst1) (car lst2)))
(rest (f-F-a (cdr lst1) (cdr lst2))))
(if (string-empty-p rest)
current
(format "%s %s" current rest)))))
(print (f-F-a '("- F1" "+ F2" "- F3") '("a1" "a2" "a3")))
первый шаг
current => (format "%s * %s" (car lst1) (car lst2)) => "- F1 * a1"
rest => (f-F-a (cdr lst1) (cdr lst2)) => '("+ F2" "- F3") '("a2" "a3")
(format "%s %s" current rest) => (format "%s %s" "- F1 * a1" '("+ F2" "- F3") '("a2" "a3")) => "- F1 * a1 (+ F2 - F3)"
второй шаг
(format "%s * %s" (car "- F1 * a1 (+ F2 - F3)") (car '("a2" "a3"))) => format: Wrong type argument: listp, "- F1 * a1 (+ F2 - F3)"
Исходная версия saufesma, :
(defun f-F-a (lst1 lst2)
(if (or (null lst1) (null lst2))
""
(let ((current (format "%s * %s" (car lst1) (car lst2)))
(rest (f-F-a (cdr lst1) (cdr lst2))))
(if (string-empty-p rest)
current
(format "%s %s" current rest)))))
(print (f-F-a '("- F1" "+ F2" "- F3") '("a1" "a2" "a3")))
попробовал разложить код пошагово
первый шаг
current => (format "%s * %s" (car lst1) (car lst2)) => "- F1 * a1"
rest => (f-F-a (cdr lst1) (cdr lst2)) => '("+ F2" "- F3") '("a2" "a3")
(format "%s %s" current rest) => (format "%s %s" "- F1 * a1" '("+ F2" "- F3") '("a2" "a3")) => "- F1 * a1 (+ F2 - F3)"
второй шаг
(format "%s * %s" (car "- F1 * a1 (+ F2 - F3)") (car '("a2" "a3")))