@@ -152,12 +152,17 @@ jsRange e1 e2 = (++"()") . jsFunc "" $
152binop (o:p) e1 e2
152binop (o:p) e1 e2
153 | isAlpha o || '_' == o = (o:p) ++ parens e1 ++ parens e2
153 | isAlpha o || '_' == o = (o:p) ++ parens e1 ++ parens e2
154 | otherwise = case o:p of
154 | otherwise = case o:p of
155− ":" -> jsCons e1 e2
155+ ":" -> jsCons e1 e2
156 "++" -> append e1 e2
156 "++" -> append e1 e2
157− "$" -> e1 ++ parens e2
157+ "$" -> e1 ++ parens e2
158− "." -> jsFunc "x" . ret $ e1 ++ parens (e2 ++ parens "x")
158+ "." -> jsFunc "x" . ret $ e1 ++ parens (e2 ++ parens "x")
159+ "^" -> "Math.pow(" ++ e1 ++ "," ++ e2 ++ ")"
159 "==" -> "eq(" ++ e1 ++ "," ++ e2 ++ ")"
160 "==" -> "eq(" ++ e1 ++ "," ++ e2 ++ ")"
160 "/=" -> "not(eq(" ++ e1 ++ "," ++ e2 ++ "))"
161 "/=" -> "not(eq(" ++ e1 ++ "," ++ e2 ++ "))"
162+ "<" -> "(compare(" ++ e1 ++ ")(" ++ e2 ++ ")[0] === 'LT')"
163+ ">" -> "(compare(" ++ e1 ++ ")(" ++ e2 ++ ")[0] === 'GT')"
164+ "<=" -> "function() { var ord = compare(" ++ e1 ++ ")(" ++ e2 ++ ")[0]; return ord === 'LT' || ord === 'EQ'; }()"
165+ ">=" -> "function() { var ord = compare(" ++ e1 ++ ")(" ++ e2 ++ ")[0]; return ord === 'GT' || ord === 'EQ'; }()"
161− _ -> parens (e1 ++ (o:p) ++ e2)
166+ _ -> parens (e1 ++ (o:p) ++ e2)
163append e1 e2 = "Value.append" ++ parens (e1 ++ "," ++ e2)
168append e1 e2 = "Value.append" ++ parens (e1 ++ "," ++ e2)