git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #770 from purescript/769

Remove Data.Eq from Prelude

commit2c5314589b4816d1a83ac37217693a33e221c8ee authorGary Burgess <gary.burgess@gmail.com> dateSun 11 Jan 2015, 23:52 (12 years ago) parent3763983c8b6714
1 file changed+597−457
prelude/prelude.purs+597−457
prelude/prelude.purs+597−457
@@ -69,19 +69,23 @@ module Prelude
6969 (:) = cons
7070
7171 foreign import cons
72− "function cons(e) {\
73− \ return function(l) {\
74− \ return [e].concat(l);\
75− \ };\
76− \}" :: forall a. a -> [a] -> [a]
72+ """
73+ function cons(e) {
74+ return function(l) {
75+ return [e].concat(l);
76+ };
77+ }
78+ """ :: forall a. a -> [a] -> [a]
7779
7880 class Show a where
7981 show :: a -> String
8082
8183 foreign import showStringImpl
82− "function showStringImpl(s) {\
83− \ return JSON.stringify(s);\
84− \}" :: String -> String
84+ """
85+ function showStringImpl(s) {
86+ return JSON.stringify(s);
87+ }
88+ """ :: String -> String
8589
8690 instance showUnit :: Show Unit where
8791 show (Unit {}) = "Unit {}"
@@ -93,23 +97,28 @@ module Prelude
9397 show true = "true"
9498 show false = "false"
9599
96− foreign import showNumberImpl "function showNumberImpl(n) {\
97− \ return n.toString();\
98− \}" :: Number -> String
100+ foreign import showNumberImpl
101+ """
102+ function showNumberImpl(n) {
103+ return n.toString();
104+ }
105+ """ :: Number -> String
99106
100107 instance showNumber :: Show Number where
101108 show = showNumberImpl
102109
103110 foreign import showArrayImpl
104− "function showArrayImpl(f) {\
105− \ return function(xs) {\
106− \ var ss = [];\
107− \ for (var i = 0, l = xs.length; i < l; i++) {\
108− \ ss[i] = f(xs[i]);\
109− \ }\
110− \ return '[' + ss.join(',') + ']';\
111− \ };\
112− \}" :: forall a. (a -> String) -> [a] -> String
111+ """
112+ function showArrayImpl(f) {
113+ return function(xs) {
114+ var ss = [];
115+ for (var i = 0, l = xs.length; i < l; i++) {
116+ ss[i] = f(xs[i]);
117+ }
118+ return '[' + ss.join(',') + ']';
119+ };
120+ }
121+ """ :: forall a. (a -> String) -> [a] -> String
113122
114123 instance showArray :: (Show a) => Show [a] where
115124 show = showArrayImpl show
@@ -187,39 +196,57 @@ module Prelude
187196 (%) :: a -> a -> a
188197 negate :: a -> a
189198
190− foreign import numAdd "function numAdd(n1) {\
191− \ return function(n2) {\
192− \ return n1 + n2;\
193− \ };\
194− \}" :: Number -> Number -> Number
195−
196− foreign import numSub "function numSub(n1) {\
197− \ return function(n2) {\
198− \ return n1 - n2;\
199− \ };\
200− \}" :: Number -> Number -> Number
201−
202− foreign import numMul "function numMul(n1) {\
203− \ return function(n2) {\
204− \ return n1 * n2;\
205− \ };\
206− \}" :: Number -> Number -> Number
207−
208− foreign import numDiv "function numDiv(n1) {\
209− \ return function(n2) {\
210− \ return n1 / n2;\
211− \ };\
212− \}" :: Number -> Number -> Number
213−
214− foreign import numMod "function numMod(n1) {\
215− \ return function(n2) {\
216− \ return n1 % n2;\
217− \ };\
218− \}" :: Number -> Number -> Number
219−
220− foreign import numNegate "function numNegate(n) {\
221− \ return -n;\
222− \}" :: Number -> Number
199+ foreign import numAdd
200+ """
201+ function numAdd(n1) {
202+ return function(n2) {
203+ return n1 + n2;
204+ };
205+ }
206+ """ :: Number -> Number -> Number
207+
208+ foreign import numSub
209+ """
210+ function numSub(n1) {
211+ return function(n2) {
212+ return n1 - n2;
213+ };
214+ }
215+ """ :: Number -> Number -> Number
216+
217+ foreign import numMul
218+ """
219+ function numMul(n1) {
220+ return function(n2) {
221+ return n1 * n2;
222+ };
223+ }
224+ """ :: Number -> Number -> Number
225+
226+ foreign import numDiv
227+ """
228+ function numDiv(n1) {
229+ return function(n2) {
230+ return n1 / n2;
231+ };
232+ }
233+ """ :: Number -> Number -> Number
234+
235+ foreign import numMod
236+ """
237+ function numMod(n1) {
238+ return function(n2) {
239+ return n1 % n2;
240+ };
241+ }
242+ """ :: Number -> Number -> Number
243+
244+ foreign import numNegate
245+ """
246+ function numNegate(n) {
247+ return -n;
248+ }
249+ """ :: Number -> Number
223250
224251 instance numNumber :: Num Number where
225252 (+) = numAdd
@@ -242,18 +269,22 @@ module Prelude
242269 (/=) :: a -> a -> Boolean
243270
244271 foreign import refEq
245− "function refEq(r1) {\
246− \ return function(r2) {\
247− \ return r1 === r2;\
248− \ };\
249− \}" :: forall a. a -> a -> Boolean
272+ """
273+ function refEq(r1) {
274+ return function(r2) {
275+ return r1 === r2;
276+ };
277+ }
278+ """ :: forall a. a -> a -> Boolean
250279
251280 foreign import refIneq
252− "function refIneq(r1) {\
253− \ return function(r2) {\
254− \ return r1 !== r2;\
255− \ };\
256− \}" :: forall a. a -> a -> Boolean
281+ """
282+ function refIneq(r1) {
283+ return function(r2) {
284+ return r1 !== r2;
285+ };
286+ }
287+ """ :: forall a. a -> a -> Boolean
257288
258289 instance eqUnit :: Eq Unit where
259290 (==) (Unit {}) (Unit {}) = true
@@ -272,17 +303,19 @@ module Prelude
272303 (/=) = refIneq
273304
274305 foreign import eqArrayImpl
275− "function eqArrayImpl(f) {\
276− \ return function(xs) {\
277− \ return function(ys) {\
278− \ if (xs.length !== ys.length) return false;\
279− \ for (var i = 0; i < xs.length; i++) {\
280− \ if (!f(xs[i])(ys[i])) return false;\
281− \ }\
282− \ return true;\
283− \ };\
284− \ };\
285− \}" :: forall a. (a -> a -> Boolean) -> [a] -> [a] -> Boolean
306+ """
307+ function eqArrayImpl(f) {
308+ return function(xs) {
309+ return function(ys) {
310+ if (xs.length !== ys.length) return false;
311+ for (var i = 0; i < xs.length; i++) {
312+ if (!f(xs[i])(ys[i])) return false;
313+ }
314+ return true;
315+ };
316+ };
317+ }
318+ """ :: forall a. (a -> a -> Boolean) -> [a] -> [a] -> Boolean
286319
287320 instance eqArray :: (Eq a) => Eq [a] where
288321 (==) xs ys = eqArrayImpl (==) xs ys
@@ -334,17 +367,19 @@ module Prelude
334367 _ -> true
335368
336369 foreign import unsafeCompareImpl
337− "function unsafeCompareImpl(lt) {\
338− \ return function(eq) {\
339− \ return function(gt) {\
340− \ return function(x) {\
341− \ return function(y) {\
342− \ return x < y ? lt : x > y ? gt : eq;\
343− \ };\
344− \ };\
345− \ };\
346− \ };\
347− \}" :: forall a. Ordering -> Ordering -> Ordering -> a -> a -> Ordering
370+ """
371+ function unsafeCompareImpl(lt) {
372+ return function(eq) {
373+ return function(gt) {
374+ return function(x) {
375+ return function(y) {
376+ return x < y ? lt : x > y ? gt : eq;
377+ };
378+ };
379+ };
380+ };
381+ }
382+ """ :: forall a. Ordering -> Ordering -> Ordering -> a -> a -> Ordering
348383
349384 unsafeCompare :: forall a. a -> a -> Ordering
350385 unsafeCompare = unsafeCompareImpl LT EQ GT
@@ -385,45 +420,66 @@ module Prelude
385420 zshr :: b -> Number -> b
386421 complement :: b -> b
387422
388− foreign import numShl "function numShl(n1) {\
389− \ return function(n2) {\
390− \ return n1 << n2;\
391− \ };\
392− \}" :: Number -> Number -> Number
393−
394− foreign import numShr "function numShr(n1) {\
395− \ return function(n2) {\
396− \ return n1 >> n2;\
397− \ };\
398− \}" :: Number -> Number -> Number
399−
400− foreign import numZshr "function numZshr(n1) {\
401− \ return function(n2) {\
402− \ return n1 >>> n2;\
403− \ };\
404− \}" :: Number -> Number -> Number
405−
406− foreign import numAnd "function numAnd(n1) {\
407− \ return function(n2) {\
408− \ return n1 & n2;\
409− \ };\
410− \}" :: Number -> Number -> Number
411−
412− foreign import numOr "function numOr(n1) {\
413− \ return function(n2) {\
414− \ return n1 | n2;\
415− \ };\
416− \}" :: Number -> Number -> Number
417−
418− foreign import numXor "function numXor(n1) {\
419− \ return function(n2) {\
420− \ return n1 ^ n2;\
421− \ };\
422− \}" :: Number -> Number -> Number
423−
424− foreign import numComplement "function numComplement(n) {\
425− \ return ~n;\
426− \}" :: Number -> Number
423+ foreign import numShl
424+ """
425+ function numShl(n1) {
426+ return function(n2) {
427+ return n1 << n2;
428+ };
429+ }
430+ """ :: Number -> Number -> Number
431+
432+ foreign import numShr
433+ """
434+ function numShr(n1) {
435+ return function(n2) {
436+ return n1 >> n2;
437+ };
438+ }
439+ """ :: Number -> Number -> Number
440+
441+ foreign import numZshr
442+ """
443+ function numZshr(n1) {
444+ return function(n2) {
445+ return n1 >>> n2;
446+ };
447+ }
448+ """ :: Number -> Number -> Number
449+
450+ foreign import numAnd
451+ """
452+ function numAnd(n1) {
453+ return function(n2) {
454+ return n1 & n2;
455+ };
456+ }
457+ """ :: Number -> Number -> Number
458+
459+ foreign import numOr
460+ """
461+ function numOr(n1) {
462+ return function(n2) {
463+ return n1 | n2;
464+ };
465+ }
466+ """ :: Number -> Number -> Number
467+
468+ foreign import numXor
469+ """
470+ function numXor(n1) {
471+ return function(n2) {
472+ return n1 ^ n2;
473+ };
474+ }
475+ """ :: Number -> Number -> Number
476+
477+ foreign import numComplement
478+ """
479+ function numComplement(n) {
480+ return ~n;
481+ }
482+ """ :: Number -> Number
427483
428484 instance bitsNumber :: Bits Number where
429485 (.&.) = numAnd
@@ -442,21 +498,30 @@ module Prelude
442498 (||) :: b -> b -> b
443499 not :: b -> b
444500
445− foreign import boolAnd "function boolAnd(b1) {\
446− \ return function(b2) {\
447− \ return b1 && b2;\
448− \ };\
449− \}" :: Boolean -> Boolean -> Boolean
450−
451− foreign import boolOr "function boolOr(b1) {\
452− \ return function(b2) {\
453− \ return b1 || b2;\
454− \ };\
455− \}" :: Boolean -> Boolean -> Boolean
456−
457− foreign import boolNot "function boolNot(b) {\
458− \ return !b;\
459− \}" :: Boolean -> Boolean
501+ foreign import boolAnd
502+ """
503+ function boolAnd(b1) {
504+ return function(b2) {
505+ return b1 && b2;
506+ };
507+ }
508+ """ :: Boolean -> Boolean -> Boolean
509+
510+ foreign import boolOr
511+ """
512+ function boolOr(b1) {
513+ return function(b2) {
514+ return b1 || b2;
515+ };
516+ }
517+ """ :: Boolean -> Boolean -> Boolean
518+
519+ foreign import boolNot
520+ """
521+ function boolNot(b) {
522+ return !b;
523+ }
524+ """ :: Boolean -> Boolean
460525
461526 instance boolLikeBoolean :: BoolLike Boolean where
462527 (&&) = boolAnd
@@ -469,11 +534,13 @@ module Prelude
469534 (<>) :: a -> a -> a
470535
471536 foreign import concatString
472− "function concatString(s1) {\
473− \ return function(s2) {\
474− \ return s1 + s2;\
475− \ };\
476− \}" :: String -> String -> String
537+ """
538+ function concatString(s1) {
539+ return function(s2) {
540+ return s1 + s2;
541+ };
542+ }
543+ """ :: String -> String -> String
477544
478545 instance semigroupUnit :: Semigroup Unit where
479546 (<>) (Unit {}) (Unit {}) = Unit {}
@@ -507,293 +574,334 @@ module Data.Function where
507574 foreign import data Fn10 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
508575
509576 foreign import mkFn0
510− "function mkFn0(fn) {\
511− \ return function() {\
512− \ return fn({});\
513− \ };\
514− \}" :: forall a. (Unit -> a) -> Fn0 a
577+ """
578+ function mkFn0(fn) {
579+ return function() {
580+ return fn({});
581+ };
582+ }
583+ """ :: forall a. (Unit -> a) -> Fn0 a
515584
516585 foreign import mkFn1
517− "function mkFn1(fn) {\
518− \ return function(a) {\
519− \ return fn(a);\
520− \ };\
521− \}" :: forall a b. (a -> b) -> Fn1 a b
586+ """
587+ function mkFn1(fn) {
588+ return function(a) {
589+ return fn(a);
590+ };
591+ }
592+ """ :: forall a b. (a -> b) -> Fn1 a b
522593
523594 foreign import mkFn2
524− "function mkFn2(fn) {\
525− \ return function(a, b) {\
526− \ return fn(a)(b);\
527− \ };\
528− \}" :: forall a b c. (a -> b -> c) -> Fn2 a b c
595+ """
596+ function mkFn2(fn) {
597+ return function(a, b) {
598+ return fn(a)(b);
599+ };
600+ }
601+ """ :: forall a b c. (a -> b -> c) -> Fn2 a b c
529602
530603 foreign import mkFn3
531− "function mkFn3(fn) {\
532− \ return function(a, b, c) {\
533− \ return fn(a)(b)(c);\
534− \ };\
535− \}" :: forall a b c d. (a -> b -> c -> d) -> Fn3 a b c d
604+ """
605+ function mkFn3(fn) {
606+ return function(a, b, c) {
607+ return fn(a)(b)(c);
608+ };
609+ }
610+ """ :: forall a b c d. (a -> b -> c -> d) -> Fn3 a b c d
536611
537612 foreign import mkFn4
538− "function mkFn4(fn) {\
539− \ return function(a, b, c, d) {\
540− \ return fn(a)(b)(c)(d);\
541− \ };\
542− \}" :: forall a b c d e. (a -> b -> c -> d -> e) -> Fn4 a b c d e
613+ """
614+ function mkFn4(fn) {
615+ return function(a, b, c, d) {
616+ return fn(a)(b)(c)(d);
617+ };
618+ }
619+ """ :: forall a b c d e. (a -> b -> c -> d -> e) -> Fn4 a b c d e
543620
544621 foreign import mkFn5
545− "function mkFn5(fn) {\
546− \ return function(a, b, c, d, e) {\
547− \ return fn(a)(b)(c)(d)(e);\
548− \ };\
549− \}" :: forall a b c d e f. (a -> b -> c -> d -> e -> f) -> Fn5 a b c d e f
622+ """
623+ function mkFn5(fn) {
624+ return function(a, b, c, d, e) {
625+ return fn(a)(b)(c)(d)(e);
626+ };
627+ }
628+ """ :: forall a b c d e f. (a -> b -> c -> d -> e -> f) -> Fn5 a b c d e f
550629
551630 foreign import mkFn6
552− "function mkFn6(fn) {\
553− \ return function(a, b, c, d, e, f) {\
554− \ return fn(a)(b)(c)(d)(e)(f);\
555− \ };\
556− \}" :: forall a b c d e f g. (a -> b -> c -> d -> e -> f -> g) -> Fn6 a b c d e f g
631+ """
632+ function mkFn6(fn) {
633+ return function(a, b, c, d, e, f) {
634+ return fn(a)(b)(c)(d)(e)(f);
635+ };
636+ }
637+ """ :: forall a b c d e f g. (a -> b -> c -> d -> e -> f -> g) -> Fn6 a b c d e f g
557638
558639 foreign import mkFn7
559− "function mkFn7(fn) {\
560− \ return function(a, b, c, d, e, f, g) {\
561− \ return fn(a)(b)(c)(d)(e)(f)(g);\
562− \ };\
563− \}" :: forall a b c d e f g h. (a -> b -> c -> d -> e -> f -> g -> h) -> Fn7 a b c d e f g h
640+ """
641+ function mkFn7(fn) {
642+ return function(a, b, c, d, e, f, g) {
643+ return fn(a)(b)(c)(d)(e)(f)(g);
644+ };
645+ }
646+ """ :: forall a b c d e f g h. (a -> b -> c -> d -> e -> f -> g -> h) -> Fn7 a b c d e f g h
564647
565648 foreign import mkFn8
566− "function mkFn8(fn) {\
567− \ return function(a, b, c, d, e, f, g, h) {\
568− \ return fn(a)(b)(c)(d)(e)(f)(g)(h);\
569− \ };\
570− \}" :: forall a b c d e f g h i. (a -> b -> c -> d -> e -> f -> g -> h -> i) -> Fn8 a b c d e f g h i
649+ """
650+ function mkFn8(fn) {
651+ return function(a, b, c, d, e, f, g, h) {
652+ return fn(a)(b)(c)(d)(e)(f)(g)(h);
653+ };
654+ }
655+ """ :: forall a b c d e f g h i. (a -> b -> c -> d -> e -> f -> g -> h -> i) -> Fn8 a b c d e f g h i
571656
572657 foreign import mkFn9
573− "function mkFn9(fn) {\
574− \ return function(a, b, c, d, e, f, g, h, i) {\
575− \ return fn(a)(b)(c)(d)(e)(f)(g)(h)(i);\
576− \ };\
577− \}" :: forall a b c d e f g h i j. (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) -> Fn9 a b c d e f g h i j
658+ """
659+ function mkFn9(fn) {
660+ return function(a, b, c, d, e, f, g, h, i) {
661+ return fn(a)(b)(c)(d)(e)(f)(g)(h)(i);
662+ };
663+ }
664+ """ :: forall a b c d e f g h i j. (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) -> Fn9 a b c d e f g h i j
578665
579666 foreign import mkFn10
580− "function mkFn10(fn) {\
581− \ return function(a, b, c, d, e, f, g, h, i, j) {\
582− \ return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j);\
583− \ };\
584− \}" :: forall a b c d e f g h i j k. (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k) -> Fn10 a b c d e f g h i j k
667+ """
668+ function mkFn10(fn) {
669+ return function(a, b, c, d, e, f, g, h, i, j) {
670+ return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j);
671+ };
672+ }
673+ """ :: forall a b c d e f g h i j k. (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k) -> Fn10 a b c d e f g h i j k
585674
586675 foreign import runFn0
587− "function runFn0(fn) {\
588− \ return fn();\
589− \}" :: forall a. Fn0 a -> a
676+ """
677+ function runFn0(fn) {
678+ return fn();
679+ }
680+ """ :: forall a. Fn0 a -> a
590681
591682 foreign import runFn1
592− "function runFn1(fn) {\
593− \ return function(a) {\
594− \ return fn(a);\
595− \ };\
596− \}" :: forall a b. Fn1 a b -> a -> b
683+ """
684+ function runFn1(fn) {
685+ return function(a) {
686+ return fn(a);
687+ };
688+ }
689+ """ :: forall a b. Fn1 a b -> a -> b
597690
598691 foreign import runFn2
599− "function runFn2(fn) {\
600− \ return function(a) {\
601− \ return function(b) {\
602− \ return fn(a, b);\
603− \ };\
604− \ };\
605− \}" :: forall a b c. Fn2 a b c -> a -> b -> c
692+ """
693+ function runFn2(fn) {
694+ return function(a) {
695+ return function(b) {
696+ return fn(a, b);
697+ };
698+ };
699+ }
700+ """ :: forall a b c. Fn2 a b c -> a -> b -> c
606701
607702 foreign import runFn3
608− "function runFn3(fn) {\
609− \ return function(a) {\
610− \ return function(b) {\
611− \ return function(c) {\
612− \ return fn(a, b, c);\
613− \ };\
614− \ };\
615− \ };\
616− \}" :: forall a b c d. Fn3 a b c d -> a -> b -> c -> d
703+ """
704+ function runFn3(fn) {
705+ return function(a) {
706+ return function(b) {
707+ return function(c) {
708+ return fn(a, b, c);
709+ };
710+ };
711+ };
712+ }
713+ """ :: forall a b c d. Fn3 a b c d -> a -> b -> c -> d
617714
618715 foreign import runFn4
619− "function runFn4(fn) {\
620− \ return function(a) {\
621− \ return function(b) {\
622− \ return function(c) {\
623− \ return function(d) {\
624− \ return fn(a, b, c, d);\
625− \ };\
626− \ };\
627− \ };\
628− \ };\
629− \}" :: forall a b c d e. Fn4 a b c d e -> a -> b -> c -> d -> e
716+ """
717+ function runFn4(fn) {
718+ return function(a) {
719+ return function(b) {
720+ return function(c) {
721+ return function(d) {
722+ return fn(a, b, c, d);
723+ };
724+ };
725+ };
726+ };
727+ }
728+ """ :: forall a b c d e. Fn4 a b c d e -> a -> b -> c -> d -> e
630729
631730 foreign import runFn5
632− "function runFn5(fn) {\
633− \ return function(a) {\
634− \ return function(b) {\
635− \ return function(c) {\
636− \ return function(d) {\
637− \ return function(e) {\
638− \ return fn(a, b, c, d, e);\
639− \ };\
640− \ };\
641− \ };\
642− \ };\
643− \ };\
644− \}" :: forall a b c d e f. Fn5 a b c d e f -> a -> b -> c -> d -> e -> f
731+ """
732+ function runFn5(fn) {
733+ return function(a) {
734+ return function(b) {
735+ return function(c) {
736+ return function(d) {
737+ return function(e) {
738+ return fn(a, b, c, d, e);
739+ };
740+ };
741+ };
742+ };
743+ };
744+ }
745+ """ :: forall a b c d e f. Fn5 a b c d e f -> a -> b -> c -> d -> e -> f
645746
646747 foreign import runFn6
647− "function runFn6(fn) {\
648− \ return function(a) {\
649− \ return function(b) {\
650− \ return function(c) {\
651− \ return function(d) {\
652− \ return function(e) {\
653− \ return function(f) {\
654− \ return fn(a, b, c, d, e, f);\
655− \ };\
656− \ };\
657− \ };\
658− \ };\
659− \ };\
660− \ };\
661− \}" :: forall a b c d e f g. Fn6 a b c d e f g -> a -> b -> c -> d -> e -> f -> g
748+ """
749+ function runFn6(fn) {
750+ return function(a) {
751+ return function(b) {
752+ return function(c) {
753+ return function(d) {
754+ return function(e) {
755+ return function(f) {
756+ return fn(a, b, c, d, e, f);
757+ };
758+ };
759+ };
760+ };
761+ };
762+ };
763+ }
764+ """ :: forall a b c d e f g. Fn6 a b c d e f g -> a -> b -> c -> d -> e -> f -> g
662765
663766 foreign import runFn7
664− "function runFn7(fn) {\
665− \ return function(a) {\
666− \ return function(b) {\
667− \ return function(c) {\
668− \ return function(d) {\
669− \ return function(e) {\
670− \ return function(f) {\
671− \ return function(g) {\
672− \ return fn(a, b, c, d, e, f, g);\
673− \ };\
674− \ };\
675− \ };\
676− \ };\
677− \ };\
678− \ };\
679− \ };\
680− \}" :: forall a b c d e f g h. Fn7 a b c d e f g h -> a -> b -> c -> d -> e -> f -> g -> h
767+ """
768+ function runFn7(fn) {
769+ return function(a) {
770+ return function(b) {
771+ return function(c) {
772+ return function(d) {
773+ return function(e) {
774+ return function(f) {
775+ return function(g) {
776+ return fn(a, b, c, d, e, f, g);
777+ };
778+ };
779+ };
780+ };
781+ };
782+ };
783+ };
784+ }
785+ """ :: forall a b c d e f g h. Fn7 a b c d e f g h -> a -> b -> c -> d -> e -> f -> g -> h
681786
682787 foreign import runFn8
683− "function runFn8(fn) {\
684− \ return function(a) {\
685− \ return function(b) {\
686− \ return function(c) {\
687− \ return function(d) {\
688− \ return function(e) {\
689− \ return function(f) {\
690− \ return function(g) {\
691− \ return function(h) {\
692− \ return fn(a, b, c, d, e, f, g, h);\
693− \ };\
694− \ };\
695− \ };\
696− \ };\
697− \ };\
698− \ };\
699− \ };\
700− \ };\
701− \}" :: forall a b c d e f g h i. Fn8 a b c d e f g h i -> a -> b -> c -> d -> e -> f -> g -> h -> i
788+ """
789+ function runFn8(fn) {
790+ return function(a) {
791+ return function(b) {
792+ return function(c) {
793+ return function(d) {
794+ return function(e) {
795+ return function(f) {
796+ return function(g) {
797+ return function(h) {
798+ return fn(a, b, c, d, e, f, g, h);
799+ };
800+ };
801+ };
802+ };
803+ };
804+ };
805+ };
806+ };
807+ }
808+ """ :: forall a b c d e f g h i. Fn8 a b c d e f g h i -> a -> b -> c -> d -> e -> f -> g -> h -> i
702809
703810 foreign import runFn9
704− "function runFn9(fn) {\
705− \ return function(a) {\
706− \ return function(b) {\
707− \ return function(c) {\
708− \ return function(d) {\
709− \ return function(e) {\
710− \ return function(f) {\
711− \ return function(g) {\
712− \ return function(h) {\
713− \ return function(i) {\
714− \ return fn(a, b, c, d, e, f, g, h, i);\
715− \ };\
716− \ };\
717− \ };\
718− \ };\
719− \ };\
720− \ };\
721− \ };\
722− \ };\
723− \ };\
724− \}" :: forall a b c d e f g h i j. Fn9 a b c d e f g h i j -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j
811+ """
812+ function runFn9(fn) {
813+ return function(a) {
814+ return function(b) {
815+ return function(c) {
816+ return function(d) {
817+ return function(e) {
818+ return function(f) {
819+ return function(g) {
820+ return function(h) {
821+ return function(i) {
822+ return fn(a, b, c, d, e, f, g, h, i);
823+ };
824+ };
825+ };
826+ };
827+ };
828+ };
829+ };
830+ };
831+ };
832+ }
833+ """ :: forall a b c d e f g h i j. Fn9 a b c d e f g h i j -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j
725834
726835 foreign import runFn10
727− "function runFn10(fn) {\
728− \ return function(a) {\
729− \ return function(b) {\
730− \ return function(c) {\
731− \ return function(d) {\
732− \ return function(e) {\
733− \ return function(f) {\
734− \ return function(g) {\
735− \ return function(h) {\
736− \ return function(i) {\
737− \ return function(j) {\
738− \ return fn(a, b, c, d, e, f, g, h, i, j);\
739− \ };\
740− \ };\
741− \ };\
742− \ };\
743− \ };\
744− \ };\
745− \ };\
746− \ };\
747− \ };\
748− \ };\
749− \}" :: forall a b c d e f g h i j k. Fn10 a b c d e f g h i j k -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k
750−
751−module Data.Eq where
752−
753− newtype Ref a = Ref a
754−
755− liftRef :: forall a b. (a -> a -> b) -> Ref a -> Ref a -> b
756− liftRef f (Ref x) (Ref y) = f x y
757−
758− instance eqRef :: Eq (Ref a) where
759− (==) = liftRef refEq
760− (/=) = liftRef refIneq
761−
762− instance functorRef :: Functor Ref where
763− (<$>) f (Ref x) = Ref (f x)
836+ """
837+ function runFn10(fn) {
838+ return function(a) {
839+ return function(b) {
840+ return function(c) {
841+ return function(d) {
842+ return function(e) {
843+ return function(f) {
844+ return function(g) {
845+ return function(h) {
846+ return function(i) {
847+ return function(j) {
848+ return fn(a, b, c, d, e, f, g, h, i, j);
849+ };
850+ };
851+ };
852+ };
853+ };
854+ };
855+ };
856+ };
857+ };
858+ };
859+ }
860+ """ :: forall a b c d e f g h i j k. Fn10 a b c d e f g h i j k -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k
764861
765862module Prelude.Unsafe where
766863
767864 foreign import unsafeIndex
768− "function unsafeIndex(xs) {\
769− \ return function(n) {\
770− \ return xs[n];\
771− \ };\
772− \}" :: forall a. [a] -> Number -> a
865+ """
866+ function unsafeIndex(xs) {
867+ return function(n) {
868+ return xs[n];
869+ };
870+ }
871+ """ :: forall a. [a] -> Number -> a
773872
774873module Control.Monad.Eff where
775874
776875 foreign import data Eff :: # ! -> * -> *
777876
778− foreign import returnE "function returnE(a) {\
779− \ return function() {\
780− \ return a;\
781− \ };\
782− \}" :: forall e a. a -> Eff e a
783−
784− foreign import bindE "function bindE(a) {\
785− \ return function(f) {\
786− \ return function() {\
787− \ return f(a())();\
788− \ };\
789− \ };\
790− \}" :: forall e a b. Eff e a -> (a -> Eff e b) -> Eff e b
877+ foreign import returnE
878+ """
879+ function returnE(a) {
880+ return function() {
881+ return a;
882+ };
883+ }
884+ """ :: forall e a. a -> Eff e a
885+
886+ foreign import bindE
887+ """
888+ function bindE(a) {
889+ return function(f) {
890+ return function() {
891+ return f(a())();
892+ };
893+ };
894+ }
895+ """ :: forall e a b. Eff e a -> (a -> Eff e b) -> Eff e b
791896
792897 type Pure a = forall e. Eff e a
793898
794− foreign import runPure "function runPure(f) {\
795− \ return f();\
796− \}" :: forall a. Pure a -> a
899+ foreign import runPure
900+ """
901+ function runPure(f) {
902+ return f();
903+ }
904+ """ :: forall a. Pure a -> a
797905
798906 instance functorEff :: Functor (Eff e) where
799907 (<$>) = liftA1
@@ -809,55 +917,69 @@ module Control.Monad.Eff where
809917
810918 instance monadEff :: Monad (Eff e)
811919
812− foreign import untilE "function untilE(f) {\
813− \ return function() {\
814− \ while (!f());\
815− \ return {};\
816− \ };\
817− \}" :: forall e. Eff e Boolean -> Eff e Unit
818−
819− foreign import whileE "function whileE(f) {\
820− \ return function(a) {\
821− \ return function() {\
822− \ while (f()) {\
823− \ a();\
824− \ }\
825− \ return {};\
826− \ };\
827− \ };\
828− \}" :: forall e a. Eff e Boolean -> Eff e a -> Eff e Unit
829−
830− foreign import forE "function forE(lo) {\
831− \ return function(hi) {\
832− \ return function(f) {\
833− \ return function() {\
834− \ for (var i = lo; i < hi; i++) {\
835− \ f(i)();\
836− \ }\
837− \ };\
838− \ };\
839− \ };\
840− \}" :: forall e. Number -> Number -> (Number -> Eff e Unit) -> Eff e Unit
841−
842−
843− foreign import foreachE "function foreachE(as) {\
844− \ return function(f) {\
845− \ return function() {\
846− \ for (var i = 0; i < as.length; i++) {\
847− \ f(as[i])();\
848− \ }\
849− \ };\
850− \ };\
851− \}" :: forall e a. [a] -> (a -> Eff e Unit) -> Eff e Unit
920+ foreign import untilE
921+ """
922+ function untilE(f) {
923+ return function() {
924+ while (!f());
925+ return {};
926+ };
927+ }
928+ """ :: forall e. Eff e Boolean -> Eff e Unit
929+
930+ foreign import whileE
931+ """
932+ function whileE(f) {
933+ return function(a) {
934+ return function() {
935+ while (f()) {
936+ a();
937+ }
938+ return {};
939+ };
940+ };
941+ }
942+ """ :: forall e a. Eff e Boolean -> Eff e a -> Eff e Unit
943+
944+ foreign import forE
945+ """
946+ function forE(lo) {
947+ return function(hi) {
948+ return function(f) {
949+ return function() {
950+ for (var i = lo; i < hi; i++) {
951+ f(i)();
952+ }
953+ };
954+ };
955+ };
956+ }
957+ """ :: forall e. Number -> Number -> (Number -> Eff e Unit) -> Eff e Unit
958+
959+
960+ foreign import foreachE
961+ """
962+ function foreachE(as) {
963+ return function(f) {
964+ return function() {
965+ for (var i = 0; i < as.length; i++) {
966+ f(as[i])();
967+ }
968+ };
969+ };
970+ }
971+ """ :: forall e a. [a] -> (a -> Eff e Unit) -> Eff e Unit
852972
853973module Control.Monad.Eff.Unsafe where
854974
855975 import Control.Monad.Eff
856976
857977 foreign import unsafeInterleaveEff
858− "function unsafeInterleaveEff(f) {\
859− \ return f;\
860− \}" :: forall eff1 eff2 a. Eff eff1 a -> Eff eff2 a
978+ """
979+ function unsafeInterleaveEff(f) {
980+ return f;
981+ }
982+ """ :: forall eff1 eff2 a. Eff eff1 a -> Eff eff2 a
861983
862984module Debug.Trace where
863985
@@ -865,12 +987,15 @@ module Debug.Trace where
865987
866988 foreign import data Trace :: !
867989
868− foreign import trace "function trace(s) {\
869− \ return function() {\
870− \ console.log(s);\
871− \ return {};\
872− \ };\
873− \}" :: forall r. String -> Eff (trace :: Trace | r) Unit
990+ foreign import trace
991+ """
992+ function trace(s) {
993+ return function() {
994+ console.log(s);
995+ return {};
996+ };
997+ }
998+ """ :: forall r. String -> Eff (trace :: Trace | r) Unit
874999
8751000 print :: forall a r. (Show a) => a -> Eff (trace :: Trace | r) Unit
8761001 print o = trace (show o)
@@ -883,37 +1008,52 @@ module Control.Monad.ST where
8831008
8841009 foreign import data STRef :: * -> * -> *
8851010
886− foreign import newSTRef "function newSTRef(val) {\
887− \ return function() {\
888− \ return { value: val };\
889− \ };\
890− \}" :: forall a h r. a -> Eff (st :: ST h | r) (STRef h a)
891−
892− foreign import readSTRef "function readSTRef(ref) {\
893− \ return function() {\
894− \ return ref.value;\
895− \ };\
896− \}" :: forall a h r. STRef h a -> Eff (st :: ST h | r) a
897−
898− foreign import modifySTRef "function modifySTRef(ref) {\
899− \ return function(f) {\
900− \ return function() {\
901− \ return ref.value = f(ref.value);\
902− \ };\
903− \ };\
904− \}" :: forall a h r. STRef h a -> (a -> a) -> Eff (st :: ST h | r) a
905−
906− foreign import writeSTRef "function writeSTRef(ref) {\
907− \ return function(a) {\
908− \ return function() {\
909− \ return ref.value = a;\
910− \ };\
911− \ };\
912− \}" :: forall a h r. STRef h a -> a -> Eff (st :: ST h | r) a
913−
914− foreign import runST "function runST(f) {\
915− \ return f;\
916− \}" :: forall a r. (forall h. Eff (st :: ST h | r) a) -> Eff r a
1011+ foreign import newSTRef
1012+ """
1013+ function newSTRef(val) {
1014+ return function() {
1015+ return { value: val };
1016+ };
1017+ }
1018+ """ :: forall a h r. a -> Eff (st :: ST h | r) (STRef h a)
1019+
1020+ foreign import readSTRef
1021+ """
1022+ function readSTRef(ref) {
1023+ return function() {
1024+ return ref.value;
1025+ };
1026+ }
1027+ """ :: forall a h r. STRef h a -> Eff (st :: ST h | r) a
1028+
1029+ foreign import modifySTRef
1030+ """
1031+ function modifySTRef(ref) {
1032+ return function(f) {
1033+ return function() {
1034+ return ref.value = f(ref.value);
1035+ };
1036+ };
1037+ }
1038+ """ :: forall a h r. STRef h a -> (a -> a) -> Eff (st :: ST h | r) a
1039+
1040+ foreign import writeSTRef
1041+ """
1042+ function writeSTRef(ref) {
1043+ return function(a) {
1044+ return function() {
1045+ return ref.value = a;
1046+ };
1047+ };
1048+ }
1049+ """ :: forall a h r. STRef h a -> a -> Eff (st :: ST h | r) a
1050+
1051+ foreign import runST
1052+ """
1053+ function runST(f) {
1054+ return f;
1055+ }
1056+ """ :: forall a r. (forall h. Eff (st :: ST h | r) a) -> Eff r a
9171057
9181058 pureST :: forall a. (forall h r. Eff (st :: ST h | r) a) -> a
9191059 pureST st = runPure (runST st)