
Bulat Ziganshin wrote:
Hello Ben,
BRG> Also, getArgs should return [ADT].
getLine also shoukd return ADT - just for case when user supplied a filename? :) and "++" operation should return ADT too? :)
The point is that different things are natively handled in different formats under different OSes, e.g. Posix NT Win9x pathnames bytes UTF-16 locale command line bytes UTF-16 locale file contents bytes bytes bytes pipes/sockets bytes bytes bytes File and streams should be read and written as bytes (octets) because that's the interface provided by every supported OS -- and not for any other reason. Pathnames and the command line should have the same representation in Haskell because they have the same representation in every supported OS, and one very frequently needs to convert between them. Using different types would make no sense, as far as I can tell. Ashley Yakeley says that he wants to parse options in his command-line arguments, and so do I, but I also want to find out the extension of a filename, and whether it's a backup file (ends with '~'), and whether it contains non-ASCII characters, and so on. Interconversion is necessary in either case, and the issues involved are the same, so in my opinion they should be handled together. Actually, there's one extra issue with the command line: in Posix it's a list of strings, while in Windows it's just one string. Very few if any Windows applications do their own command line parsing. NT provides a function CommandLineToArgvW, but I don't know what algorithm it uses. -- Ben