Существуют ли человекоподобные имена для аппликативных (и друзей) методов?
В последнее время я использую аппликативный (и альтернативный) честный бит, и одна вещь, которая меня расстраивала, - это отсутствие знаний о номенклатуре. В качестве примера я хотел бы сказать function name
вместо star thing
для <*>
. Таким образом, во многом так же, как >>=
читается bind
, существуют ли более человечные имена для следующего:
-
<*>
- применить?
-
<*
и *>
- применяются левые и правые?
-
<$>
- fmap?
-
<|>
а также стрелки
-
***
- split?
-
&&&
- разветвление?
Если есть имена для них, мои поиски не раскрыли их. Я понимаю, что для них могут быть не приняты условия, но если есть, я хотел бы их узнать.
Ответы
Ответ 1
Ну, <$>
является синонимом fmap
. Кроме того, название "аппликативный" заставляет меня думать о применении вещей. Поскольку <*>
является основным оператором для этого, я думаю, что я свободно связываю его со словом "apply". Контекст немного отличается от обычного приложения с функциями, поэтому может быть некоторая путаница с этим словом, но контекст обычно делает его достаточно ясным, поэтому он работает для меня. <*>
также является синонимом функции ap
из Control.Monad, поэтому это подтверждает мое использование слова "apply".
Brent Yorgey Typeclassopedia - это то, где я узнал большую часть этого. Это выдающийся ресурс.
Ответ 2
Обозначения взяты из Doaitse Swierstra и Luc Duponcheel: они уже идентифицировали этот интерфейс для комбинаторов синтаксического анализатора, и мы чувствовали, что важно уважать их выбор там, где это имело смысл. Я пытаюсь вспомнить, как Doaitse произносит их, но рисует пробел.
Я предпочитаю, чтобы их видели и не слышали. На самом деле, я предпочитаю, чтобы они не были замечены, следовательно скобки идиомы. Но особенно при определении экземпляра полезно иметь имена. Не то, чтобы это было для меня, чтобы назвать их: вся Идиома против Аппликации против добра - знает, что шантаниганы были увлекательным изучением власти. Для чего это стоит, на моем собственном языке
-
<*>
применяется (to) '(интерфейс "чистый и прикладной", как математика)
-
*>
игнорируется
-
<*
"игнорируется"
-
<$>
"отображается (поверх)"
-
<$
возможно, "после", но я не ужасно сознаю, что называю это чем-то.
Основные идеи: эффекты всегда соответствуют последовательности (независимо от того, что это означает) слева направо; $или * сообщают вам, что их левое является чистым или идиоматическим; шевроны сообщают вам о результирующем потоке данных, указывая только на сигнал.
Альтернативная схема произношения, на уровне от отдельных операторов, может перевести
f <$> a <*> b <* c <*> d
в 'IDIOM: f, a, b, NOISE c, d' или некоторые такие. Но это действительно чтение версии скобки
(|f a b (-c-) d|)
вслух.
Я нахожу "деньги" и "splat" забавными, но мы можем сделать так, чтобы выделять семантику по сравнению с синтаксисами.
Ответ 3
Ну, нет стандартных имен, но иногда они называются:
-
<*>
является "splat"
-
<$>
- это деньги.
такое, что:
f <$> g <*> x
произносится:
f `money` g `splat` x
Условия, возникшие у Тревора Эллиота и Эрика Мертенса, я полагаю.