Hi adam,

Thanks for your answer.

2014-06-13 21:44 GMT+02:00 adam vogt <vogt.adam@gmail.com>:
No.If you decide on a kind signature ([k], [k]), you have to use '(,)
not (,) when making types for that kind. Similarly if you have a type
[xs], the kind of that is * which doesn't match the kind [k] you
specify.

ok, I was confused, thanks.
 
I'm not sure. With the HList library on hackage, you can do the equivalent of

zipWithDollar xs ys = map ($) (zip xs ys)

by defining:

data Dollar = Dollar
instance (fx ~ (x -> y, x)) => ApplyAB Dollar fx y where
  applyAB _ (f,x) = f x

hZipWithDollar xs ys = hMap Dollar (hZip xs ys)

It works like:

>>> hZipWithDollar (hBuild (+1) tail) (hBuild 3 "ab")
H[4, "b"]

But in more complicated cases there is a tendency to need
-XAllowAmbiguousTypes, which means writing type signatures (with
-XScopedTypeVariables) that should be unnecessary.

ok, that's clear, thanks.

Regards.