@@ -407,28 +407,76 @@ module Global where
408module Math where
408module Math where
410− type Math =
410+ foreign import abs "function abs(n){\
411+ \ return Math.abs(n);\
411− { abs :: Number -> Number
412+ \}" :: Number -> Number
414+ foreign import acos "function acos(n){\
415+ \ return Math.acos(n);\
412− , acos :: Number -> Number
416+ \}" :: Number -> Number
418+ foreign import asin "function asin(n){\
419+ \ return Math.asin(n);\
413− , asin :: Number -> Number
420+ \}" :: Number -> Number
422+ foreign import atan "function atan(n){\
423+ \ return Math.atan(n);\
414− , atan :: Number -> Number
424+ \}" :: Number -> Number
426+ foreign import atan2 "function atan2(y){\
427+ \ return function (x) {\
428+ \ return Math.atan2(y, x);\
430+ \}" :: Number -> Number -> Number
432+ foreign import aceil "function aceil(n){\
433+ \ return Math.aceil(n);\
434+ \}" :: Number -> Number
436+ foreign import cos "function cos(n){\
437+ \ return Math.cos(n);\
415− --, atan2 :: (Number, Number) -> Number
438+ \}" :: Number -> Number
440+ foreign import exp "function exp(n){\
441+ \ return Math.exp(n);\
442+ \}" :: Number -> Number
444+ foreign import floor "function floor(n){\
445+ \ return Math.floor(n);\
446+ \}" :: Number -> Number
448+ foreign import log "function log(n){\
449+ \ return Math.log(n);\
450+ \}" :: Number -> Number
452+ foreign import max "function max(n){\
453+ \ return Math.max(n);\
416− , aceil :: Number -> Number
454+ \}" :: Number -> Number
417− , cos :: Number -> Number
455+
456+ foreign import min "function min(n){\
457+ \ return Math.min(n);\
418− , exp :: Number -> Number
458+ \}" :: Number -> Number
419− , floor :: Number -> Number
459+
460+ foreign import pow "function pow(n){\
461+ \ return Math.pow(n);\
420− , log :: Number -> Number
462+ \}" :: Number -> Number
421− --, max :: (Number, Number) -> Number
463+
464+ foreign import round "function round(n){\
465+ \ return Math.round(n);\
422− --, pow :: (Number, Number) -> Number
466+ \}" :: Number -> Number
423− --, random :: () -> Number
467+
468+ foreign import sin "function sin(n){\
469+ \ return Math.sin(n);\
424− , round :: Number -> Number
470+ \}" :: Number -> Number
425− , sin :: Number -> Number
471+
472+ foreign import sqrt "function sqrt(n){\
473+ \ return Math.sqrt(n);\
426− , sqrt :: Number -> Number
474+ \}" :: Number -> Number
476+ foreign import tan "function tan(n){\
477+ \ return Math.tan(n);\
427− , tan :: Number -> Number
478+ \}" :: Number -> Number
430− foreign import math "var math = Math;" :: Math
432module Eff where
480module Eff where
434 foreign import data Eff :: # ! -> * -> *
482 foreign import data Eff :: # ! -> * -> *
@@ -457,6 +505,18 @@ module Eff where
457 ret = retEff
505 ret = retEff
458 (>>=) = bindEff
506 (>>=) = bindEff
512+ foreign import data Random :: !
514+ foreign import random "function random() {\
515+ \ return function() {\
516+ \ return Math.random();\
518+ \}" :: forall e. Eff (random :: Random | e) Number
460module Errors where
520module Errors where
462 import Eff
522 import Eff