@@ -407,28 +407,76 @@ module Global where
407407
408408module Math where
409409
410− type Math =
411− { abs :: Number -> Number
412− , acos :: Number -> Number
413− , asin :: Number -> Number
414− , atan :: Number -> Number
415− --, atan2 :: (Number, Number) -> Number
416− , aceil :: Number -> Number
417− , cos :: Number -> Number
418− , exp :: Number -> Number
419− , floor :: Number -> Number
420− , log :: Number -> Number
421− --, max :: (Number, Number) -> Number
422− --, pow :: (Number, Number) -> Number
423− --, random :: () -> Number
424− , round :: Number -> Number
425− , sin :: Number -> Number
426− , sqrt :: Number -> Number
427− , tan :: Number -> Number
428− }
410+ foreign import abs "function abs(n){\
411+ \ return Math.abs(n);\
412+ \}" :: Number -> Number
413+
414+ foreign import acos "function acos(n){\
415+ \ return Math.acos(n);\
416+ \}" :: Number -> Number
417+
418+ foreign import asin "function asin(n){\
419+ \ return Math.asin(n);\
420+ \}" :: Number -> Number
421+
422+ foreign import atan "function atan(n){\
423+ \ return Math.atan(n);\
424+ \}" :: Number -> Number
425+
426+ foreign import atan2 "function atan2(y){\
427+ \ return function (x) {\
428+ \ return Math.atan2(y, x);\
429+ \ };\
430+ \}" :: Number -> Number -> Number
431+
432+ foreign import aceil "function aceil(n){\
433+ \ return Math.aceil(n);\
434+ \}" :: Number -> Number
435+
436+ foreign import cos "function cos(n){\
437+ \ return Math.cos(n);\
438+ \}" :: Number -> Number
439+
440+ foreign import exp "function exp(n){\
441+ \ return Math.exp(n);\
442+ \}" :: Number -> Number
443+
444+ foreign import floor "function floor(n){\
445+ \ return Math.floor(n);\
446+ \}" :: Number -> Number
447+
448+ foreign import log "function log(n){\
449+ \ return Math.log(n);\
450+ \}" :: Number -> Number
451+
452+ foreign import max "function max(n){\
453+ \ return Math.max(n);\
454+ \}" :: Number -> Number
455+
456+ foreign import min "function min(n){\
457+ \ return Math.min(n);\
458+ \}" :: Number -> Number
459+
460+ foreign import pow "function pow(n){\
461+ \ return Math.pow(n);\
462+ \}" :: Number -> Number
463+
464+ foreign import round "function round(n){\
465+ \ return Math.round(n);\
466+ \}" :: Number -> Number
467+
468+ foreign import sin "function sin(n){\
469+ \ return Math.sin(n);\
470+ \}" :: Number -> Number
471+
472+ foreign import sqrt "function sqrt(n){\
473+ \ return Math.sqrt(n);\
474+ \}" :: Number -> Number
475+
476+ foreign import tan "function tan(n){\
477+ \ return Math.tan(n);\
478+ \}" :: Number -> Number
429479
430− foreign import math "var math = Math;" :: Math
431−
432480module Eff where
433481
434482 foreign import data Eff :: # ! -> * -> *
@@ -457,6 +505,18 @@ module Eff where
457505 ret = retEff
458506 (>>=) = bindEff
459507
508+module Random where
509+
510+ import Eff
511+
512+ foreign import data Random :: !
513+
514+ foreign import random "function random() {\
515+ \ return function() {\
516+ \ return Math.random();\
517+ \ };\
518+ \}" :: forall e. Eff (random :: Random | e) Number
519+
460520module Errors where
461521
462522 import Eff