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

Haskell: how calculate absolute path from an absolute path and a relative path pair

我需要在 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 版本都需要 return 类似 IO(任一字符串文件路径)

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

abs </> rel

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

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