See Connor McBride's "Faking It: Simulating Dependent Types in Haskell" http://citeseer.ist.psu.edu/mcbride01faking.html
It might help; your example makes me think of the "nthFirst" function. If it's different, I'md wager the polyvariadic stuff and nthFirst can be reconciled on some level. Nick On 10/31/06, Greg Buchholz <[EMAIL PROTECTED]> wrote:
Yitzchak Gale wrote: > Tomasz Zielonka wrote: > >If you insist that each index should be given as a separate > >function argument, it may be possible to achieve it using the tricks > >that allow to write the variadic composition operator. > > I am not familiar with that. Do you have a reference? > Is that the best way to do it? (Is that a way to do it at all?) You might find these articles somewhat related... Functions with the variable number of (variously typed) arguments http://okmij.org/ftp/Haskell/types.html#polyvar-fn Deepest functor [was: fmap for lists of lists of lists of ...] http://okmij.org/ftp/Haskell/deepest-functor.lhs ...That first article is the strangest. I couldn't reconcile the fact that if our type signature specifies two arguments, we can pattern match on three arguments in the function definition. Compare the number of arguments in the first and second instances... > class BuildList a r | r-> a where > build' :: [a] -> a -> r > > instance BuildList a [a] where > build' l x = reverse$ x:l > > instance BuildList a r => BuildList a (a->r) where > build' l x y = build'(x:l) y ...if you try something like... foo :: [a] -> a -> r foo l x y = undefined ...you'll get an error message like... The equation(s) for `foo' have three arguments, but its type `[a] -> a -> r' has only two YMMV, Greg Buchholz _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe