module Next.Producer.Type ( {- * Type aliases -} Producer, ProducerPlus, ) where import Essentials import Next.Interface.Type import SupplyChain.Vendor {-| A 'Vendor' whose upstream interface is nothing and whose downstream interface is 'Next' -} type Producer action item = Vendor (Const Void) (Next item) action {-| A 'Vendor' whose downstream interface is 'Next' This type is like 'Producer' except that it has an extra type parameter representing the upstream interface, hence its name is "producer /plus/". -} type ProducerPlus up action item = Vendor up (Next item) action