@@ -255,19 +255,31 @@ Elm.Native.Array.make = function(elm) {
257 function foldl(f, b, a) {
257 function foldl(f, b, a) {
258− for (var i = 0; i < a.table.length; i++) {
258+ if (a.height == 0) {
259+ for (var i = 0; i < a.table.length; i++) {
260+ b = A2(f, a.table[i], b);
263+ for (var i = 0; i < a.table.length; i++) {
259− b = A2(f, a.height == 0 ? a.table[i] : foldl(f, b, a.table[i]), b);
264+ b = foldl(f, b, a.table[i]);
261 return b;
267 return b;
264 function foldr(f, b, a) {
270 function foldr(f, b, a) {
265− for (var i = a.table.length; i--; ) {
271+ if (a.height == 0) {
266− b = A2(f, a.height == 0 ? a.table[i] : foldr(f, b, a.table[i]), b);
272+ for (var i = a.table.length; i--; ) {
273+ b = A2(f, a.table[i], b);
276+ for (var i = a.table.length; i--; ) {
277+ b = foldl(f, b, a.table[i]);
268 return b;
280 return b;
271 // TODO: currently, it slices the right, then the left. This can be
283 // TODO: currently, it slices the right, then the left. This can be
272 // optimized.
284 // optimized.
273 function slice(from, to, a) {
285 function slice(from, to, a) {