Поиск функционального программирования Lexicon
Знание argot поля помогает мне много, тем более что это позволяет мне разумно общаться с теми, кто знает намного больше, чем я, поэтому я хотел бы найти хороший лексикон функциональных терминов программирования.
Например, я неоднократно сталкиваюсь с ними: Functor, Arrow, Category, Kleisli, Monad, Monoid, настоящий зоопарк морфизмов и т.д. Я также замечаю, что многие из них появляются с префиксами, такими как "ковариант", "со-", "endo-" и т.д.
Из них я могу сказать, что я действительно понимаю Моноид и Ковариант и вроде бы получаю Монаду, но все остальное по-прежнему тарабарщино для меня. (Обратите внимание, что я не имею в виду этот список как исчерпывающий, и я не хочу, чтобы эти определенные или описанные для меня здесь, я ищу учебные ресурсы.)
Может ли кто-нибудь указать мне на лексику FP? Это не обязательно быть в режиме онлайн, пока можно найти его (и это не редкий том, за который мне придется заплатить много десятков долларов).
Ответы
Ответ 1
Как указывали другие ответы, чтобы действительно понять эти термины, вы должны изучить теорию категорий. Однако теория категорий очень абстрактна и может не помочь вам быстро создать интуицию. Чтобы увидеть абстрактные концепции в действии, я настоятельно рекомендую Typeclassopedia (PDF) (объявление в блоге).
Ответ 2
Это не функционально-программируемые термины; это термины из теории категорий. Это правда, что несколько элитных функциональных программистов, похоже, используют теорию категорий, чтобы получить представление о функциональном программировании (Коналл Эллиотт, Ральф Хинзе, Чанг-Чие Шан, позвоните в офис), но эти люди находятся в меньшинстве. Что касается этих терминов, я боролся с книгой Пирса, но я не знаю лучшего источника, хотя Dan Piponi содержит много связанных материалов по его блог; Я призываю вас посмотреть там. ( 2012 обновление. У Гарольда Симмонса есть новая книга по теории категорий, которая выглядит неплохо, и она была очень хорошо рассмотрена Computing Reviews [за платой]. Единственная жалоба заключается в том, что все примеры из математике, а не вычислениям.)
Некоторые слова, которые вы можете услышать от функциональных прогеммеров: "функция карты", "функция сгиба", "функция более высокого порядка", "программирование без точек", "тип суммы", "тип продукта", "катаморфизм", "Церковное кодирование", "расчет программ", "программирование по типу", "правильный хвостовой вызов", "накопление параметра". Я не знаю хорошего лексикона, собранного в одном месте. Книга Грэма Хаттона "Программирование в Хаскелле" может быть местом для начала или более старой книгой Ричарда Берда и Фила Вадлера.
Ответ 3
Многие из терминов, которые вы использовали в качестве примера, из теории категорий, и лучший ресурс, который я знаю в этих обстоятельствах, - это Бенджамин Пирс "Теория основных категорий для компьютерных ученых"