module ConstrainedArgument where

class Foo t

type WithoutArgs      = forall a. (Partial => a) -> a
type WithArgs         = forall a. (Foo a => a) -> a
type MultiWithoutArgs = forall a. (Partial => Partial => a) -> a
type MultiWithArgs    = forall a b. (Foo a => Foo b => a) -> a
