module Next.Pipe.Type ( {- * Type aliases -} Pipe, PipePlus, ) where import Next.Interface (Next, TerminableStream) import SupplyChain (Vendor (..)) {-| A 'Vendor' whose upstream and downstream interfaces are both 'Next' -} type Pipe action item1 item2 = Vendor (Next item1) (Next item2) action {-| Like 'Pipe', but with a more general upstream interface which can be anything in the 'TerminableStream' class This type is like 'Pipe' except that it has an extra type parameter representing the upstream interface, hence its name is "pipe /plus/". -} type PipePlus up action item1 item2 = TerminableStream item1 up => Vendor up (Next item2) action