or ... and

Sergey ShishkinSergey Shishkin
2 min read

В отличие от арифметических операций (или операторов?), логические операторы (или операции?) отдельно не классифицируются и, как правило, автором описываюся в категории функций контроля потоком. Термин “поток” он употребляет, хотя в контексте описания процессов, в документации замечает, что потоки, в принципе, не нужны и процессов с “корутинами“ достаточно. Однако тема … но здесь пока о логических операцих … без отрицания (операции негации, инверсии) … вообще, к “алгебре логики“ стоит позже вернуться как самостоятельной концепции. Все-таки, это база, на которой строятся все другие вычислителные процессы, вплоть до хранения, а не только “примитивные” арифметические операции, функции и процедуры. Кстати … и об этом тоже потом.

or - логическое “или”. Выражения any оцениваются слева направо. Если встречается не-NIL, оно немедленно возвращается. Иначе возвращается результат последнего выражения.

(or 'any ..) -> any

or/2 - предикат Pilog, который принимает произвольное количество предложений, и добивается успеха, если один из них может быть доказан (вычислен).

: (?
   (or
      ((equal 3 @X) (equal @X 4))
      ((equal 7 @X) (equal @X 7)) ) )
 @X=7
-> NIL

nor - логическое NOR. Выражения any оцениваются слева направо. Если встречается не-NIL, возвращается немедленно NIL. Иначе возвращается T. (nor ..) эквивалентен (not (or ..)).

(nor 'any ..) -> flg

x| - возвращает битовое XOR всех num аргументов. Когда один из аргументов оценивается в NIL, он немедленно возвращается.

(x| 'num ..) -> num

xor - возвращает T, если один из аргументов оценивается в не-NIL.

(xor 'any 'any) -> flg

and - логическое “и”. Выражения any оцениваются слева направо. Если встречается NIL, NIL немедленно возвращается. Иначе возвращается результат последнего выражения.

(and 'any ..) -> any

nand - логическое NAND. Выражения any оцениваются слева направо. Если NIL встречается, T возвращается немедленно. Иначе возвращается NIL. (nand ..) эквивалентен (not (and ..)).

(nand 'any ..) -> flg

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

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

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

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