История изменений
Исправление
MOPKOBKA,
(текущая версия)
:
Что бы выяснить, на скриптухе ты пишешь, или на настоящем языке, я же об этом в посте написал.
Ну если ты хочешь более реального примера, то пусть будут ленивые cons-ячейки, = ленивый список.
def cons(car, cdr):
return lambda: [car, cdr]
def car(cons):
if (x := cons()) is None: return None
else:
(car, _) = x
return car
def cdr(cons):
if (x := cons()) is None: return None
else:
(_, cdr) = x
return cdr
def map(f, l):
if (x := l()) is None: return None
else:
(hd, tl) = x
return lambda: (f(hd), map(f, tl))
def slow(x):
print("slow calculation...", x)
return x * 2
x = cons(1, cons(2, cons(3, cons(4, cons(5, cons(6, None))))))
y = map(slow, x)
car(cdr(cdr(y)))
Вывод
slow calculation... 1
slow calculation... 2
slow calculation... 3
Исходная версия
MOPKOBKA,
:
Что бы выяснить, на скриптухе ты пишешь, или на настоящем языке, я же об этом в посте написал.
Ну если ты хочешь более реального примера, то пусть будут ленивые cons-ячейки, = ленивый список.
def cons(car, cdr):
return lambda: [car, cdr]
def car(cons):
if (x := cons()) is None: return None
else:
(car, _) = x
return car
def cdr(cons):
if (x := cons()) is None: return None
else:
(_, cdr) = x
return cdr
def map(f, l):
if (x := l()) is None: return None
else:
(hd, tl) = x
return lambda: (f(hd), map(f, tl))
def slow(x):
print("slow calculation...", x)
return x * 2
x = cons(1, cons(2, cons(3, cons(4, cons(5, cons(6, None))))))
y = map(slow, x)
car(cdr(cdr(y)))
Вывод
slow calculation... 1
slow calculation... 2
slow calculation... 3