Size: a a a

2020 October 25

SA

Sokolov Andrew in Lisp Forever
Хм судя по тому что я вижу
источник

SA

Sokolov Andrew in Lisp Forever
Мб не лично я прям ща но умный человек мог бы это написать
источник

SA

Sokolov Andrew in Lisp Forever
источник

VL

Valeriy L in Lisp Forever
В liballegro такие функции юзают готовые таблицы. Оно конечно не шибко точно, но быстро
источник

SA

Sokolov Andrew in Lisp Forever
Ну нет
источник

VL

Valeriy L in Lisp Forever
но вообще да, обычно через полиномы оптимизируют
источник

VL

Valeriy L in Lisp Forever
так погодь, а если я юзаю даблы по изначально? не будет же проблем вроде
источник

SA

Sokolov Andrew in Lisp Forever
Ну из его поста не следует это
источник

SA

Sokolov Andrew in Lisp Forever
По крайней мере
источник

VL

Valeriy L in Lisp Forever
и то верно
источник

SA

Sokolov Andrew in Lisp Forever
источник

SA

Sokolov Andrew in Lisp Forever
здрасьте
источник
2020 October 26

BB

Bird Bird in Lisp Forever
Тук-тук.
источник

SA

Sokolov Andrew in Lisp Forever
ась
источник

BB

Bird Bird in Lisp Forever
Чи доброго дня.
источник

SA

Sokolov Andrew in Lisp Forever
ну дык
источник

SA

Sokolov Andrew in Lisp Forever
чего сказать то хошь
источник

BB

Bird Bird in Lisp Forever
Спросить про функцию.
источник

SA

Sokolov Andrew in Lisp Forever
давай
источник

BB

Bird Bird in Lisp Forever
Добрый день.
А как написать функцию которая возвращает введенный аргумент-символ без изменений?
Так:
?> (НАЗВАНИЕ-АРГУМЕНТА что-то) ; без кавычки перед "что-то"
> что-то

Или с car:
?> (НАЗВАНИЕ-АРГУМЕНТА что-то)
> (что-то)
?> (car (НАЗВАНИЕ-АРГУМЕНТА что-то))
> что-то

Я не разбираюсь в макросах, но я когда-то уже написал такую функцию (не помню был ли это defmacro, а не defun, но я мог для эксперимента defmacro подставить, чтобы заработало). В определении функции я написал какое-то количество backquote и наверное запятых тоже. Было что-то очень простое, в одну строку. И функция работала. Это была смесь из list, eval и одинарных кавычек (кажется разных, то есть встерчались и backquote и просто quote), и оно как-то "заморозило" вычисление, вернуло то что надо. Символа @ кажется не было.

Нужно это для того чтобы setf работал не просто так:
?> (setf список значение) ; ищет глобальную "список"

А так, чтобы setf будучи внутри определения функции ссылался на локальный параметр этой функции "список", которую вводит пользователь но понимает его как-будто это речь об глобальной переменной:

?> (defun удалить-в-списке (список место-удаления)
(setf (НАЗВАНИЕ-АРГУМЕНТА список) (remove-nth место-удаления список)))

?> (setq тест '(1 2 3))

Счёт удаляемого начинается не с нуля, а единицы.
Должно работать так:

>? (удалить-в-списке тест 2)
> (1 3)
>? (удалить-в-списке тест 3)
> (1)
>? (удалить-в-списке тест 1)
> ()
>? тест
> ()

В результате остался пустой список.

То есть нужно чтобы setf брал именно введенный параметр/аргумент от пользователя (он может иметь любое название, без двойных кавычек, а просто атом), а не искал уже отпределённую переменную.

Если бы опеределялось без "НАЗВАНИЕ-АРГУМЕНТА":

?> (defun удалить-в-списке (список место-удаления)
(setf список (remove-nth место-удаления список)))

то оно просто возвращает временно изменённый список и присвоение через setf "не работает":

>? удалить-в-списке тест 2)
> (1 3)
>? удалить-в-списке тест 3)
> (1 2)
>? (удалить-в-списке тест 1)
> (2 3)
> тест
(1 2 3)

Нужно под clisp.
источник