Last active
October 30, 2018 16:57
-
-
Save irisjae/bdefa06ed111013da185a2bba45482b1 to your computer and use it in GitHub Desktop.
Polyfilling declarative-style name binding for js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//first draft | |
var where = where_fn => where_fn () | |
where (( | |
even = n => | |
!! (n === 0) | |
? true | |
: odd (n - 1), | |
odd = n => | |
!! (n === 0) | |
? false | |
: even (n - 1) ) => | |
console .log (n - 1) ) | |
//various experiments | |
var given = given_form => given_form () | |
given ( | |
(odd, even) => ($=> | |
console .log (even (10)) | |
) ( | |
odd = n => | |
!! (n === 0) | |
? false | |
: even (n - 1), | |
even = n => | |
!! (n === 0) | |
? true | |
: odd (n - 1) ) ) | |
//current draft | |
//TODO: look for where and take in fn_form instead | |
var so = fn_form => | |
!! (fn_form .toString () .endsWith ('=>_')) | |
? fn_form () () | |
: fn_form () | |
so ((_=_=> | |
console .log (even (121)), | |
where | |
, odd = n => | |
!! (n === 0) | |
? false | |
: even (n - 1) | |
, even = n => | |
!! (n === 0) | |
? true | |
: odd (n - 1) )=>_) | |
so (( | |
take | |
, odd = n => | |
!! (n === 0) | |
? false | |
: even (n - 1) | |
, even = n => | |
!! (n === 0) | |
? true | |
: odd (n - 1) )=> | |
console .log (even (120)) ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Actually wheres can also support arbitrary orders within the where clauses. simply recall the function, supplying appropriate parameters to suppress values not yet obtained, and repeat until all values are obtained.