Подстановка переменных в сопоставлении с образцом?

Это потому, что дизайнеры Haskell ошиблись! Я никогда не видел учебник по математике, в котором упоминается порядок логических значений. Просто потому, что они могут быть, это не значит, что следует. Некоторые из нас используют Haskell именно потому, что во многих случаях он запрещает / защищает нас от смущающих / бессмысленных вещей, но не в этом.

instance Ord Bool заставляет a => b означать то, что вы ожидаете, что a <= b будет означать!

Более ранние аргументы в пользу instance Ord Bool, где вы можете сделать больше типов неявно сопоставимыми. Продолжая эту линию аргументации, некоторые, возможно, захотят сделать все типы сопоставимыми неявно и даже иметь слабую динамическую типизацию и вообще пропустить классы типов. Но мы хотим, чтобы строгая типизация в точности запрещала то, что явно не правильно, и instance Ord Bool побеждает эту цель.

Что касается аргумента, что Bool является ограниченной решеткой. В отличие от boolean: = {True, False}, в Haskell мы имеем Bool: = {True, False, bottom} больше не является ограниченной решеткой, поскольку ни True, ни False не являются элементами идентичности в представлении bottom. Это связано с обсуждением комментариев & amp; & amp; против мин и т. д.

1
задан user121155 11 June 2009 в 17:55
поделиться

3 ответа

Нет ничего удивительного в том, что вы используете алгоритм O (N), где простой хеш-таблицей будет O (1). В хэш-таблице для каждого значения атрибута будет храниться соответствующий атрибут.

0
ответ дан 3 September 2019 в 01:28
поделиться

Я заметил, что вы не использовали слово объединение где-либо в своем сообщении. Так обычно называется алгоритм, который вы пытаетесь реализовать. Прочтите статью Википедии ; внизу есть несколько ссылок… в том числе одна из 70-х, когда имели значение пробелы и циклы.

2
ответ дан 3 September 2019 в 01:28
поделиться

eduffy has it: this is called unification. Prolog is a programming language designed to do exactly what you're trying to do, in the general case, and it uses unification to do its dirty work.

However, anyone who's tried to implement arithmetic using Peano axioms in Prolog can tell you it doesn't always get there the fastest way possible. There are "constraint programming" languages that do roughly the same thing but with an emphasis on providing heuristics to help the solver find optimal solutions as quickly as possible. One of them is Comet.

0
ответ дан 3 September 2019 в 01:28
поделиться
Другие вопросы по тегам:

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