11 и 2 работают отлично:
s="the sky is blue very blue"
s=s.lower()
slist = s.split()
print " ".join(sorted(set(slist), key=slist.index))
и 2
s="the sky is blue very blue"
s=s.lower()
slist = s.split()
print " ".join(sorted(set(slist), key=slist.index))
Ну, на самом деле для Clojure написано несколько библиотек сопоставления с образцом. Макросы Clojure делают это возможным. Matchure - одно из самых последних. Есть даже кое-что для ADT в contrib .
Не обращая внимания на это, самое близкое к ADT Haskell в ядре Clojure - это новые записи и типы данных в Clojure 1.2. Но если вам не нужны преимущества, которые дает использование записи или типа данных, вы обычно просто используете карту. Clojure - это динамический язык, поэтому вы не получите статической проверки типа, если вы используете запись и тому подобное.
Clojure имеет «деструктуризацию», которая напоминает сопоставление с образцом и часто используется в идиоматическом Clojure. См. это и это . Первый - ваш искренний ответ здесь, на SO. ; п
Я очень люблю треп как библиотеку сопоставления с образцом.
Наличие и ключевых слов, и символов упрощает реализацию варианта поверх библиотеки сопоставления с образцом.