Как поместить отрицательное число в список

Как присвоить отрицательное число списку чисел?

Я читал в другом месте, что вы можете использовать (- number) для отрицания числа , но по какой-то причине это не работает должным образом в списке: '((- 1) 2 3)).


person joe_04_04    schedule 25.01.2018    source источник
comment
Этот вопрос странный, как указано (т.е. с числовыми литералами), потому что '(-1 2 3) абсолютно нормально.   -  person phils    schedule 25.01.2018
comment
Почему вы имеете в виду присвоить номер списку? Кроме того, добавление минуса для меня не имеет большого значения. Не могли бы вы уточнить?   -  person Stefan    schedule 25.01.2018


Ответы (1)


(- 1) – это выражение, которое оценивает значение -1. Заключение в кавычки (' перед вашим кодом) предотвращает вычисление выражения. Следовательно:

> '((- 1) 2 3)
'((- 1) 2 3)

но

> (list (- 1) 2 3)
'(-1 2 3)

или, если вы читали о квазицитировании и хотите похвастаться

> `(,(- 1) 2 3)
'(-1 2 3) 
person uselpa    schedule 25.01.2018
comment
Спасибо. Мне нужно более внимательно изучить ', так как это меня действительно сбивает с толку. Мне пришлось написать несколько функций, каждая из которых принимала список, и я передал списки как (function-name '(1 2 3 4)), и это сработало, поэтому я предположил, что создаю списки правильно, однако это не сработало в случае отрицательного значения, поэтому теперь я должен использовать (function-name (list (- 1) 2 3 4)) только в случае отрицательного списка. Это немного сбивает с толку. В любом случае, спасибо за быстрый ответ! - person joe_04_04; 25.01.2018
comment
Если это все, что нужно сделать, то, как говорит @phils, просто используйте '(-1 2 3 4). - person uselpa; 25.01.2018
comment
@ joe_04_04: Я рекомендую вам обновить свой вопрос с помощью примера функции, демонстрирующей проблему. - person phils; 26.01.2018