Artifact b6fd3cd69ea3a79a191f0632b2296c22930f0f7fba20241d2bd2680f93cfd478:
- File
psl-1983/3-1/kernel/symbol-values.red
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 1303) [annotate] [blame] [check-ins using] [more...]
- File
psl-1983/kernel/symbol-values.red
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 1303) [annotate] [blame] [check-ins using]
% % SYMBOL-VALUES.RED - ValueCell, UnboundP, MakeUnbound and Set % % Author: Eric Benson % Computer Science Dept. % University of Utah % Date: 20 August 1981 % Copyright (c) 1981 Eric Benson % on SysLisp; syslsp procedure UnboundP U; %. Does U not have a value? if IDP U then if Tag SymVal IDInf U eq Unbound then T else NIL else NonIDError(U, 'UnboundP); syslsp procedure MakeUnbound U; %. Make U an unbound ID if IDP U then SymVal IDInf U := MkItem(Unbound, IDInf U) else NonIDError(U, 'MakeUnbound); syslsp procedure ValueCell U; %. Safe access to SymVal entry begin scalar V; % This guy is called from Eval return if IDP U then << V := SymVal IDInf U; if Tag V eq Unbound then ContinuableError('99, BldMsg('"%r is an unbound ID", U), U) else V >> else NonIDError(U, 'ValueCell); end; % This version of SET differs from the Standard Lisp report in that Exp is % not declared fluid, in order to maintain compatibility between compiled % and interpreted code. syslsp procedure Set(Exp, Val); %. Assign Val to ID Exp if IDP Exp then if not (null Exp or Exp eq 'T) then << SymVal IDInf Exp := Val; Val >> else StdError '"T and NIL cannot be SET" else NonIDError(Exp, 'Set); off SysLisp; END;