
Hello Neil, Thursday, November 23, 2006, 7:57:53 PM, you wrote:
and, while you can't imagine progress of FilePath module, i can do. what you propose to do in this case - have two filepath modules, one in the base and one in other place? or make incompatible changes in Base? to be concrete, i want to make these functions polymorphic and be able to work on various string-alikes
type FilePath = String
I would hope that when/if we ever replace FilePath with a string-a-like or ADT, we might want to rename the type at the same time.
what i mean here: now we have, for example splitToBaseExt :: FilePath -> (FilePath,FilePath) the same function, in polymorphic way: splitToBaseExt :: FilePathClass fp => fp -> (fp,fp) and instance FilePathClass FilePath instance FilePathClass UTF8ByteString instance FilePathClass UTF16ByteString this change in interface would be indistinguishable for 99% of us. for the rest, old version of library should still be available. and only way to do it - versioning, that is impossible with Base
experience shows that even such well-established modules as Data.List are sometimes changed. so, while your work is great, this don't mean that it will be frozen and can't be replaced with something even better
It can, but I suspect the better thing wouldn't manipulate FilePath's, but general URL's or something with the file:// protocol as just a special case.
We will never achieve perfection, but at some point we have to commit to providing something with a fixed API that people can use.
YES! it's my whole argument - with Base, you can't provide fixed API. the only way to do it is to request library with specific version number that is installed via Cabal
Having things in a set of libraries which are tightly controlled is a good idea - currently as my libraries stand, I can change the functionality to reverse all the strings on the way out as I choose - hopefully if I did that to a base library someone would stop me.
sorry, i don't known that you are agent of KGB :) -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com