Haskell предоставляет стандартный класс типов «Альтернативный», который эффективно предоставляет оператор <|>
для любого типа, который также является аппликативным.
Насколько я понимаю, альтернатива считается моноидом для аппликативных, однако оператор <|>
, кажется, имеет смысл во многих типах, которые также не являются аппликативными функторами, и нет необходимости в какой-либо конкретной зависимости от класса аппликативных типов. чтобы он работал правильно.
Есть ли причина, по которой Alternative должен быть подклассом Applicative, и если да, то существует ли стандартный класс типов для определения аналогичной функциональности для неаппликативных типов?
Monoid
будет классом для неаппликативных типов. - person Lee   schedule 27.05.2015Monoid
- это класс типов, аAlternative
- класс конструкторов типов. Я хотел бы иметь локальные количественные ограничения на конструкторы типов, такие как(forall a. Monoid f a)
, но это не разрешено. - person pigworker   schedule 27.05.2015<|>
— это Pick или ore другой, который несколько отличается отmconcat
? - person James Davies   schedule 27.05.2015