StdChar.digitToInt !c_0 = sub (toInt_char c_0) 48 <{StdChar.<_19}> :== lt StdChar.toUpper !c_0 = if (StdChar.isLower c_0) (toChar (add (toInt_char c_0) (sub (toInt_char 'A') (toInt_char 'a')))) c_0 StdChar.toLower !c_0 = if (StdChar.isUpper c_0) (toChar (sub (toInt_char c_0) (sub (toInt_char 'A') (toInt_char 'a')))) c_0 StdChar.isUpper !c_0 = and (ge c_0 'A') (ge 'Z' c_0) StdChar.isLower !c_0 = and (ge c_0 'a') (ge 'z' c_0) StdChar.isAlpha !c_0 = or (StdChar.isLower c_0) (StdChar.isUpper c_0) StdChar.isAlphanum !c_0 = or (StdChar.isAlpha c_0) (StdChar.isDigit c_0) StdChar.isDigit !c_0 = and (ge c_0 '0') (ge '9' c_0) StdChar.isOctDigit !c_0 = and (ge c_0 '0') (ge '7' c_0) StdChar.isHexDigit !c_0 = or (StdChar.isDigit c_0) (or (and (ge c_0 'A') (ge 'F' c_0)) (and (ge c_0 'a') (ge 'f' c_0))) <{StdChar.==_18}> :== eq StdChar.isSpace !c_0 = select c_0 (' ' -> true) ('\t' -> true) ('\n' -> true) ('\r' -> true) ('\f' -> true) ('\r' -> true) (_ -> false) StdChar.isControl !c_0 = if (lt c_0 ' ') true (eq c_0 '\xB1') StdChar.isPrint !c_0 = if (ge c_0 ' ') (not (lt '~' c_0)) false StdChar.isAscii !c_0 = gt 128 c_0 <{StdChar.+_14}> !a !b = toChar (add (toInt_char a) (toInt_char b)) <{StdChar.-_15}> !a !b = toChar (sub (toInt_char a) (toInt_char b)) StdChar.zero_16 :== '\x00' StdChar.one_17 :== '\x01' StdChar.toChar_20 !a = a StdChar.toChar_21 :== toChar StdChar.fromChar_22 :== toInt_char StdChar.fromChar_23 !a_0 = a_0