nond - "non-cond"

Sergey ShishkinSergey Shishkin
1 min read

Чтобы рядом было с циклом о кондиционалах. Надо было бы вместе с cond, но пропустил. На фоне такое разнообразия не мудрено. Но прежде, чем переходить к циклам (итерациям? рекурсии? “репитам”? … ) сначала покончим (?) с условными переходами. Хотя их ещё целая куча, обозначенных просто символами UNICODE типа, их парами, или такие как комбинации, как например, le0 … Скорее всего они должны быть классифицированы не как контролы, а, именно, как кондиционалы, а может тегированы там и там.

(nond ('any1 . prg1) ('any2 . prg2) ..) -> any

Многовариантное условное выражение с отрицанием («non-cond»): если любое из условий anyN равно NIL, выполняется prgN и возвращается результат. В противном случае (все условия равны NIL), возвращается NIL.

https://software-lab.de/doc/refN.html#nond

А вот код определения

   (NIL "nond" _Nond)

glob.l

# (nond ('any1 . prg1) ('any2 . prg2) ..) -> any
(de _Nond (Exe)
   (let X Exe
      (loop
         (? (atom (shift X)) $Nil)
         (let Y (car X)
            (? (nil? (eval (car Y)))
               (run (cdr Y)) ) )
         (set $At @) ) ) )

https://picolisp-manual.tiddlyhost.com/#nond

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

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