Haskell:如何计算绝对路径和相对路径对的绝对路径

时间:2018-04-29 08:36:07

标签: haskell filepath

我需要在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)的内容

1 个答案:

答案 0 :(得分:3)

首先,您可以将路径与(</>)组合:

abs </> rel

然后使用canonicalizePath删除任何间接。

canonicalizePath (abs </> rel) >>= \abs -> ...