summaryrefslogtreecommitdiff
path: root/src/prim.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-05-26 12:25:06 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-05-26 12:25:06 -0400
commitd8801e05ef2f81f21eb27555b626ee2e52c3365f (patch)
tree53e0b285bbcb0e28d3cbbd507da21fcc41d8995e /src/prim.sml
parent5232b7e45cf55208a0a3ea41395bb9f87d06dd21 (diff)
Chars and more string operations
Diffstat (limited to 'src/prim.sml')
-rw-r--r--src/prim.sml11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/prim.sml b/src/prim.sml
index 95df6e02..597b3fba 100644
--- a/src/prim.sml
+++ b/src/prim.sml
@@ -31,6 +31,7 @@ datatype t =
Int of Int64.int
| Float of Real64.real
| String of string
+ | Char of char
open Print.PD
open Print
@@ -40,6 +41,7 @@ fun p_t t =
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 @@ fun toString t =
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 @@ fun compare (p1, p2) =
| (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