Size: a a a

2021 March 27

DP

Dmitry Plesovskykh in Lisp Forever
> style-warning

на счет стайл варнинга, кстати. это ж варнинг именно про стиль.
источник

DP

Dmitry Plesovskykh in Lisp Forever
из cltl:
источник

DP

Dmitry Plesovskykh in Lisp Forever
(defun (setf cadr) ...)
to define a setf expansion function for cadr (although it may be much
more convenient to use defsetf or define-modify-macro).
If the optional documentation string doc-string is present, then it is attached to the name as a documentation string of type function; see documentation. If doc-string is not followed by a declaration, it may be present
only if at least one form is also specified, as it is otherwise taken to be a
form. It is an error if more than one doc-string is present.
The forms constitute the body of the defined function; they are executed
as an implicit progn.
The body of the defined function is implicitly enclosed in a block construct whose name is the same as the name of the function. Therefore
return-from may be used to exit from the function.
Other implementation-dependent bookkeeping actions may be taken as
well by defun. The name is returned as the value of the defun form. For
example: ...
источник

DP

Dmitry Plesovskykh in Lisp Forever
даже вот X3J13 voted in March 1989 to introduce the concept of a function-name,
which may be either a symbol or a two-element list whose first element is the
symbol setf and whose second element is a symbol. The primary purpose of
this is to allow setf expander functions to be CLOS generic functions with
user-defined methods.
источник

a

akater in Lisp Forever
Спасибо, так яснее.  Ну в общем, видимо, я что-то не дописал, но не понимаю, что, т.к. редко общаюсь с fdefinition, и я думал, с ним не будет жаловаться.
источник

DP

Dmitry Plesovskykh in Lisp Forever
последнее предложение ключевое
источник

DP

Dmitry Plesovskykh in Lisp Forever
Many places in Common Lisp that used to require a
symbol for a function name are changed to allow 2-lists as well; for example,
defun is changed so that one may write (defun (setf foo) ...), and the
function special operator is changed to accept any function-name. See also
fdefinition
источник

DP

Dmitry Plesovskykh in Lisp Forever
а такой вопрос - у нас в CL есть какой-то канонический стандарт, который платный и рассылается в печатной версии. именно он считается эталоном, а не cltl2 или гиперспек?
источник

a

akater in Lisp Forever
Dmitry Plesovskykh
последнее предложение ключевое
По-моему оно вообще ничего не добавляет, но ладно.

Вопрос мой можно было бы переформулировать по-простому: допустимо ли раскрыть defun setf в defsetf.
источник

DP

Dmitry Plesovskykh in Lisp Forever
By convention, any function named (setf f ) should return its first argument as its only value, in order to preserve the specification that setf returns
its newvalue. See setf.
источник

DP

Dmitry Plesovskykh in Lisp Forever
Implementations are free to extend the syntax of function-names to include lists beginning with additional symbols other than setf or lambda.
источник

DP

Dmitry Plesovskykh in Lisp Forever
— вся инфа из cltl2
источник

DP

Dmitry Plesovskykh in Lisp Forever
> По-моему оно вообще ничего не добавляет, но ладно.

The primary purpose of
this is to allow setf expander functions to be CLOS generic functions with
user-defined methods. — вот это предложение имел ввиду, а дальше просто cltl доцитировал
источник

a

akater in Lisp Forever
Dmitry Plesovskykh
> По-моему оно вообще ничего не добавляет, но ладно.

The primary purpose of
this is to allow setf expander functions to be CLOS generic functions with
user-defined methods. — вот это предложение имел ввиду, а дальше просто cltl доцитировал
Ну очевидно, что тут вся проблема в том, что это defun, а не clos-овский метод.
источник

DP

Dmitry Plesovskykh in Lisp Forever
ну похоже да, на костыль )
источник

DP

Dmitry Plesovskykh in Lisp Forever
ну и (как я могу предположить, но это только мое предположение) - костыль можно раз он стандарт, и нельзя свой, потому что все еще костыль
источник

DP

Dmitry Plesovskykh in Lisp Forever
но возможно причины где-то глубже (но это не точно)
источник

a

akater in Lisp Forever
Dmitry Plesovskykh
ну и (как я могу предположить, но это только мое предположение) - костыль можно раз он стандарт, и нельзя свой, потому что все еще костыль
> нельзя свой

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

DP

Dmitry Plesovskykh in Lisp Forever
так вот я и вопрос задал - у нас что в CL считается тру-спекой?
источник

DP

Dmitry Plesovskykh in Lisp Forever
какой-нибудь бумажный платный толмуд?
источник