File: putprop.htm

package info (click to toggle)
nyquist 3.20%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 58,008 kB
  • sloc: ansic: 74,743; lisp: 17,929; java: 10,723; cpp: 6,690; sh: 171; xml: 58; makefile: 40; python: 15
file content (108 lines) | stat: -rw-r--r-- 3,958 bytes parent folder | download | duplicates (7)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<html><head><title>XLISP putprop</title>

<link rel="stylesheet" type="text/css" href="reference.css">

</head>

<body>

<a href="../start.htm">Nyquist / XLISP 2.0</a>&nbsp; -&nbsp;
<a href="../manual/contents.htm">Contents</a> |
<a href="../tutorials/tutorials.htm">Tutorials</a> |
<a href="../examples/examples.htm">Examples</a> |
<a href="reference-index.htm">Reference</a>

<hr>

<h1>putprop</h1>

<hr>

<p><table cellpadding="0" cellspacing="0" style="margin-left:10px"><tbody>
<tr valign="top">
  <td><nobr>Type:</nobr></td>
  <td><nobr>&nbsp;&nbsp;-&nbsp;&nbsp;</nobr></td>
  <td width="100%"><nobr>function (subr)</nobr></td>
</tr>
<tr valign="top">
  <td><nobr>Source:</nobr></td>
  <td><nobr>&nbsp;&nbsp;-&nbsp;&nbsp;</nobr></td>
  <td width="100%"><nobr>xlbfun.c</nobr></td>
</tr>
</tbody></table></p>

<h2>Syntax</h2>

<dl>
<dt>(putprop <i>symbol value property</i>)</dt>
<dd><i>symbol</i> - the symbol with a property list<br>
<i>value</i> - the value to be assigned to the property<br>
<i>property</i> - the property name being changed or added<br>
returns - the property value</dd>
</dl>

<h2>Description</h2>

<p>The 'putprop' function sets the value of the 'property' in the 'symbol'.
If the 'property' does not exist, the 'property' is added to the property
list. The 'symbol' must be an existing symbol. The 'value' may be a single
value or a list.</p>

<p>Property lists are lists attached to any user defined variables. The
lists are in the form of:</p>

<pre class="example">
(<font color="#008844"><i>name1 val1 name2 val2</i></font> ... )
</pre>

<p>Any number of properties may be attached to a single variable.</p>

<h2>Examples</h2>

<pre class="example">
(setq person 'bobby)                  <font color="#008844">; create a var with a value</font>
(putprop person 'boogie 'last-name)   <font color="#008844">; add a LAST-NAME property</font>
(putprop person 'disc-jockey 'job)    <font color="#008844">; add a JOB property</font>

(get person 'last-name)               <font color="#008844">; retrieve LAST-NAME - boogie</font>
(get person 'job)                     <font color="#008844">; retrieve JOB - disc-jockey</font>
(get person 'height)                  <font color="#008844">; non-existant - returns NIL</font>

(putprop person '(10 20 30) 'stats)   <font color="#008844">; add STATS - a list</font>
(get person 'stats)                   <font color="#008844">; retrieve STATS - (10 20 30)</font>
</pre>

<p><b>Note:</b> You can set a property to the value
<a href="nil.htm">NIL</a>. However, this
<a href="nil.htm">NIL</a> value is indistinguishable from the
<a href="nil.htm">NIL</a> returned when a property does not
exist.</p>

<p><b>Common Lisp:</b> Common LISP does not have a 'putprop' function. It
uses <a href="setf.htm">setf</a> to achieve this functionality.
Porting from Common Lisp to XLISP will work fine since XLISP supports the <a
href="setf.htm">setf</a> modifications of property lists as well
as the <a href="get.htm">get</a> function to retrieve property
values from symbol names. Porting from XLISP to Common Lisp will require
translating 'putprop' into <a href="setf.htm">setf</a> forms.</p>

<p><b>Caution:</b> In XLISP, the order of 'putprop' arguments is 'symbol',
'value', 'property'. This is different from many other Lisps which normally
use 'symbol', 'property', 'value'. Be careful when porting existing Lisp
code.</p>

<p>See the
<a href="../manual/xlisp-man-014.htm#putprop">putprop</a>
function in the <nobr>XLISP 2.0</nobr> manual.</p>

<p><nobr>&nbsp;&nbsp;<a href="#top">Back to Top</nobr></a></p>

<hr>

<a href="../start.htm">Nyquist / XLISP 2.0</a>&nbsp; -&nbsp;
<a href="../manual/contents.htm">Contents</a> |
<a href="../tutorials/tutorials.htm">Tutorials</a> |
<a href="../examples/examples.htm">Examples</a> |
<a href="reference-index.htm">Reference</a>

</body></html>