Skip to content

Commit ad804cf

Browse files
committed
y-combinator update
1 parent 3990c95 commit ad804cf

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

src/little-schemer/y-combinator.scm

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,3 +266,105 @@
266266
(add1 (length (cdr l))))))))
267267

268268
(Y mk-length) = length
269+
270+
271+
; try to expand it
272+
273+
(Y mk-length)
274+
275+
((lambda (le)
276+
((lambda (mk-length)
277+
(mk-length mk-length))
278+
(lambda (mk-length)
279+
(le
280+
(lambda (x)
281+
((mk-length mk-length) x))))))
282+
(lambda (length)
283+
(lambda (l)
284+
(cond ((null? l) 0)
285+
(else
286+
(add1 (length (cdr l))))))))
287+
288+
; expand
289+
((lambda (mk-length)
290+
(mk-length mk-length))
291+
(lambda (mk-length)
292+
((lambda (length)
293+
(lambda (l)
294+
(cond ((null? l) 0)
295+
(else
296+
(add1 (length (cdr l)))))))
297+
(lambda (x)
298+
((mk-length mk-length) x)))))
299+
300+
; expand
301+
302+
((lambda (mk-length)
303+
((lambda (length)
304+
(lambda (l)
305+
(cond ((null? l) 0)
306+
(else
307+
(add1 (length (cdr l)))))))
308+
(lambda (x)
309+
((mk-length mk-length) x))))
310+
(lambda (mk-length)
311+
((lambda (length)
312+
(lambda (l)
313+
(cond ((null? l) 0)
314+
(else
315+
(add1 (length (cdr l)))))))
316+
(lambda (x)
317+
((mk-length mk-length) x)))))
318+
319+
; expand
320+
321+
((lambda (length)
322+
(lambda (l)
323+
(cond ((null? l) 0)
324+
(else
325+
(add1 (length (cdr l)))))))
326+
(lambda (x)
327+
(((lambda (mk-length)
328+
((lambda (length)
329+
(lambda (l)
330+
(cond ((null? l) 0)
331+
(else
332+
(add1 (length (cdr l)))))))
333+
(lambda (x)
334+
((mk-length mk-length) x))))
335+
(lambda (mk-length)
336+
((lambda (length)
337+
(lambda (l)
338+
(cond ((null? l) 0)
339+
(else
340+
(add1 (length (cdr l)))))))
341+
(lambda (x)
342+
((mk-length mk-length) x)))))
343+
x)))
344+
345+
; expand
346+
347+
(lambda (l)
348+
(cond ((null? l) 0)
349+
(else
350+
(add1 ((lambda (x)
351+
(((lambda (mk-length)
352+
((lambda (length)
353+
(lambda (l)
354+
(cond ((null? l) 0)
355+
(else
356+
(add1 (length (cdr l)))))))
357+
(lambda (x)
358+
((mk-length mk-length) x))))
359+
(lambda (mk-length)
360+
((lambda (length)
361+
(lambda (l)
362+
(cond ((null? l) 0)
363+
(else
364+
(add1 (length (cdr l)))))))
365+
(lambda (x)
366+
((mk-length mk-length) x)))))
367+
x))
368+
(cdr l))))))
369+
370+
; that's it.

0 commit comments

Comments
 (0)