@@ -39,6 +39,18 @@ module Prelude where
3939 (#) :: forall a b. a -> (a -> b) -> b
4040 (#) x f = f x
4141
42+ infixr 6 :
43+
44+ (:) :: forall a. a -> [a] -> [a]
45+ (:) = cons
46+
47+ foreign import cons
48+ "function cons(e) {\
49+ \ return function (l) {\
50+ \ return [e].concat(l);\
51+ \ };\
52+ \}" :: forall a. a -> [a] -> [a]
53+
4254 class Show a where
4355 show :: a -> String
4456
@@ -61,6 +73,20 @@ module Prelude where
6173 instance showNumber :: Show Number where
6274 show = showNumberImpl
6375
76+ foreign import showArrayImpl
77+ "function showArrayImpl (f) {\
78+ \ return function (xs) {\
79+ \ var ss = [];\
80+ \ for (var i = 0, l = xs.length; i < l; i++) {\
81+ \ ss[i] = f(xs[i]);\
82+ \ }\
83+ \ return '[' + ss.join(',') + ']';\
84+ \ };\
85+ \}" :: forall a. (a -> String) -> [a] -> String
86+
87+ instance showArray :: (Show a) => Show [a] where
88+ show = showArrayImpl show
89+
6490 infixl 4 <$>
6591
6692 class Functor f where
@@ -317,14 +343,6 @@ module Prelude where
317343 zshr = numZshr
318344 complement = numComplement
319345
320− infixl 8 !!
321−
322− foreign import (!!) "function $bang$bang(xs) {\
323− \ return function(n) {\
324− \ return xs[n];\
325− \ };\
326− \}" :: forall a. [a] -> Number -> a
327−
328346 infixr 2 ||
329347 infixr 3 &&
330348
@@ -385,6 +403,15 @@ module Data.Eq where
385403 (==) = liftRef refEq
386404 (/=) = liftRef refIneq
387405
406+module Prelude.Unsafe where
407+
408+ foreign import unsafeIndex
409+ "function unsafeIndex(xs) {\
410+ \ return function(n) {\
411+ \ return xs[n];\
412+ \ };\
413+ \}" :: forall a. [a] -> Number -> a
414+
388415module Control.Monad.Eff where
389416
390417 foreign import data Eff :: # ! -> * -> *