record Subscriber : (Type -> Type) -> Type -> Type -> TypeMkSubscriber : (a -> m ()) -> (() -> m ()) -> (e -> m ()) -> Subscriber m e a.onFailed : Subscriber m e a -> e -> m ().onNext : Subscriber m e a -> a -> m ().onSucceded : Subscriber m e a -> () -> m ()Contravariant (Subscriber m e).onNext : Subscriber m e a -> a -> m ()onNext : Subscriber m e a -> a -> m ().onSucceded : Subscriber m e a -> () -> m ()onSucceded : Subscriber m e a -> () -> m ().onFailed : Subscriber m e a -> e -> m ()onFailed : Subscriber m e a -> e -> m ()record Publisher : (Type -> Type) -> Type -> Type -> TypeMkPublisher : (Subscriber m e a -> m ()) -> Publisher m e a.subscribe : Publisher m e a -> Subscriber m e a -> m ()Functor (Publisher m e).subscribe : Publisher m e a -> Subscriber m e a -> m ()subscribe : Publisher m e a -> Subscriber m e a -> m ()empty : Publisher m e afail : e -> Publisher m e asingleton : Monad m => a -> Publisher m e afromList : Monad m => List a -> Publisher m e a