[<table-declaration>]
<column-specification>
<row-specification>*)
<row-specification> ::= (<row-value>+)
<row-value> ::= <constant> | (<constant>*)
Everything lies in the "(<constant>*)" part of the previous line.
If you define:
(deftable Alist
(key data)
(111 (211 311 411 112 113 114 121 131 141 122))
(112 (212 312 412 111 113 114 122 132 142 121))
(113 (213 313 413 111 112 114 123 133 143 124))
(114 (214 314 414 111 112 113 124 134 144 123))
(121 (221 321 421 122 123 124 111 131 141 112))
(122 (222 322 422 121 123 124 112 132 142 111))
(211 (111 311 411 212 213 214 221 231 241 222))
(212 (112 312 412 211 213 214 222 232 242 221))
)
the elements in the data column are indeed interpreted as (fixed) lists (of constants).
Check that it works as expected:
(deffunction linked (?lab1 ?lab2)
(if (member$ ?lab2 (lookup Alist ?lab1 data)) then TRUE else FALSE)
)
CLIPS> (linked 211 241)
TRUE
The '(' character is a delimiter for symbols, so it doesn't matter whether there's a space between the '=' and the '('. The same is true for rules and globals.