Когда я узнал о Control.Arrow
и встроенной нотации Haskell proc
, у меня возникла мысль, что этот язык может оказаться очень полезным в качестве eDSL для общих моноидальных категорий (используя ***
для тензора и >>>
для композиции), если бы только класс типов Arrow
был обобщен, чтобы разрешить общую операцию tens :: * -> * -> *
, а не Arrow
* (,) : * -> * -> *
.
После некоторых исследований я обнаружил GArrows
, которые, кажется, соответствуют моим потребностям.Однако связанный класс типов Garrow
поставляется в комплекте с так называемыми расширениями GHC "HetMet" и поддержкой других функций, которые (пока, во всяком случае), мне не особо нужны, такие как "модальные типы"".
Учитывая, что я хотел бы иметь возможность использовать такой класс типов GArrow
без необходимости установки нестандартных расширений GHC:
Существует ли фактическая(несколько стандартизированная) библиотека в Hackage, которая отвечает моим потребностям в таком обобщенном классе типов стрелок?
Учитывая такую библиотеку, есть ли способ использовать такой класс типа GArrow
с"обобщенное proc
" обозначение без необходимости создавать собственное расширение GHC?(Возможно, с RebindableSyntax
)
Примечание: Кроме того, я в порядке с использованием квазиквотации для обобщенной записи proc
.Поэтому, возможно, было бы не сложно изменить что-то вроде this в соответствии с моими потребностями.