anchor.diff:  ;; # Symbols
   ;; =========
   
  -
  -;; ## Symbol Predictates
  -;; ---------------------
  -
  -;; ### boundp
  -;; (**boundp** _sym_) -> [cl-booleanp]
  -;; - _sym_ : [cl-symbolp]
  -;;
  -;; Returns `t` if _sym_ has a value bound to it, `nil` otherwise.
  -;;
  -;; AutoLISP built-in.
  -
  -;; ### cl-symbolp
  -;; (**cl-symbolp** _v_) -> [cl-booleanp]
  -;; - _v_ : [cl-objectp]
  +;; ### ll-symbolp
  +;; (**ll-symbolp** [ll-anyp]: _v_) -> [ll-booleanp]
   ;;
   ;; Returns `t` if _v_ is a *symbol*, `nil` otherwise.
   ;;
  -;; Identical to VisualLisp `vl-symbolp`.
  +;; Identical to VisualLISP `vl-symbolp`.
   (if vl-symbolp
  -  (setq cl-symbolp vl-symbolp)
  -  (defun cl-symbolp (v)
  +  (setq ll-symbolp vl-symbolp)
  +  (defun ll-symbolp (v)
       (eq 'SYM (type v))))
   
  -;; #### cl-objectp
  -;; (**cl-objectp** _v_) -> t
  -;; - _v_ : [cl-objectp]
  -;;
  -;; Returns `t` for any LISP object.
  -(defun cl-objectp (v)
  -  t)
  -
  -;; ### cl-booleanp
  -;; (**cl-booleanp** _v_) -> [cl-booleanp]
  -;; - _v_ : [cl-objectp]
  -;;
  -;; Returns `t` if _v_ is a *boolean*, i.e. `eq` to `t` or `nil`,
  -;; `nil` otherwise.
  -(defun cl-booleanp (v)
  -  (or (eq v t)
  -      (eq v nil)))
  -
  -;; #### cl-voidp
  -;; (**cl-voidp** _v_) -> [cl-booleanp]
  -;; - _v_ : [cl-objectp]
  -;;
  -;; Returns `t` if _v_ is a *void*, `nil` otherwise.
  -(defun cl-voidp (v)
  -  (eq v (cl-void)))
  -
  -
  -;; ## Symbol Functions
  -;; -------------------
  -
  -;; ### quote
  -;; (**quote** _expr_)
  +;; ### ll-symbol-value
  +;; (**ll-symbol-value** [ll-symbolp]: _sym_) -> [ll-anyp]
   ;;
   ;; TODO
   ;;
  -;; AutoLISP built-in.
  +;; Identical to VisualLISP `vl-symbol-value`.
  +(if (and (not *call:ignore-vlisp*)
  +         vl-symbol-value)
  +    (setq ll-symbol-value vl-symbol-value)
  +    (defun ll-symbol-value (sym)
  +      (or (ll-symbolp sym) (set sym nil)) ; raise error if not symbolp
  +      (eval sym)))
   
  -;; ### set
  -;; (**set** _sym_ _v_) -> [cl-objectp]
  -;; - _sym_ : [integerp]
  -;; - _v_ : [cl-objectp]
  +;; ### ll-symbol-name
  +;; (**ll-symbol-name** [ll-symbolp]: _sym_) -> [ll-stringp]
   ;;
   ;; TODO
   ;;
  -;; AutoLISP built-in.
  -
  -;; ### setq
  -;; (**setq** _sym_ _v_ [_sym_ _v_] ...) -> [cl-objectp]
  -;; - _sym_ : [integerp]
  -;; - _v_ : [cl-objectp]
  -;;
  -;; TODO
  -;;
  -;; AutoLISP built-in.
  +;; Identical to VisualLISP `vl-symbol-name`.
  +(if (and (not *call:ignore-vlisp*)
  +         vl-symbol-name)
  +    (setq ll-symbol-name vl-symbol-name)
  +    (defun ll-symbol-name (sym / bound syms names)
  +      ;; FIXME: (ll-symbol-name 'names) gives nil
  +      (or (ll-symbolp sym) (set sym nil)) ; raise error if not symbolp
  +      (if (boundp sym)
  +          (setq bound t)
  +          (set sym t)) ; explicitly define symbol
  +      (setq syms t  ; preserve space \
  +            names t ; in atoms-family
  +            syms (atoms-family 0)
  +            names (atoms-family 1))
  +      (while (and syms
  +                  (not (eq sym (car syms))))
  +        (setq syms (cdr syms)
  +              names (cdr names)))
  +      (or bound
  +          (set sym nil)) ; undefine symbol
  +      (car names)))
   
   ;; ### atoms-family
  -;; (**atoms-family** _form_ [_syms_]) -> [listp]
  -;; - _form_ : [integerp]
  -;; - _syms_ : [listp]
  +;; (**atoms-family** [integerp]: _form_ [[listp]: _syms_]) -> [listp]
   ;;
  -;; Returns a list of currently defined symbols.
  +;; Returns a list of the currently defined symbols.
   ;;
   ;; An integer _form_ detemines the format in which atoms-family returns the
   ;; symbol names:
  
positive.code: ;;; symbol.lsp --- Symbol Functions
  
  ;; Copyright (c) CALL Team and Сontributors
  ;;
  ;; This file is part of CALL (Common AutoLISP Library)
  ;; Released under the MIT license
  
  
negative.code: ;;
  ;; AutoLISP built-in.
  
  
  (if ll-features (ll-provide "call/symbol"))
  
  ;; Exports
  '(
    ll-symbolp
    ll-symbol-value ll-symbol-name
    ;atoms-family
    )
  