2009-07-27 2 views
12

Прежде всего, тупой заголовок непосредственно ссылается этот документ:Практическое применение «Бананы, линзы, конверты и колючая проволока»?

http://eprints.eemcs.utwente.nl/7281/01/db-utwente-40501F46.pdf

Я понимаю теоретическое значение этого, как она моделирует большинство, если не все, программирование семантики.

Какие проблемы наиболее эффективно и практически решаются с помощью парадигмы программирования, основанной на этом? Какие проблемы нет?

Представьте, что все программы написаны там, где 80% всей логики связаны с этими операторами. Интересно, может ли язык, который принудил операторов к пользователю использовать их структуру ...

+2

Не знаю _what_ Я имею в виду делать с файлом PostScript. У вас нет портативного принтера PostScript. –

+2

вы можете предоставить PDF-версию или html-версию этой статьи, так как читать многословную запись на многих компьютерах непросто. –

+3

Ваш читатель PDF не может читать постскриптум? Время переходить на компьютер с некоторого времени после 1950 года, говорит. – jrockway

ответ

15

Настоящая статья является одной из длинной серии связанных теоретических исследований. Область исследований - это то, что функциональные программисты называют общим программированием (что смутно отличается от того, что программисты на C++ называют общим программированием). Идея заключается в том, что вы пишете свои функции таким образом, чтобы при определении нового типа данных вы определяли , и вы автоматически получаете новый код для этого:. Классической проблемой, которую люди хотели бы решить таким образом, является запись изображения данных на диск и последующее считывание изоморфных данных с образа диска.

Если вы хотите почувствовать практическое применение этих идей, я рекомендую отличную бумагу Ральфа Хинзе Generics for the Masses, в которой показано, как вы можете попробовать все эти дурацкие идеи простым языком Haskell. Например, я использовал эти методы для реализации замещения, избегающего замещения для очень сложных промежуточных языков внутри компиляторов.

Ральф написал ряд хороших статей по универсальному программированию, как и Джереми Гиббонс. Их материал не так далеко, как бананы, линзы и т. Д.

+0

Отлично! Спасибо за бумажную ссылку. Хотя, дженерики были не тем, что я выбрал «Бананы». Может быть, мне придется перепрограммировать повторно ... - перечитайте его и ищите. (Хотя, может быть, это было похоронено в части теории категорий, что я плохо понимаю.) –

+1

Теория категории заставляет мою голову болеть ... –

+0

Кажется, что ссылка, которую вы имеете на Generics for the Masses, мертва. Вот еще один: http://www.cs.ox.ac.uk/ralf.hinze/publications/Masses.pdf –

2

Это означает, что решения, которые могут быть смоделированы в одной парадигме, также могут быть смоделированы в другом, и что можно быть программным преобразованием в другое.

Теперь некоторые проблемы легче решить в одной парадигме, чем в другой. Кроме того, проще доказать свойства в одной парадигме, чем в другой. Поэтому, если вы можете показать такую ​​эквивалентность, вы откроете дверь для решения определенных проблем в более легкой, а затем превратите решение в нужную парадигму.

Это похоже на monads thingy. Большое дело в монадах - это не то, как вы пишете. Большое дело в них состоит в том, что существует множество теорем о монадах, которые могут быть применены после того, как вы уменьшите свою проблему до монады. Здесь применяется тот же принцип.

+0

Справа. Это относится ко всем парадигмам. (Я имею в виду, если бы я спрашивал об объектно-ориентированном программировании, это было бы верно). Но что я могу получить от этого? –

+1

Как программист или как исследователь? Как программист, ничего, действительно. Как исследователь ... ну, я не могу ответить на это. :-) –

Смежные вопросы