Skip to content

Commit

Permalink
more lazy evaluation
Browse files Browse the repository at this point in the history
  • Loading branch information
make-github-pseudonymous-again committed Sep 9, 2015
1 parent 726354a commit 17668a6
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 9 deletions.
20 changes: 17 additions & 3 deletions js/dist/fingertree.js
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,20 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
}

/* js/src/0-core/optimizing */
/* js/src/0-core/optimizing/_deepL.js */
function _deepL(M, left, middle, right) {
return delay(function () {
return deepL(M, left, middle, right);
});
}

/* js/src/0-core/optimizing/_deepR.js */
function _deepR(M, left, middle, right) {
return delay(function () {
return deepR(M, left, middle, right);
});
}

/* js/src/0-core/optimizing/_digit.js */
function _digit(list) {

Expand Down Expand Up @@ -1317,7 +1331,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
var leftMeasure = M.plus(i, left.measure(M));
if (p(leftMeasure)) {
var _split = left.splitDigit(p, i, M);
return new Split(_from_small_list(M, _split.left), _split.middle, deepL(M, _split.right, middle, right));
return new Split(_from_small_list(M, _split.left), _split.middle, _deepL(M, _split.right, middle, right));
}

// see if the split point is inside the middle tree
Expand All @@ -1327,12 +1341,12 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
var midSplit = middle.splitTree(p, leftMeasure);
// midsplit.middle is a Node since middle is a Tree ( Node a )
var _split2 = midSplit.middle.digit().splitDigit(p, M.plus(leftMeasure, midSplit.left.measure()), M);
return new Split(deepR(M, left, midSplit.left, _split2.left), _split2.middle, deepL(M, _split2.right, midSplit.right, right));
return new Split(_deepR(M, left, midSplit.left, _split2.left), _split2.middle, _deepL(M, _split2.right, midSplit.right, right));
}

// the split point is in the right tree
var split = right.splitDigit(p, midMeasure, M);
return new Split(deepR(M, left, middle, split.left), split.middle, _from_small_list(M, split.right));
return new Split(_deepR(M, left, middle, split.left), split.middle, _from_small_list(M, split.right));
}
}, {
key: 'split',
Expand Down
2 changes: 1 addition & 1 deletion js/dist/fingertree.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion js/dist/fingertree.min.js

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions js/src/0-core/optimizing/_deepL.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
function _deepL ( M , left , middle , right ) {
return delay( ( ) => deepL( M , left , middle , right ) ) ;
}
3 changes: 3 additions & 0 deletions js/src/0-core/optimizing/_deepR.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
function _deepR ( M , left , middle , right ) {
return delay( ( ) => deepR( M , left , middle , right ) ) ;
}
8 changes: 4 additions & 4 deletions js/src/3-tree/1-base/2-Deep.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ class Deep extends Tree {
return new Split(
_from_small_list( M , split.left ) ,
split.middle ,
deepL( M , split.right , middle , right )
_deepL( M , split.right , middle , right )
) ;
}

Expand All @@ -147,16 +147,16 @@ class Deep extends Tree {
// midsplit.middle is a Node since middle is a Tree ( Node a )
const split = midSplit.middle.digit( ).splitDigit( p , M.plus( leftMeasure , midSplit.left.measure( ) ) , M ) ;
return new Split(
deepR( M , left , midSplit.left, split.left ) ,
_deepR( M , left , midSplit.left, split.left ) ,
split.middle ,
deepL( M , split.right , midSplit.right , right )
_deepL( M , split.right , midSplit.right , right )
) ;
}

// the split point is in the right tree
const split = right.splitDigit( p , midMeasure , M ) ;
return new Split(
deepR( M , left , middle , split.left ) ,
_deepR( M , left , middle , split.left ) ,
split.middle ,
_from_small_list( M , split.right )
) ;
Expand Down

0 comments on commit 17668a6

Please sign in to comment.