Implemented string<
[jscl.git] / src / string.lisp
index 1aa09ac..aebad3a 100644 (file)
         (unless (char= (char s1 i) (char s2 i))
           (return-from string= nil))))))
 
+(defun string< (s1 s2)
+  (let ((len-1 (length s1))
+               (len-2 (length s2)))
+       (cond ((= len-2 0) nil)
+                 ((= len-1 0) 0)
+                 (t (dotimes (i len-1 nil)
+                          (when (char< (char s1 i) (char s2 i))
+                                (return-from string< i)))))))
+               
 (define-setf-expander char (string index)
   (let ((g!string (gensym))
         (g!index (gensym))
         (g!value (gensym)))
-    (list (list g!string g!index)
-          (list string index)
-          (list g!value)
-          `(aset ,g!string ,g!index ,g!value)
-          `(char ,g!string ,g!index))))
+    (values (list g!string g!index)
+            (list string index)
+            (list g!value)
+            `(aset ,g!string ,g!index ,g!value)
+            `(char ,g!string ,g!index))))