From 8b6f4e486ffc9b6b8fec314f2a94998feb919c39 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 9 Jan 2019 23:44:54 -0400 Subject: Shortened normalization codes. --- luxc/src/lux/base.clj | 68 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 27 deletions(-) (limited to 'luxc') diff --git a/luxc/src/lux/base.clj b/luxc/src/lux/base.clj index e6fecf367..0b14e667d 100644 --- a/luxc/src/lux/base.clj +++ b/luxc/src/lux/base.clj @@ -258,8 +258,7 @@ (assert false (str "Unknown var: " (first pattern)))) '_ (transform-pattern (vec (rest pattern)))] - :else pattern - )) + :else pattern)) (defmacro |case [value & branches] (assert (= 0 (mod (count branches) 2))) @@ -670,29 +669,29 @@ (defn ^:private normalize-char [char] (case char - \* "_ASTER_" - \+ "_PLUS_" - \- "_DASH_" - \/ "_SLASH_" - \\ "_BSLASH_" - \_ "_UNDERS_" - \% "_PERCENT_" - \$ "_DOLLAR_" - \' "_QUOTE_" - \` "_BQUOTE_" - \@ "_AT_" - \^ "_CARET_" - \& "_AMPERS_" - \= "_EQ_" - \! "_BANG_" - \? "_QM_" - \: "_COLON_" - \. "_PERIOD_" - \, "_COMMA_" - \< "_LT_" - \> "_GT_" - \~ "_TILDE_" - \| "_PIPE_" + \* "_AS" + \+ "_PL" + \- "_DS" + \/ "_SL" + \\ "_BS" + \_ "_US" + \% "_PC" + \$ "_DL" + \' "_QU" + \` "_BQ" + \@ "_AT" + \^ "_CR" + \& "_AA" + \= "_EQ" + \! "_BG" + \? "_QM" + \: "_CO" + \. "_PD" + \, "_CM" + \< "_LT" + \> "_GT" + \~ "_TI" + \| "_PI" ;; default char)) @@ -1208,10 +1207,12 @@ (pr-str ?value) [_ ($Nat ?value)] - (str "+" (Long/toUnsignedString ?value)) + (Long/toUnsignedString ?value) [_ ($Int ?value)] - (pr-str ?value) + (if (< ?value 0) + (pr-str ?value) + (str "+" (pr-str ?value))) [_ ($Rev ?value)] (encode-rev ?value) @@ -1470,3 +1471,16 @@ _output _output))) + +(defn timed% [what when operation] + (fn [state] + (let [pre (System/currentTimeMillis)] + (|case (operation state) + ($Right state* output) + (let [post (System/currentTimeMillis) + duration (- post pre) + _ (|log! (str what " [" when "]: +" duration "ms" "\n"))] + ($Right (T [state* output]))) + + ($Left ^String msg) + (fail* msg))))) -- cgit v1.2.3