LINUX.ORG.RU

История изменений

Исправление ados, (текущая версия) :

(aif (get-data) (fwrite t it)) напечатает t, а не ожидаемый результат (get-data).

Опять почему неожидаемый? Вот смысл макроса aif понятен - он загрязняет формы понятием it. Сделано это ради удобства. А вот какой смысл макроса fwrite?

(defmacro fwrite (stream x)
  `(aif ,stream (format it "~a" ,x) nil))

Этим кодом ты говоришь лиспу: понимай в коде fwrite понятие it подобно aif. Это тоже сделано ради удобства? Тогда почему результат (aif (get-data) (fwrite t it)) для тебя неожидаем?

Если мы ожидаем в результате напечатать именно (get-data), значит у макроса совсем другой смысл и он не должен на свой код распространять понятие it, раскрывая из себя aif.

(defmacro fwrite (stream x)
  (alexandria:once-only (x)
    `(aif ,stream (format it "~a" ,x) nil)))

Я конечно согласен в том что CL заслуживает некоторой критики за свои несовершенства, но в данном случае я на стороне CL.

Исправление ados, :

(aif (get-data) (fwrite t it)) напечатает t, а не ожидаемый результат (get-data).

Опять почему неожидаемый? Вот смысл макроса aif понятен - он загрязняет формы понятием it. Сделано это ради удобства. А вот какой смысл макроса fwrite?

(defmacro fwrite (stream x)
  `(aif ,stream (format it "~a" ,x) nil))

Этим кодом ты говоришь лиспу: понимай в коде fwrite понятие it подобно aif. Это тоже сделано ради удобства? Тогда почему код (aif (get-data) (fwrite t it)) для тебя неожидаем?

Если мы ожидаем в результате напечатать именно (get-data), значит у макроса совсем другой смысл и он не должен на свой код распространять понятие it, раскрывая из себя aif.

(defmacro fwrite (stream x)
  (alexandria:once-only (x)
    `(aif ,stream (format it "~a" ,x) nil)))

Я конечно согласен в том что CL заслуживает некоторой критики за свои несовершенства, но в данном случае я на стороне CL.

Исправление ados, :

(aif (get-data) (fwrite t it)) напечатает t, а не ожидаемый результат (get-data).

Опять почему ожидаемый? Вот смысл макроса aif понятен - он загрязняет формы понятием it. Сделано это ради удобства. А вот какой смысл макроса fwrite?

(defmacro fwrite (stream x)
  `(aif ,stream (format it "~a" ,x) nil))

Этим кодом ты говоришь лиспу: понимай в коде fwrite понятие it подобно aif. Это тоже сделано ради удобства? Тогда почему код (aif (get-data) (fwrite t it)) для тебя неожидаем?

Если мы ожидаем в результате напечатать именно (get-data), значит у макроса совсем другой смысл и он не должен на свой код распространять понятие it, раскрывая из себя aif.

(defmacro fwrite (stream x)
  (alexandria:once-only (x)
    `(aif ,stream (format it "~a" ,x) nil)))

Я конечно согласен в том что CL заслуживает некоторой критики за свои несовершенства, но в данном случае я на стороне CL.

Исходная версия ados, :

(aif (get-data) (fwrite t it)) напечатает t, а не ожидаемый результат (get-data).

Опять почему ожидаемый? Вот смысл макроса aif понятен - он загрязняет формы понятием it. Сделано это ради удобства. А вот какой смысл макроса fwrite?

(defmacro fwrite (stream x)
  `(aif ,stream (format it "~a" ,x) nil))

Этим кодом ты говоришь лиспу: понимай в коде fwrite понятие it подобно aif. Это тоже сделано ради удобства? Тогда почему код (aif (get-data) (fwrite t it)) для тебя неожидаем?

Если мы ожидаем в результате напечатать именно (get-data), значит у макроса совсем другой смысл и он не должен на свой код распространять понятие it, раскрывая из себя aif.

(defmacro fwrite (stream x)
  (alexandria:once-only (x)
    `(aif ,stream (format it "~a" ,x) nil)))

Я конечно согласен в том что CL заслуживает некоторой критики за свои несовершенства, но в данном случае я на строне CL.