@@ -356,6 +356,7 @@ module Prelude where
356module Data.Monoid where
356module Data.Monoid where
358 import Prelude
358 import Prelude
359+ import Data.Array (foldl)
360 infixr 6 <>
361 infixr 6 <>
@@ -372,8 +373,7 @@ module Data.Monoid where
372 (<>) = Data.Array.concat
373 (<>) = Data.Array.concat
374 mconcat :: forall m. (Monoid m) => [m] -> m
375 mconcat :: forall m. (Monoid m) => [m] -> m
375− mconcat [] = mempty
376+ mconcat = foldl (<>) mempty
376− mconcat (m:ms) = m <> mconcat ms
378module Control.Monad where
378module Control.Monad where
@@ -503,9 +503,9 @@ module Data.Array where
503 foldr f a (b : bs) = f (foldr f a bs) b
503 foldr f a (b : bs) = f (foldr f a bs) b
504 foldr _ a [] = a
504 foldr _ a [] = a
506− foldl :: forall a b. (a -> b -> b) -> b -> [a] -> b
506+ foldl :: forall a b. (b -> a -> b) -> b -> [a] -> b
507 foldl _ b [] = b
507 foldl _ b [] = b
508− foldl f b (a:as) = foldl f (f a b) as
508+ foldl f b (a:as) = foldl f (f b a) as
510 foreign import length "function length(xs) {\
510 foreign import length "function length(xs) {\
511 \ return xs.length;\
511 \ return xs.length;\
@@ -573,15 +573,38 @@ module Data.Array where
573 \ return l1;\
573 \ return l1;\
574 \}" :: forall a. [a] -> [a]
574 \}" :: forall a. [a] -> [a]
576− foreign import splice "function splice(s) {\
576+ foreign import insertAt
577+ "function insertAt(index) {\
577− \ return function(e) {\
578+ \ return function(a) {\
578− \ return function(l1) {\
579+ \ return function(l) {\
580+ \ var l1 = l.slice();\
581+ \ l1.splice(index, 0, a);\
585+ \}":: forall a. Number -> a -> [a] -> [a]
587+ foreign import deleteAt
588+ "function deleteAt(index) {\
579− \ return function(l2) {\
589+ \ return function(n) {\
580− \ return l2.splice(s, e, l1);\
590+ \ return function(l) {\
581− \ }; \
591+ \ var l1 = l.slice();\
592+ \ l1.splice(index, n);\
584− \}":: forall a. Number -> Number -> [a] -> [a] -> [a]
596+ \}":: forall a. Number -> Number -> [a] -> [a]
598+ foreign import updateAt
599+ "function updateAt(index) {\
600+ \ return function(a) {\
601+ \ return function(l) {\
602+ \ var l1 = l.slice();\
607+ \}":: forall a. Number -> a -> [a] -> [a]
586 infixr 6 :
609 infixr 6 :