Каковы «настоящие» имена операторов Haskell Arrow?

В 1998 году Джон Хьюз предложил класс типа Arrow для Haskell в этой статье. . Этот класс типов поставляется с рядом операторов, которые не являются буквенно-цифровыми, например *** и &&&. Однако он не дает произносимых имен для этих операторов.

В классе типов Haskell Monad происходит то же самое с >>=, которое произносится как bind.

Мой вопрос заключается в том, как произносить операторы Arrow *** и &&&. Или у них даже есть произносимые имена? Как хаскеллеры обращаются к этим операторам в разговорах?


person RvanHeest    schedule 24.06.2016    source источник
comment
Хотя предлагаемый дубликат спрашивает о *** и &&&, ни один из ответов на этот вопрос не касается их. Однако автор вопроса предполагает, что вы могли бы подумать над ответом.   -  person chepner    schedule 24.06.2016
comment
Я голосую за закрытие этого вопроса, потому что это вопрос, основанный на мнении, а не вопрос программирования.   -  person cigien    schedule 13.11.2020


Ответы (1)


Control.Arrow называет их «разделенными» и «разветвленными». Это самое близкое, что вы получите для официальных имен.

Однако в конкретном случае со стрелами я склонен думать о них как о фабричных машинах, соединенных с конвейерными лентами. Это дает вам очень богатый словарный запас, если вы начнете с определения фонем (не обязательно фактических функций).

belt = id
pipe-into = (.)
dupe = belt &&& belt
next-to = (***)
process-with = arr

В этом словаре вы произносите first a как «a рядом с belt», а second a как «belt рядом с a», а a &&& b становится «dupe вставленным в (a рядом с b)».

Это также дает хорошую визуализацию ArrowApply; фабричные машины могут ArrowApply, когда есть какая-то машина, которая принимает две конвейерные ленты: одну для других машин и одну для объектов, которые помещаются в первую машину. Эта машина помещает входящий объект во входящую машину, излучает то, что излучает первая машина, а затем отбрасывает машину.

Это также дает менее приятную визуализацию ArrowLoop с точки зрения предоставления фабрике волшебного ящика, а затем постепенного обращения к фабрике с просьбой зафиксировать некоторую структуру того, что находится внутри волшебного ящика (возможно, предоставляя больше волшебных ящиков для использования), затем сделать зафиксированную структуру волшебным образом доступной, когда коробка открыта.

person CR Drost    schedule 24.06.2016