{-# LANGUAGE RankNTypes #-}

functionName ::
  (C1, C2, C3, C4, C5) =>
  a ->
  b ->
  ( forall a.
    (C6, C7) =>
    LongDataTypeName ->
    a ->
    AnotherLongDataTypeName ->
    b ->
    c
  ) ->
  (c -> d) ->
  (a, b, c, d)
