我需要在Haskell中实现与以下C#代码相同的功能:
string abs = "X:/A/B/Q";
string rel = "../../B/W";
var path = Path.GetFullPath(Path.Combine(abs,rel));
=> "X:/A/B/W"
参考:Combine an absolute path with a relative path
有没有可以做到这一点的标准套餐?
Hoogling找到了makeAbsolute和canonicalizePath,但他们都使用当前目录作为基础而不是提供的文件路径。
我猜测任何Haskell版本都需要返回类似IO(字符串FilePath)的内容
答案 0 :(得分:3)
首先,您可以将路径与(</>)组合:
abs </> rel
然后使用canonicalizePath
删除任何间接。
canonicalizePath (abs </> rel) >>= \abs -> ...