base libraries

Bulat Ziganshin bulat.ziganshin at
Fri Nov 24 05:41:37 EST 2006

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

More information about the Libraries mailing list