diff options
Diffstat (limited to 'ipl/procs/typecode.icn')
-rw-r--r-- | ipl/procs/typecode.icn | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ipl/procs/typecode.icn b/ipl/procs/typecode.icn new file mode 100644 index 0000000..5ad0360 --- /dev/null +++ b/ipl/procs/typecode.icn @@ -0,0 +1,41 @@ +############################################################################ +# +# File: typecode.icn +# +# Subject: Procedures to produce letter code for Icon type +# +# Author: Ralph E. Griswold +# +# Date: April 6, 1993 +# +############################################################################ +# +# This file is in the public domain. +# +############################################################################ +# +# typecode(x) produces a one-letter string identifying the type of +# its argument. In most cases, the code is the first (lowercase) +# letter of the type, as "i" for the integer type. Structure types +# are in uppercase, as "L" for the list type. All records have the +# code "R". The code "C" is used for the co-expression type to avoid +# conflict for the "c" for the cset type. In the case of graphics, "w" +# is produced for windows. +# +############################################################################ + +procedure typecode(x) + local code + # be careful of records and their constructors + image(x) ? { + if ="record constructor " then return "p" + if ="record" then return "R" + } + + code := type(x) + + if code == ("list" | "set" | "table" | "co-expression") then + code := map(code,&lcase,&ucase) + + return code[1] +end |