[Haskell-cafe] File path programme
simonmar at microsoft.com
Wed Jan 26 09:51:10 EST 2005
On 26 January 2005 14:30, Malcolm Wallace wrote:
> Keean Schupke <k.schupke at imperial.ac.uk> writes:
>>> So let's define a new algebraic datatype something like:
>> I think you can guess what comming - why not use a class for
>> extensibility: class Path p where ... The path class would
>> provide all the operations for using paths...
> Yup, good idea, and I think this would also allow David Roundy's
> suggestion of a FastString implementation of filepaths - it becomes
> just another instance.
>> This has the advantage that people can add instances for platforms
>> without having to alter the code in the library...
> Exactly. Yes.
Hmm, I deliberately didn't suggest using a type class. Do you really
want to expose Win32 paths and POSIX paths, and whatever else, as
different types? Maybe you do for extensibility, but you really want a
single Path type too - otherwise portable code will have to use
conditional compilation. The Path type therefore has to be an
data Path = (CPath p) => Path p
Maybe we do want to do this, but it causes portability issues with the
Path library itself: nhc98 can't compile this code for example - you can
rewrite it using an explicit record of operations, as long as none of
the operations are polymorphic...
More information about the Libraries