+ All Categories
Home > Technology > Lisp'styled JavaScript

Lisp'styled JavaScript

Date post: 18-Dec-2014
Category:
Upload: aleksandr-motsjonov
View: 1,768 times
Download: 0 times
Share this document with a friend
Description:
It's about a way of coding in JavaScript in the most Functional style without any kind of sugar.Video is here:http://www.devclub.eu/2011/07/04/lisp-like-javascript/ (it's in Russian)
60
Lisp’ style code with JS Lisp’ by Aleksandr Motsjonov вторник, 5 июля 2011 г.
Transcript
Page 1: Lisp'styled JavaScript

Lisp’style code with JSLisp’

by Aleksandr Motsjonov

вторник, 5 июля 2011 г.

Page 2: Lisp'styled JavaScript

Lisp’style code with JSOr «The Little JavaScripter»

Lisp’

by Aleksandr Motsjonov

вторник, 5 июля 2011 г.

Page 3: Lisp'styled JavaScript

Lisp’style code with JSOr how to make JavaScript ugly ...

Lisp’

by Aleksandr Motsjonov

вторник, 5 июля 2011 г.

Page 4: Lisp'styled JavaScript

Lisp’style code with JSOr how to make JavaScript ugly ...

Scheme’

by Aleksandr Motsjonov

вторник, 5 июля 2011 г.

Page 5: Lisp'styled JavaScript

Douglas Crockford

вторник, 5 июля 2011 г.

Page 6: Lisp'styled JavaScript

Douglas Crockford

вторник, 5 июля 2011 г.

Page 7: Lisp'styled JavaScript

Douglas Crockford

вторник, 5 июля 2011 г.

Page 8: Lisp'styled JavaScript

Douglas Crockford

• Everytime Douglas Crockford blinks his eyes, another IE6 instance is killed.

вторник, 5 июля 2011 г.

Page 9: Lisp'styled JavaScript

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 г.

Page 10: Lisp'styled JavaScript

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 г.

Page 11: Lisp'styled JavaScript

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 г.

Page 12: Lisp'styled JavaScript

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 г.

Page 13: Lisp'styled JavaScript

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 г.

Page 14: Lisp'styled JavaScript

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 г.

Page 15: Lisp'styled JavaScript

вторник, 5 июля 2011 г.

Page 16: Lisp'styled JavaScript

вторник, 5 июля 2011 г.

Page 17: Lisp'styled JavaScript

« ... it did a remarkable thing: It could teach you to think recursively »

вторник, 5 июля 2011 г.

Page 18: Lisp'styled JavaScript

« ... 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 г.

Page 19: Lisp'styled JavaScript

« ... 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 г.

Page 20: Lisp'styled JavaScript

« ... 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 г.

Page 21: Lisp'styled JavaScript

Primitivescar, cdr, cons, null?, eq?, zero?

вторник, 5 июля 2011 г.

Page 22: Lisp'styled JavaScript

Primitivescar, cdr, cons, null?, eq?, zero?isNull, isEq, isZero

вторник, 5 июля 2011 г.

Page 23: Lisp'styled JavaScript

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 г.

Page 24: Lisp'styled JavaScript

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 г.

Page 25: Lisp'styled JavaScript

(cond (question1 answer1) (question2 answer2) ... (else else_answer))

Cond

вторник, 5 июля 2011 г.

Page 26: Lisp'styled JavaScript

(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 г.

Page 27: Lisp'styled JavaScript

(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 г.

Page 28: Lisp'styled JavaScript

(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 г.

Page 29: Lisp'styled JavaScript

(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 г.

Page 30: Lisp'styled JavaScript

(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 г.

Page 31: Lisp'styled JavaScript

(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 г.

Page 32: Lisp'styled JavaScript

(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 г.

Page 33: Lisp'styled JavaScript

(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 г.

Page 34: Lisp'styled JavaScript

(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 г.

Page 35: Lisp'styled JavaScript

(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 г.

Page 36: Lisp'styled JavaScript

Cond if (question1){return answer1;}else if (question2){return answer2;} ... else {return else_answer;}

вторник, 5 июля 2011 г.

Page 37: Lisp'styled JavaScript

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 г.

Page 38: Lisp'styled JavaScript

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 г.

Page 39: Lisp'styled JavaScript

Cond

вторник, 5 июля 2011 г.

Page 40: Lisp'styled JavaScript

Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))

вторник, 5 июля 2011 г.

Page 41: Lisp'styled JavaScript

Cond(cond (question1 answer1) (question2 answer2) ... (else else_answer))

cond((question1 answer1) (question2 answer2) ... (else else_answer))

вторник, 5 июля 2011 г.

Page 42: Lisp'styled JavaScript

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 г.

Page 43: Lisp'styled JavaScript

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 г.

Page 44: Lisp'styled JavaScript

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 г.

Page 45: Lisp'styled JavaScript

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 г.

Page 46: Lisp'styled JavaScript

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 г.

Page 47: Lisp'styled JavaScript

Cond

function isMember(a, lat) { return cond( [isNull(lat), false], function() { return or(isEq(a, car(lat)), isMember(a, cdr(lat)) ); } );};

вторник, 5 июля 2011 г.

Page 48: Lisp'styled JavaScript

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 г.

Page 49: Lisp'styled JavaScript

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 г.

Page 50: Lisp'styled JavaScript

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 г.

Page 51: Lisp'styled JavaScript

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 г.

Page 52: Lisp'styled JavaScript

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 г.

Page 53: Lisp'styled JavaScript

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 г.

Page 54: Lisp'styled JavaScript

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 г.

Page 55: Lisp'styled JavaScript

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 г.

Page 56: Lisp'styled JavaScript

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 г.

Page 57: Lisp'styled JavaScript

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 г.

Page 58: Lisp'styled JavaScript

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 г.

Page 59: Lisp'styled JavaScript

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 г.

Page 60: Lisp'styled JavaScript

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 г.


Recommended