############################################################################ # # 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