Date post: | 18-Dec-2014 |
Category: |
Technology |
Upload: | aleksandr-motsjonov |
View: | 1,768 times |
Download: | 0 times |
Lisp’style code with JSLisp’
by Aleksandr Motsjonov
вторник, 5 июля 2011 г.
Lisp’style code with JSOr «The Little JavaScripter»
Lisp’
by Aleksandr Motsjonov
вторник, 5 июля 2011 г.
Lisp’style code with JSOr how to make JavaScript ugly ...
Lisp’
by Aleksandr Motsjonov
вторник, 5 июля 2011 г.
Lisp’style code with JSOr how to make JavaScript ugly ...
Scheme’
by Aleksandr Motsjonov
вторник, 5 июля 2011 г.
Douglas Crockford
вторник, 5 июля 2011 г.
Douglas Crockford
вторник, 5 июля 2011 г.
Douglas Crockford
вторник, 5 июля 2011 г.
Douglas Crockford
• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.
вторник, 5 июля 2011 г.
Douglas Crockford
• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.
• Every time you declare a variable in the global scope, Douglas Crockford kills a kitten.
вторник, 5 июля 2011 г.
Douglas Crockford
• There is only one necessary global, and that is Douglas Crockford
• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.
• Every time you declare a variable in the global scope, Douglas Crockford kills a kitten.
вторник, 5 июля 2011 г.
Douglas Crockford
• There is only one necessary global, and that is Douglas Crockford
• JohnResig == awesome, but DouglasCrockford === awesome
• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.
• Every time you declare a variable in the global scope, Douglas Crockford kills a kitten.
вторник, 5 июля 2011 г.
Douglas Crockford
• There is only one necessary global, and that is Douglas Crockford
• JohnResig == awesome, but DouglasCrockford === awesome
• “I’m your father, John”
• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.
• Every time you declare a variable in the global scope, Douglas Crockford kills a kitten.
вторник, 5 июля 2011 г.
Douglas Crockford
• There is only one necessary global, and that is Douglas Crockford
• JohnResig == awesome, but DouglasCrockford === awesome
• “I’m your father, John”
• In truth there exists no anonymous functions in JavaScript because Douglas Crockford loves and names all of his children.
• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.
• Every time you declare a variable in the global scope, Douglas Crockford kills a kitten.
вторник, 5 июля 2011 г.
Douglas Crockford
• There is only one necessary global, and that is Douglas Crockford
• JohnResig == awesome, but DouglasCrockford === awesome
• “I’m your father, John”
• In truth there exists no anonymous functions in JavaScript because Douglas Crockford loves and names all of his children.
• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.
• Every time you declare a variable in the global scope, Douglas Crockford kills a kitten.JavaScript Guru!
вторник, 5 июля 2011 г.
вторник, 5 июля 2011 г.
вторник, 5 июля 2011 г.
« ... it did a remarkable thing: It could teach you to think recursively »
вторник, 5 июля 2011 г.
« ... it did a remarkable thing: It could teach you to think recursively »
« ... all of the functions in The Little Schemer can be wr i t t en i n JavaScript. »
вторник, 5 июля 2011 г.
« ... it did a remarkable thing: It could teach you to think recursively »
« ... all of the functions in The Little Schemer can be wr i t t en i n JavaScript. »
«So get a copy of The Little Schemer and start recursing ... »
вторник, 5 июля 2011 г.
« ... it did a remarkable thing: It could teach you to think recursively »
« ... all of the functions in The Little Schemer can be wr i t t en i n JavaScript. »
«So get a copy of The Little Schemer and start recursing ... »
And so I did ...
вторник, 5 июля 2011 г.
Primitivescar, cdr, cons, null?, eq?, zero?
вторник, 5 июля 2011 г.
Primitivescar, cdr, cons, null?, eq?, zero?isNull, isEq, isZero
вторник, 5 июля 2011 г.
Primitives
car = function(list) { return list[0];};cdr = function(list) { return list.slice(1);};cons = function(atom, list) { var tmp = utils.copy_arr(list); tmp.splice(0, 0, atom); return tmp;};
car, cdr, cons, null?, eq?, zero?
isZero = function(number){ return number === 0;};isNull = function(list) { return list.length === 0;};isEq = function(o1, o2) { return o1 === o2;};
isNull, isEq, isZero
вторник, 5 июля 2011 г.
Primitives
car = function(list) { return list[0];};cdr = function(list) { return list.slice(1);};cons = function(atom, list) { var tmp = utils.copy_arr(list); tmp.splice(0, 0, atom); return tmp;};
car, cdr, cons, null?, eq?, zero?
isZero = function(number){ return number === 0;};isNull = function(list) { return list.length === 0;};isEq = function(o1, o2) { return o1 === o2;};
isNull, isEq, isZero
cond ?
вторник, 5 июля 2011 г.
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
(define member? (lambda (a lat) (cond ((null? lat) #f) (else (or (eq? (car lat) a) (member? a cdr(lat)))))))
(cond (question1 answer1) (question2 answer2) ... (else else_answer))
Cond
вторник, 5 июля 2011 г.
Cond if (question1){return answer1;}else if (question2){return answer2;} ... else {return else_answer;}
вторник, 5 июля 2011 г.
Cond if (question1){return answer1;}else if (question2){return answer2;} ... else {return else_answer;}
function isMember(a, lat){ if (isNull(lat)){ return false; }else{ return isEq(car(lat), a) || isMember(a, cdr(lat)); } }
вторник, 5 июля 2011 г.
Cond if (question1){return answer1;}else if (question2){return answer2;} ... else {return else_answer;}
function isMember(a, lat){ if (isNull(lat)){ return false; }else{ return isEq(car(lat), a) || isMember(a, cdr(lat)); } }
вторник, 5 июля 2011 г.
Cond
вторник, 5 июля 2011 г.
Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))
вторник, 5 июля 2011 г.
Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))
cond((question1 answer1) (question2 answer2) ... (else else_answer))
вторник, 5 июля 2011 г.
Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))
cond((question1 answer1) (question2 answer2) ... (else else_answer))
cond([question1 answer1] [question2 answer2] ... [else else_answer])
вторник, 5 июля 2011 г.
Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))
cond((question1 answer1) (question2 answer2) ... (else else_answer))
cond([question1 answer1] [question2 answer2] ... [else else_answer])
cond([question1,answer1], [question2,answer2], ... [else, else_answer])
вторник, 5 июля 2011 г.
Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))
cond((question1 answer1) (question2 answer2) ... (else else_answer))
cond([question1 answer1] [question2 answer2] ... [else else_answer])
cond([question1,answer1], [question2,answer2], ... [else, else_answer])
cond([question1,answer1], [question2,answer2], ... [else_answer])
вторник, 5 июля 2011 г.
Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))
cond((question1 answer1) (question2 answer2) ... (else else_answer))
cond([question1 answer1] [question2 answer2] ... [else else_answer])
cond([question1,answer1], [question2,answer2], ... [else, else_answer])
cond([question1,answer1], [question2,answer2], ... [else_answer])
cond([question1,answer1], [question2,answer2], ... else_answer)
вторник, 5 июля 2011 г.
Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))
cond((question1 answer1) (question2 answer2) ... (else else_answer))
cond([question1 answer1] [question2 answer2] ... [else else_answer])
cond([question1,answer1], [question2,answer2], ... [else, else_answer])
cond([question1,answer1], [question2,answer2], ... [else_answer])
cond([question1,answer1], [question2,answer2], ... else_answer)
function isMember(a, lat) { return cond( [isNull(lat), false], or( isEq(a, car(lat)), isMember(a, cdr(lat)) ) );
вторник, 5 июля 2011 г.
Cond
function isMember(a, lat) { return cond( [isNull(lat), false], function() { return or(isEq(a, car(lat)), isMember(a, cdr(lat)) ); } );};
вторник, 5 июля 2011 г.
Cond
function isMember(a, lat) { return cond( [isNull(lat), false], function() { return or(isEq(a, car(lat)), isMember(a, cdr(lat)) ); } );};
function isMember(a, lat) { return cond( [isNull(lat), false], function() { return or(isEq(a, car(lat)), isMember(a, cdr(lat)) ); } );};
вторник, 5 июля 2011 г.
Condfunction cond() { var args = utils.copy_arr(arguments), i = 0; for (; i < args.length; i++) { if(utils.is_array(args[i])){ if (args[i].length == 1) { return de(args[i][0]); } else if (args[i].length == 2) { if (de(args[i][0])) { return de(args[i][1]); } } else { //throw exception; } }else{ return de(args[i]); } }};
function de(obj) { return utils.is_function(obj) ? obj() : obj;}
вторник, 5 июля 2011 г.
Example
function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
вторник, 5 июля 2011 г.
Example
function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
вторник, 5 июля 2011 г.
Example
function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
вторник, 5 июля 2011 г.
Examplefunction insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond ( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
вторник, 5 июля 2011 г.
Examplefunction insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond ( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
function insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
вторник, 5 июля 2011 г.
Examplefunction insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond ( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
function insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
function insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond ( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
вторник, 5 июля 2011 г.
Examplefunction insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond ( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
function insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
function insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond ( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
function insertR(n, o, lat){ return cond( [is_null(lat), quote()], [function(){ return cond ( [or( is_number(car(lat)), is_atom(car(lat)) ), cond( [is_eqan(car(lat), o), function(){ return cons(insertR(n, o, cdr(lat)), n); }], function(){ return cons(car(lat), insertR(n, o, cdr(lat))); } ) ], function(){ return cons(insertR(n, o, car(lat)), insertR(n, o, cdr(lat))); } ); }] );};
вторник, 5 июля 2011 г.
function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
What if ...
вторник, 5 июля 2011 г.
function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
What if ...function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
вторник, 5 июля 2011 г.
function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
What if ...function occur(a, lat){ return cond( [isNull(lat), 0], [isEqan(a, car(lat)), function(){ return add1(occur(a, cdr(lat))); }], function(){ return occur(a, cdr(lat)); } );};
# occur(a, lat){ cond( [isNull(lat), 0], [isEqan(a, car(lat)), #{ add1(occur(a, cdr(lat))); }], #{ occur(a, cdr(lat)); } );};
вторник, 5 июля 2011 г.
I am done. Thx!# occur(a, lat){ cond( [isNull(lat), 0], [isEqan(a, car(lat)), #{ add1(occur(a, cdr(lat))); }], #{ occur(a, cdr(lat)); } );};
вторник, 5 июля 2011 г.