Jussi Piitulainen
11/7/2015 1:47:00 PM
Pascal J. Bourguignon writes:
> Yes, but it would be useless to switch to python, it won't be easier
> to understand it in python:
>
> def our_member(obj,lst) :
> if []==lst :
> return []
> else :
> if lst[0]==obj :
> return lst
> else :
> return our_member(obj,lst[1:])
>
> our_member(3,[1,2,3,4,5])
> --> [3,4,5]
>
> Is it any clearer?
Python:
cons = lambda a, d : (a, d)
car = lambda p : p[0]
cdr = lambda p : p[1]
member = (lambda obj, lst:
lst and (lst if obj == car(lst) else member(obj, cdr(lst))))
datumi = cons(1, cons(1, cons(2, cons(3, ()))))
print('#', member(1, datumi))
print('#', member(2, datumi))
print('#', member(3, datumi))
print('#', member(4, datumi))
# C-u M-! python3 cons.py RET
# (1, (1, (2, (3, ()))))
# (2, (3, ()))
# (3, ())
# ()
--
....