LINUX.ORG.RU

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

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

Зато можно сгенерить последовательность (+), (+ 1), (+ 1 1), (+ 1 1 1) длиной с какой-нибудь список.

Как это можно сделать на этапе раскрутки макроса, а не в рантайме? Хотя я и в рантайме это пока не придумал.

И вообще, более Scheme-way...

Да, это будет правильно. Еще более scheme-way наверное будет так:

(define string-prefix?
  (case-lambda
    ((prefix str)
     (string-prefix? prefix str 0))
    ((prefix str start1)
     (string-prefix? prefix str start1 (string-length prefix)))
    ((prefix str start1 end1)
     (string-prefix? prefix str start1 end1 0))
    ((prefix str start1 end1 start2)
     (string-prefix? prefix str start1 end1 start2 (string-length str)))
    ((prefix str start1 end1 start2 end2)
     ('procedure-body)))

Я так пробовал сделать, но до макроса дело не дошло, потому что скорость не понравилась.

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

Зато можно сгенерить последовательность (+), (+ 1), (+ 1 1), (+ 1 1 1) длиной с какой-нибудь список.

Как это можно сделать на этапе раскрутки макроса, а не в рантайме? Хотя я и в рантайме это пока не придумал.

И вообще, более Scheme-way...

Да, это будет правильно. Еще более scheme-way наверное будет так:

(define string-prefix?
  (case-lambda
    ((prefix str)
     (string-prefix? prefix str 0))
    ((prefix str start1)
     (string-prefix? prefix str start1 (string-length prefix)))
    ((prefix str start1 end1)
     (string-prefix? prefix str start1 end1 0))
    ((prefix str start1 end1 start2)
     (string-prefix? prefix str start1 end1 start2 (string-length str)))
    ((prefix str start1 end1 start2 end2)
     ('procedure-body)))

Я так пробовал сделать, но до макроса дело не дошло, потому что скорость не понравилась.