gpt4 book ai didi

haskell - 将 Read 实例添加到 Path to Path 包

转载 作者:行者123 更新时间:2023-12-02 19:08:27 26 4
gpt4 key购买 nike

我喜欢 Path 包并且经常使用它。对我来说主要的不便是缺少 Path 的 Read 实例。很明显,需要 4 个不同的实例,例如

instance Read (Path Rel File) where
instance Read (Path Rel Dir) where
instance Read (Path Abs Dir) where
instance Read (Path Abs File) where

但我不知道如何定义 readsPrec 函数。它需要一个文件路径解析器函数。我想有人已经为文件路径编写了解析器,并且我知道必须考虑很多特殊情况。我找不到这样的功能。我应该去哪里看?

最佳答案

我利用了 Path 的 show 函数生成字符串的事实

instance Show (Path b t) where
show = show . toFilePath

因此,read可以先读取字符串,然后再分析字符串:

instance Read (Path Abs Dir) where
readsPrec i r =
maybe [] (\res -> [(Path res, rem1)] ) $ Path.parseAbsDir x
where [(x ::String , rem1)] = readsPrec i r

我不太喜欢这种方法,并且更喜欢使用不依赖于值周围的“..”的文件路径解析器。

有什么建议可以改进吗?

关于haskell - 将 Read 实例添加到 Path to Path 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48998565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com