[Haskell-cafe] A type class puzzle

Yitzchak Gale gale at sefer.org
Tue Oct 31 08:12:53 EST 2006

Tomasz Zielonka wrote:
> It's quite easy if you allow the indices to be put in a
> single compound value.

Hmm. Well, I guess I don't need to insist on the exact
type that I gave in the statement of the puzzle - although
something like that would be the nicest.

This is actually a function that is useful quite often in
practice. But I would rather not be forced to write things

> replace (I 0 $ I 2 $ I 3 $ ())

in my code. My first attempt was very similar to yours,
except I used

> replace (0, (2, (3, ())))

instead of your Index type. I don't like my solution, either.

So I guess I would define a full solution as something
nice enough to be used in practice. Let's be more
concrete - it has to be nice enough that most people
who need, say, replace2 or replace3, in real life, would
actually use your function instead of writing it out by hand.

Maybe others would disagree, but so far, I personally
do not use either your solution or my solution. I write it
out by hand.

> 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?)


More information about the Haskell-Cafe mailing list