Haskell模糊文件路径操作(简化点)

So8*_*res 11 haskell filepath

我在haskell中有一个动态构造的文件路径,最终结果如下:

/abc/def/../ghi/./jkl
Run Code Online (Sandbox Code Playgroud)

而且我想把它减少到更可读

/abc/ghi/jkl
Run Code Online (Sandbox Code Playgroud)

用于打印.在haskell中有一个库函数吗?我看了一遍,找不到一个.写起来并不难,但它有点乱,因为你必须"向前看""...",如果可以,我宁愿使用烘焙功能.

dav*_*420 15

请注意,当涉及链接时,这不仅仅是字符串处理问题:

$ mkdir -p foo/bar
$ ln -s foo/bar baz
$ echo gotcha! >foo/quux
$ cat quux
cat: quux: No such file or directory
$ cat baz/../quux
gotcha!
Run Code Online (Sandbox Code Playgroud)

所以你需要做IO.

最近我可以找到你想要的是canonicalizePathSystem.Directory.它返回从根目录开始的路径,所以你可能要结合使用它makeRelative,也从System.Directory.但它确实在运行IO.