=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/dr.sm1,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- OpenXM/src/kan96xx/Kan/dr.sm1 2000/06/15 07:33:29 1.4 +++ OpenXM/src/kan96xx/Kan/dr.sm1 2000/12/10 03:33:46 1.5 @@ -1,9 +1,9 @@ -% $OpenXM: OpenXM/src/kan96xx/Kan/dr.sm1,v 1.3 2000/02/02 09:07:59 takayama Exp $ +% $OpenXM: OpenXM/src/kan96xx/Kan/dr.sm1,v 1.4 2000/06/15 07:33:29 takayama Exp $ %% dr.sm1 (Define Ring) 1994/9/25, 26 %% This file is error clean. @@@.quiet { } -{ (macro package : dr.sm1, 9/26,1995 --- Version 6/15, 2000. ) message } ifelse +{ (macro package : dr.sm1, 9/26,1995 --- Version 12/10, 2000. ) message } ifelse /ctrlC-hook { %%% define your own routing in case of error. @@ -3559,6 +3559,44 @@ $ [ff ff] fromVectors :: $ (All integers in obj are changed to universalNumber.) (Example: /ff [1 2 [(hello) (0).]] def ff { tag } map ::) ( ff to_int { tag } map :: ) +]] putUsages + +/define_ring_variables { + [/in-define_ring_variables /v /p /v0] pushVariables + [ + /v getVariableNames def + /v0 v def + v { dup /p set (/) 2 1 roll ( $) p ($. def ) } map cat + /v set +% v message + [(parse) v] extension + ] pop + popVariables +} def +[(define_ring_variables) +[(It binds a variable <> in the current ring to the sm1 variable <>.) + (For example, if x is a variable in the current ring, it defines the sm1) + (variable x by /x (x) def) +]] putUsages + +/boundp { + /arg1 set + [/a /ans] pushVariables + [ + /a arg1 def + [(parse) [(/) a ( load tag 0 eq { /ans 0 def } ) + ( { /ans 1 def } ifelse )] cat ] extension + /arg1 ans def + ] pop + popVariables + arg1 +} def +[(boundp) + [( a boundp b) + (string a, b is 0 or 1.) + (If the variable named << a >> is bounded to a value,) + (it returns 1 else it returns 0.) + $Example: (hoge) boundp ::$ ]] putUsages ;