inc и dec

Sergey ShishkinSergey Shishkin
2 min read

После необходимой и скучной отладки, второй неинтересный аспект - арифметика. Да, конечно, это базис, без которого невозможно представить себе вычисления, но поэтому и тривиально. Особенно раздражает, когда авторы, описывающие свою систему, начинают рассказывать как их система складывает числа, при этом, как будто, это делает не процессор, в определенные регистры которого мы эти числа посылаем, а потом в предписанном регистре забираем ответ. Но вместо того, чтобы привести список всех арифметических операций системы, парочка лексических акцентов - инкремент (увеличение) и дескремент (уменьшение).

inc - первая форма возвращает значение num, увеличенное на 1. Вторая форма увеличивает VAL var на 1 или на num. Если первый аргумент равен NIL, он возвращается немедленно. (inc Num) эквивалентно (+ Num 1), а (inc 'Var) эквивалентно (set 'Var (+ Var 1)).

(inc 'num) -> num

(inc 'var ['num]) -> num

: (inc 7)
-> 8
: (inc -1)
-> 0
: (zero N)
-> 0
: (inc 'N)
-> 1
: (inc 'N 7)
-> 8
: N
-> 8

: (setq L (1 2 3 4))
-> (1 2 3 4)
: (inc (cdr L))
-> 3
: L
-> (1 3 3 4)

inc! - функция-обертка транзакции для inc. num по умолчанию равна 1. Обратите внимание, что для увеличения значения свойства сущности обычно используется сообщение inc!>.

(inc! 'obj 'sym ['num]) -> num

(inc! Obj 'cnt 0)  # Incrementing a property of a non-entity object

https://picolisp.tiddlyhost.com/#inc

dec - первая форма возвращает значение num, уменьшенное на 1. Вторая форма уменьшает VAL var на 1 или на num. Если первый аргумент равен NIL, он возвращается немедленно. (dec Num) эквивалентно (- Num 1), а (dec 'Var) эквивалентно (set 'Var (- Var 1)).

(dec 'num) -> num

(dec 'var ['num]) -> num

: (dec -1)
-> -2
: (dec 7)
-> 6
: (setq N 7)
-> 7
: (dec 'N)
-> 6
: (dec 'N 3)
-> 3

https://picolisp.tiddlyhost.com/#dec

0
Subscribe to my newsletter

Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Sergey Shishkin
Sergey Shishkin

Всегда чему-то учусь!