Вы можете взять Полиморфизм a la carte as Полиморфизм по запросу.
Сообщество Clojure гордится тем, Некоторые из них являются:
Prototype-based polymorphism
Наследование Полиморфизм
Это стратегия полиморфизм используется Java. Clojure поддерживает это по доверенности. Полезно при выполнении Java-взаимодействия.
Протокол
Протокол к Clojure как к Haskell класса типов.
Многометодная
Хотя протоколы обеспечивают полиморфный отправка в зависимости от типа первого аргумента, мультиметоды гораздо более гибким, который может послать на основе любой функции (любые) аргументы метода.
полиморфизм порционный означает «Выберите любую стратегию полиморфизма лучше всего подходит для вашего случая. Они все в вашей панели инструментов.»
Вы можете реализовать шаблон TypeClass
в Scala, используя implicits. Прочтите Scalaz source, если вы хотите примеры из реального мира. Scala не поддерживает многоточие на уровне языка, но, я думаю, это возможно с помощью предстоящего макроса 2.10.
Что касается преимуществ, то передовые стратегии полиморфизма, такие как TypeClass и Multimethod, могут помочь решить проблему Expression Problem.
«Цель состоит в том, чтобы определить тип данных по делам, где можно добавлять новые случаи к типу данных и новых функций по сравнению с типом данных, без перекомпиляции существующего кода, и сохраняя при этом статическую безопасность типов (например, не слепки) ».
BTW, этот вопрос слишком велик, чтобы вписаться в один вопрос StackOverflow. Мое предложение - познакомиться с этими понятиями, и тогда вы поймете их полезность.
Упоминается с 45:37 – Abdull