 
 (defconst slate-mode-syntax-table
   (let ((table (make-syntax-table)))
-    (mapcar
-     #'(lambda (l)
-         (modify-syntax-entry (car l) (cdr l) table))
-     '((?\' . "\"") ; String
-       (?\" . "\"") ; Comment
-       (?+  . "w") ; Binary selector elements...
-       (?-  . "w")
-       (?*  . "w")
-       (?/  . "w")
-       (?=  . "w")
-       (??  . "w")
-       (?%  . "w")
-       (?~  . "w")
-       (?%  . "w")
-       (?\; . "w")
-       (?<  . "w")
-       (?>  . "w")
-       (?\[ . "(]") ; Block opener
-       (?\] . ")[") ; Block closer
-       (?\( . "()") ; Parens opener
-       (?\) . ")(") ; Parens closer
-       (?{  . "(}") ; Array opener
-       (?}  . "){") ; Array closer
-       (?&  . "'") ; Optional keyword marker
-       (?`  . "'") ; Macro character
-       (?$  . "'") ; Character literal
-       (?#  . "'") ; Symbol
-       (?|  . "$") ; Locals
-       (?_  . "w") ; Word-element and anonymous argument
-       (?:  . "_") ; Keyword marker
-       (?\\ . "\\") ; C-like escape
-       (?!  . "'") ; A stop in Smalltalk. A type annotation in Slate.
-       (?@  . "'") ; Dispatch annotator
-       (?^  . "w") ; Return
-       (?,  . ".") ; Comma for *rest parameters
-       (?.  . "."))) ; Statement separator
+    (dolist
+        (l '((?\' . "\"") ; String
+             (?\" . "\"") ; Comment
+             (?+  . "w") ; Binary selector elements...
+             (?-  . "w")
+             (?*  . "w")
+             (?/  . "w")
+             (?=  . "w")
+             (??  . "w")
+             (?%  . "w")
+             (?~  . "w")
+             (?%  . "w")
+             (?\; . "w")
+             (?<  . "w")
+             (?>  . "w")
+             (?\[ . "(]") ; Block opener
+             (?\] . ")[") ; Block closer
+             (?\( . "()") ; Parens opener
+             (?\) . ")(") ; Parens closer
+             (?{  . "(}") ; Array opener
+             (?}  . "){") ; Array closer
+             (?&  . "'") ; Optional keyword marker
+             (?`  . "'") ; Macro character
+             (?$  . "'") ; Character literal
+             (?#  . "'") ; Symbol
+             (?|  . "$") ; Locals
+             (?_  . "w") ; Word-element and anonymous argument
+             (?:  . "_") ; Keyword marker
+             (?\\ . "\\") ; C-like escape
+             (?!  . "'") ; A stop in Smalltalk. A type annotation in Slate.
+             (?@  . "'") ; Dispatch annotator
+             (?^  . "w") ; Return
+             (?,  . ".") ; Comma for *rest parameters
+             (?.  . ".") ; Statement separator
+             ))
+      (modify-syntax-entry (car l) (cdr l) table))
     table)
   "Slate character types")
 


(defvar slate-interactor-mode-map
  (let ((map (copy-keymap slate-mode-map)))
    (mapcar
     #'(lambda (l) (define-key map (car l) (cdr l)))
     '(("\C-m"      . 'comint-send-input)
       ("\C-c\C-d"  . comint-delchar-or-maybe-eof)
       ("\C-c\C-u"  . comint-kill-input)
       ("\C-c\C-c"  . comint-interrupt-subjob)
       ("\C-c\C-z"  . comint-stop-subjob)
       ("\C-c\C-\\" . comint-quit-subjob)
       ("\C-c\C-o"  . comint-kill-output)
       ("\C-c\C-r"  . comint-show-output)))
    map)
  "Keymap for controlling the Slate listener")


    ("\\<[0-9_]+\\>" . font-lock-constant-face) ; integers
    (,slate-globals-regexp
     . font-lock-builtin-face)          ; globals
    (,(concat "\\<" slate-binop-regexp "\\>")
     . font-lock-string-face)        ; binary message send
   )
  "Slate highlighting matchers.")

