V

(val 'var) -> any
Returns the current value of var. See also setq, set and def.

: (setq L '(a b c))
-> (a b c)
: (val 'L)
-> (a b c)
: (val (cdr L))
-> b
val/3
Pilog predicate that returns the value of an object's attribute. Typically used in database queries. The first argument is a Pilog variable to bind the value, the second is the object, and the third and following arguments are used to apply the get algorithm to that object. See also db/3 and select/3.

: (?
   (db nr +Item (2 . 5) @Item)   # Fetch articles 2 through 5
   (val @Nm @Item nm)            # Get item description
   (val @Sup @Item sup nm) )     # and supplier's name
 @Item={3-2} @Nm="Spare Part" @Sup="Seven Oaks Ltd."
 @Item={3-3} @Nm="Auxiliary Construction" @Sup="Active Parts Inc."
 @Item={3-4} @Nm="Enhancement Additive" @Sup="Seven Oaks Ltd."
 @Item={3-5} @Nm="Metal Fittings" @Sup="Active Parts Inc."
-> NIL
(var sym . any) -> any
(var (sym . cls) . any) -> any
Defines a class variable sym with the initial value any for the current class, implicitly given by the value of the global variable *Class, or - in the second form - for the explicitly given class cls. See also OO Concepts, rel and var:.

: (class +A)
-> +A
: (var a . 1)
-> 1
: (var b . 2)
-> 2
: (show '+A)
+A NIL
   b 2
   a 1
-> +A
(var: sym) -> any
Fetches the value of a class variable sym for the current object This, by searching the property lists of its class(es) and supperclasses. See also OO Concepts, var, with, meta, :, =: and ::.

: (class +A)
-> +A
: (var a . 1)
-> 1
: (var b . 2)
-> 2
: (object 'O '(+A) 'a 9 'b 8)
-> O
: (with 'O (list (: a) (: b) (var: a) (var: b)))
-> (9 8 1 2)
(version ['flg]) -> lst
Prints the current version as a string of dot-separated numbers, and returns the current version as a list of numbers. The JVM- and C-versions print an additional "JVM" or "C", respectively, separated by a space. When flg is non-NIL, printing is suppressed. See also *CPU and *OS.

$ pil -version
15.11.0
: (version T)
-> (15 11 0)
(vi 'sym) -> sym
(vi 'sym 'cls) -> sym
(vi '(sym . cls)) -> sym
(vi) -> NIL
(Debug mode only) Opens the "vi" editor on the function or method definition of sym. A call to ld thereafter will load the modified file. A call without arguments permanently switches the REPL line editor and the edit function to "vi" mode. See also doc, edit, em, *Dbg, debug and pp.

: (vi 'url> '+CuSu)  # Edit the method's source code, then exit from 'vi'
-> T
(view 'lst ['T]) -> any
Views lst as tree-structured ASCII graphics. When the T argument is given, lst should be a binary tree structure (as generated by idx), which is then shown as a left-rotated tree. See also pretty and show.

: (balance 'I '(a b c d e f g h i j k l m n o))
-> NIL
: I
-> (h (d (b (a) c) f (e) g) l (j (i) k) n (m) o)

: (view I)
+-- h
|
+---+-- d
|   |
|   +---+-- b
|   |   |
|   |   +---+-- a
|   |   |
|   |   +-- c
|   |
|   +-- f
|   |
|   +---+-- e
|   |
|   +-- g
|
+-- l
|
+---+-- j
|   |
|   +---+-- i
|   |
|   +-- k
|
+-- n
|
+---+-- m
|
+-- o
-> NIL

: (view I T)
         o
      n
         m
   l
         k
      j
         i
h
         g
      f
         e
   d
         c
      b
         a
-> NIL