Замена Clojure для ADT Haskell и сопоставления с образцом?

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))
15
задан Erik Allik 2 August 2019 в 15:06
поделиться

3 ответа

Ну, на самом деле для Clojure написано несколько библиотек сопоставления с образцом. Макросы Clojure делают это возможным. Matchure - одно из самых последних. Есть даже кое-что для ADT в contrib .

Не обращая внимания на это, самое близкое к ADT Haskell в ядре Clojure - это новые записи и типы данных в Clojure 1.2. Но если вам не нужны преимущества, которые дает использование записи или типа данных, вы обычно просто используете карту. Clojure - это динамический язык, поэтому вы не получите статической проверки типа, если вы используете запись и тому подобное.

Clojure имеет «деструктуризацию», которая напоминает сопоставление с образцом и часто используется в идиоматическом Clojure. См. это и это . Первый - ваш искренний ответ здесь, на SO. ; п

10
ответ дан 1 December 2019 в 04:17
поделиться

Посмотрите на соответствие - она ​​должна быть включена в clojure-contrib в ближайшее время

2
ответ дан 1 December 2019 в 04:17
поделиться

Я очень люблю треп как библиотеку сопоставления с образцом.

Наличие и ключевых слов, и символов упрощает реализацию варианта поверх библиотеки сопоставления с образцом.

0
ответ дан 1 December 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: