Haskell предоставляет стандартный класс "Альтернатива", который эффективно предоставляет оператор <|>
для любого типа, который также является аппликативным.
Как я понимаю, альтернатива считается моноидом на аппликативной, однако оператор <|>
, кажется, имеет смысл во многих типах, которые также не являются аппликативными функторами, и нет необходимости в каких-либо конкретных зависимость от Applicative typeclass для правильной работы.
Есть ли причина, по которой Alternative должна быть подклассом Applicative, и если это так, есть стандартный класс типов для определения аналогичной функциональности для неадаптивных типов?