gpt4 book ai didi

haskell - 列表理解并将字符串转换为对象

转载 作者:行者123 更新时间:2023-12-02 17:58:39 25 4
gpt4 key购买 nike

我有一个字符串,例如2.7+i*3.4。我想解析这个字符串并获取复数对象。我尝试这样做:

newtype MyComplexNumber = MyComplexNumber (Complex Float)

myReadsCmplx s = [(MyComplexNumber (a :+ b)) |
(a, '+':r1) <- reads s :: [(Float, String)],
(i, '*':r2) <- reads r1 :: [(String, String)],
(b, r3) <- reads r2 :: [(Float, String)]]

但我有空列表:

*Main Data.Complex> myReadsCmplx "2.7+i*3.4"
[]
*Main Data.Complex>

最佳答案

您似乎正在使用reads,就好像它是一个完整的单子(monad)解析器一样。它不是。它会给出匹配或不匹配的结果,如果它找到的匹配与您的模式不匹配,那么您将一无所获。使用诸如 parsecattoparsec 之类的东西,甚至像 regex-applicative 这样 super 简单的东西,效果会更好。

关于haskell - 列表理解并将字符串转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185050/

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