Есть ли понятные человеку названия для аппликативных (и дружественных) методов?

В последнее время я довольно часто использую аппликативный (и альтернативный), и одна вещь, которая меня расстраивает, - это мое незнание номенклатуры. В качестве примера я хотел бы иметь возможность сказать function name вместо star thing для <*>. Итак, примерно так же, как >>= читается bind, есть ли более понятные для человека имена для следующих элементов:

  • <*> - подать заявку?
  • <* & *> - левое и правое применяются?
  • <$> - fmap?
  • <|>

и так же от стрел

  • *** - раскол?
  • &&& - фэнаут?

Если для них есть имена, мои поиски не обнаружили их. Я понимаю, что для них могут быть неприемлемые условия, но если они есть, я бы хотел их узнать.


person lukerandall    schedule 29.04.2011    source источник
comment
Я уже подробно высказал свое мнение относительно произношения (<*>), поэтому Я просто сделаю ссылку на это здесь, вместо того, чтобы повторяться ...   -  person C. A. McCann    schedule 30.04.2011
comment
Согласившись с camccann, <*> действительно является ap, хотя ясно, что <$> - это денежная функция.   -  person Don Stewart    schedule 30.04.2011


Ответы (3)


Ну, <$> - это синоним fmap. Кроме того, название «аппликатив» заставляет меня думать о применении вещей. Поскольку <*> является основным оператором для этого, я думаю, что ассоциирую его со словом «применить». Контекст немного отличается от обычного функционального приложения, поэтому с этим словом может возникнуть некоторая путаница, но контекст обычно достаточно ясен, так что у меня это работает. <*> также является синонимом функции ap из Control.Monad, так что это подтверждает мое использование слова «применить».

Больше всего я узнал из Typeclassopedia Брента Йорги. Это выдающийся ресурс.

person mightybyte    schedule 29.04.2011

Обозначения взяты от Доаитсе Свиерстра и Люка Дюпоншеля: они уже определили этот интерфейс для комбинаторов синтаксического анализатора, и мы сочли важным уважать их выбор там, где это было целесообразно. Я пытаюсь вспомнить, как их произносит Доаитсе, но у меня ничего не получается.

Я предпочитаю, чтобы их видели, а не слышали. На самом деле, я предпочитаю, чтобы их тоже не видели, поэтому скобки идиомы. Но особенно при определении экземпляра полезно иметь имена. Не то чтобы я их называл: вся Идиома против Аппликативного против бог знает чего махинаций была увлекательным исследованием власти. Для чего это стоит, на моем собственном языке

  • <*> 'применяется (к)' (интерфейс является 'чистым и применимым', как математика)
  • *> "игнорируется"
  • <* "игнорирует"
  • <$> 'нанесен на карту (поверх)'
  • <$, возможно, «после», но я не очень-то сознательно называю это как-нибудь

Ключевые идеи: эффекты всегда чередуются (что бы это ни значило) слева направо; $ или * говорят вам, что слева от них чисто или идиоматично; шевроны сообщают вам результирующий поток данных, указывая только на сигнал.

Альтернативная схема произношения, расположенная на уровне от отдельных операторов, может помочь в переводе

f <$> a <*> b <* c <*> d

на 'IDIOM: f, a, b, NOISE c, d' или что-то подобное. Но вот на самом деле читаю версию с скобками

(|f a b (-c-) d|)

вслух.

Я нахожу слова «деньги» и «сплат» забавными, но мы могли бы преуспеть, если бы мы поставили семантику выше проблем синтаксиса.

person Conor    schedule 01.05.2011
comment
Спасибо, Конор, за то, что написал статью обо всем этом (!) И за очень проницательный ответ. - person lukerandall; 02.05.2011

Ну, стандартных имен нет, но иногда их называют:

  • <*> - это "splat"
  • <$> это "деньги"

такой, что:

 f <$> g <*> x

произносится:

 f `money` g `splat` x

Я полагаю, что эти термины были придуманы Тревором Эллиоттом и Эриком Мертенсом.

person Don Stewart    schedule 29.04.2011
comment
Вероятно, не стоит отмечать, что splat и big money являются официальным произношением, указанным для операторов * и $ в исходном Справочном руководстве INTERCAL, которое, безусловно, является авторитетным источником, если я никогда не слышал о один. - person C. A. McCann; 30.04.2011
comment
Спасибо, как всегда, за полезный ответ. Трудно было принять только одно. - person lukerandall; 30.04.2011
comment
Я использую стихи Waka Waka Bang Splat и Hatless Atlas в качестве вдохновения для выяснения того, как произносить слова, но для более полной справки вы можете использовать Руководство по произношению таблиц ASCII: ascii-table.com/pronuction-guide.php - person aculich; 30.04.2011