File: sq.l

package info (click to toggle)
picolisp 26.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 7,376 kB
  • sloc: ansic: 3,127; javascript: 1,004; makefile: 108; sh: 2
file content (67 lines) | stat: -rw-r--r-- 2,032 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 09dec25 Software Lab. Alexander Burger

# (select [var ..] cls [hook] [var val ..])
(de select Lst
   (let
      (Vars
         (make
            (until (pre? "+" (car Lst))
               (unless Lst
                  (quit "Missing class") )
               (link (++ Lst)) ) )
         Cls (++ Lst)
         Hook (and (ext? (car Lst)) (++ Lst)) )
      (default Lst
         (list
            (or
               (and (sym? (car Vars)) (car Vars))
               (recur (Cls)
                  (or
                     (and
                        (find
                           '((X)
                              (isa '(+Need +index) (car (pair X))) )
                           (getl Cls) )
                        (; @ 1 var) )
                     (cdr
                        (maxi caar
                           (getl (get (or Hook *DB) Cls)) ) )
                     (pick recurse (type Cls)) ) ) ) ) )
      (for
         (Q
            (apply search
               (make
                  (loop
                     (prog1 (++ Lst)
                        (link
                           (++ Lst)
                           (list
                              (make (link @ Cls) (and Hook (link Hook))) ) ) )
                     (NIL Lst) ) ) )
            (search Q) )
         (T
            (when (this (isa Cls @))
               (ifn Vars
                  (show This)
                  (for X Vars
                     (cond
                        ((pair X)
                           (printsp (eval X)) )
                        ((meta This X)
                           (print> @ (get This X))
                           (space) )
                        (T (printsp (get This X))) ) )
                  (println This) )
               (= "\e" (key)) )
            This ) ) ) )

(dm (print> . +relation) (Val)
   (print Val) )

(dm (print> . +Number) (Val)
   (if (num? Val)
      (prin (format Val (: scl)))
      (print Val) ) )

(dm (print> . +Date) (Val)
   (print (if (num? Val) (datStr Val) Val)) )