Size: a a a

2020 July 17

SA

Sokolov Andrew in Lisp Forever
не собирается прямо??
источник

SA

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

SA

Sokolov Andrew in Lisp Forever
так не могет быть лул
источник

SA

Sokolov Andrew in Lisp Forever
он ворнинги обычно показывает
источник

H

Hirrolot in Lisp Forever
Читаю Practical Common Lisp и не могу понять один момент. Говорят, что аргументы в функцию передаются по значению (но ссылки - тоже значения), тогда почему если я в функции setf сделаю, то эффект не распространится на вызывающий код?
источник

A

Aragaer in Lisp Forever
потому что по значению
источник

H

Hirrolot in Lisp Forever
Это логично, но почему они тогда говорят, что по ссылке?
источник

A

Aragaer in Lisp Forever
ты же сам написал, что по значению
источник

H

Hirrolot in Lisp Forever
> In compiler-writer terms Common Lisp functions are "pass-by-value." However, the values that are passed are references to objects. This is similar to how Java and Python work.
источник

H

Hirrolot in Lisp Forever
источник

H

Hirrolot in Lisp Forever
То есть ссылка передаётся, да?
источник

H

Hirrolot in Lisp Forever
Потому что However, the values that are passed are references to objects.
источник

A

Aragaer in Lisp Forever
а. Ну короче вот смотри на примере си
источник

A

Aragaer in Lisp Forever
you can assign a new value to a function parameter within the body of the function, and it will not affect the bindings created for another call to the same function.
источник

A

Aragaer in Lisp Forever
то есть как будто тот же референс просто перенаправляешь на другой объект
источник

H

Hirrolot in Lisp Forever
То есть когда я передаю аргументы в функцию, они копируются?
источник

A

Aragaer in Lisp Forever
void func(my_struct *ptr) {
 ptr = new_obj;
}
источник

A

Aragaer in Lisp Forever
нет, не копируются
источник

A

Aragaer in Lisp Forever
But if the object passed to a function is mutable and you change it in the function, the changes will be visible to the caller since both the caller and the callee will be referencing the same object.
источник

A

Aragaer in Lisp Forever
void func(my_struct *ptr) {
 ptr->x = 42;
}
источник