LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Если питоном, то надо осознавать, что то, что в питоне называется списками, не является списками в смысле лиспа. И рекурсия там ограниченная.

Если

(define (length items)
  (define (length-iter a count)
    (if (null? a)
        count
        (length-iter (cdr a) (+ 1 count))))
  (length-iter items 0))

является эффективным решением, то эквивалент на питоне:

def length(items):
  def length_iter(a, count):
    if a == []:
      return count
    else:
      return length_iter(a[1:], 1+count)
  return length_iter(items, 0)

является примером того, как никогда не надо писать на питоне.

Исходная версия monk, :

Если питоном, то надо осознавать, что то, что в питоне называется списками, не является списками в смысле лиспа. И рекурсия там органиченная.

Если

(define (length items)
  (define (length-iter a count)
    (if (null? a)
        count
        (length-iter (cdr a) (+ 1 count))))
  (length-iter items 0))

является эффективным решением, то эквивалент на питоне:

def length(items):
  def length_iter(a, count):
    if a == []:
      return count
    else:
      return length_iter(a[1:], 1+count)
  return length_iter(items, 0)

является примером того, как никогда не надо писать на питоне.