В частности, можете ли вы перегрузить встроенный дисплей схемы схемы?Схема: перегрузка встроенных процедур, общая перегрузка
В целом, как вы можете перегрузить любую процедуру на Схеме?
В частности, можете ли вы перегрузить встроенный дисплей схемы схемы?Схема: перегрузка встроенных процедур, общая перегрузка
В целом, как вы можете перегрузить любую процедуру на Схеме?
У схемы нет перегрузки на основе типов a`la Java/C++, она динамически типизирована, поэтому это не имеет смысла.
Вы можете сделать несколько вещей, хотя:
Вы можете перегрузить на основе структуры аргументов:
(define overload1
(case-lambda
((x y) (+ x y))
((x y z) (+ (- x y) z))))
Это на самом деле не поможет вам, хотя с display
только собирается взять один аргумент ни на что.
(define (overload-kinda x)
(cond
((list? x) (do-list x))
((symbol? x) (do-sym x))
;etc
))
Это хакеры, но иногда они необходимы.
Мой обычный подход функции высшего порядка и случай лямбда
(define my-display
(case-lambda
((x) (display x))
((x f) (display (f x)))))
Теперь, если нам нужно специальное лечение для отображения все, что мы пройти в функции, чтобы сделать его.