diff src/prim.sml @ 821:395a5d450cc0

Chars and more string operations
author Adam Chlipala <adamc@hcoop.net>
date Tue, 26 May 2009 12:25:06 -0400
parents 66463006f893
children 280f81731426
line wrap: on
line diff
--- a/src/prim.sml	Sat May 23 10:14:51 2009 -0400
+++ b/src/prim.sml	Tue May 26 12:25:06 2009 -0400
@@ -31,6 +31,7 @@
          Int of Int64.int
        | Float of Real64.real
        | String of string
+       | Char of char
 
 open Print.PD
 open Print
@@ -40,6 +41,7 @@
         Int n => string (Int64.toString n)
       | Float n => string (Real64.toString n)
       | String s => box [string "\"", string (String.toString s), string "\""]
+      | Char ch => box [string "#\"", string (String.str ch), string "\""]
 
 fun int2s n =
     if Int64.compare (n, Int64.fromInt 0) = LESS then
@@ -64,18 +66,21 @@
         Int n => int2s' n
       | Float n => float2s n
       | String s => s
+      | Char ch => str ch
 
 fun p_t_GCC t =
     case t of
         Int n => string (int2s n)
       | Float n => string (float2s n)
       | String s => box [string "\"", string (String.toString s), string "\""]
+      | Char ch => box [string "'", string (str ch), string "'"]
 
 fun equal x =
     case x of
         (Int n1, Int n2) => n1 = n2
       | (Float n1, Float n2) => Real64.== (n1, n2)
       | (String s1, String s2) => s1 = s2
+      | (Char ch1, Char ch2) => ch1 = ch2
 
       | _ => false
 
@@ -87,8 +92,12 @@
 
       | (Float n1, Float n2) => Real64.compare (n1, n2)
       | (Float _, _) => LESS
-      | (_, Float _) => GREATER
+      | (_, Float _) => GREATER 
 
       | (String n1, String n2) => String.compare (n1, n2)
+      | (String _, _) => LESS
+      | (_, String _) => GREATER
+
+      | (Char ch1, Char ch2) => Char.compare (ch1, ch2)
 
 end