История изменений
Исправление 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)))
Я так пробовал сделать, но до макроса дело не дошло, потому что скорость не понравилась.