Ну, на самом деле есть несколько библиотек сопоставления с образцами, написанных для Clojure. Макросы Clojure делают подобные вещи возможными. Matchure является одним из самых последних. Есть даже кое-что для ADT в contrib .
Не обращая внимания на эти вещи, самое близкое, что у нас есть к ADT Haskell в ядре Clojure, - это новые записи и типы данных в Clojure 1.2. Но если вам не нужны преимущества, которые дает использование записи или типа данных, вы обычно просто используете карту. Clojure - это динамический язык, поэтому вы не будете получать статическую проверку типов, если будете использовать запись и так далее.
Clojure имеет «деструктуризацию», которая напоминает сопоставление с образцом и часто используется в идиоматическом Clojure. См. это и это . Первый действительно ваш ответ здесь, на SO. ; Р