
Hi adam,
Thanks for your answer.
2014-06-13 21:44 GMT+02:00 adam vogt
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.