{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE PolyKinds, ConstraintKinds #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Data.TypeLevel.Bool (b) where

b :: forall {k} c (f :: k) (t :: k) tp b . (c (tp f), c (tp t)) =>
	tp f -> tp t -> Bool -> (forall (a :: k) . c (tp a) => tp a -> b) -> b
b :: forall {k} (c :: * -> Constraint) (f :: k) (t :: k) (tp :: k -> *)
       b.
(c (tp f), c (tp t)) =>
tp f
-> tp t -> Bool -> (forall (a :: k). c (tp a) => tp a -> b) -> b
b tp f
f tp t
_ Bool
False forall (a :: k). c (tp a) => tp a -> b
fn  = tp f -> b
forall (a :: k). c (tp a) => tp a -> b
fn tp f
f
b tp f
_ tp t
t Bool
True forall (a :: k). c (tp a) => tp a -> b
fn = tp t -> b
forall (a :: k). c (tp a) => tp a -> b
fn tp t
t