title: Lifting - generalization
body: <p>I need to use heavy function lifting, eg.</p>
  
  <pre><code>k = myFunc
    &lt;$&gt; someFunctionName 1
    &lt;*&gt; someFunctionName 2
    &lt;*&gt; someFunctionName 3
    &lt;*&gt; someFunctionName 4
    &lt;*&gt; someFunctionName 5
    &lt;*&gt; someFunctionName 6
    &lt;*&gt; someFunctionName 8
    &lt;*&gt; someFunctionName 9
    -- ...
  </code></pre>
  
  <p>Which is not provided for bigger functions (about 20 arguments) by Prelude. Is there smart way to do such a lift without explicitly chaining those <code>ap</code>s? I am looking for something like</p>
  
  <pre><code>k = magic (map someFunctionName [1,2,3,4,5,6,8,9]) myFunc 
  </code></pre>
  
  <p>I may be hard to guess the type of <code>magic</code> as it depends on number of arguments of lifted function. It is of course not possible to use <code>map</code> on list here (or is it?), I put it only as a viewpoint.</p>
  
  <p>I think I am looking for something that could be nicely solved by dependent types, which are not included in Haskell, but maybe there is some tricky way to workaround it (TemplateHaskell?)</p>
  
  <p>Do you have any ideas how to make it more elegant and flexible?</p>
  
  <p><strong>edit:</strong> In my case types of chained functions are all the same.  </p>