Add translations for signal binops

This commit is contained in:
Evan Czaplicki 2012-12-14 19:55:54 -08:00
parent 41a383b31c
commit 22a63628fe

View file

@ -1,4 +1,3 @@
module CompileToJS (showErr, jsModule) where module CompileToJS (showErr, jsModule) where
import Ast import Ast
@ -265,8 +264,11 @@ binop (o:p) e1 e2
e2 ++ ")[0]; return ord==='LT' || ord==='EQ'; }()" e2 ++ ")[0]; return ord==='LT' || ord==='EQ'; }()"
">=" -> "function() { var ord = compare(" ++ e1 ++ ")(" ++ ">=" -> "function() { var ord = compare(" ++ e1 ++ ")(" ++
e2 ++ ")[0]; return ord==='GT' || ord==='EQ'; }()" e2 ++ ")[0]; return ord==='GT' || ord==='EQ'; }()"
"<~" -> "lift" ++ parens e1 ++ parens e2
"~" -> "lift2(function(f){return function(x){return f(x);};})" ++
parens e1 ++ parens e2
_ | elem (o:p) ops -> parens (e1 ++ (o:p) ++ e2) _ | elem (o:p) ops -> parens (e1 ++ (o:p) ++ e2)
| otherwise -> concat [ "$op['", o:p, "']" | otherwise -> concat [ "$op['", o:p, "']"
, parens e1, parens e2 ] , parens e1, parens e2 ]
append e1 e2 = "Value.append" ++ parens (e1 ++ "," ++ e2) append e1 e2 = "Value.append" ++ parens (e1 ++ "," ++ e2)