
"Simon Marlow"
It occurs to me that if the reference implementation is GPL, then this may encumber the definition of the API such that a commercial reimplementation would not be possible.
I don't think that this is a valid concern.
In some cases this is inevitable - for example, System.Console.Readline wraps a GPL library, so there is probably no way to have an unencumbered API definition for this library.
You can always put the API of a library under a BSD license and the rest under GPL.
However, we want to avoid having "essential" parts of the library definition covered by the GPL. The library document[1] mentions this problem, but doesn't specify exactly what we mean by "essential" - we should really expand on that.
As soon as the API of a library is defined in an extra document, even under the most paranoid interpretation of the GPL, a library implementation of that API, which is under the GPL will not affect the license of that API. I think it is impossible to define what's "essential", AFAIK the idea was that bindings to, eg, standard system functionality would be part of a core that is under a BSD license (as are the Haskell standard modules). Cheers, Manuel