haskell - 将字符串列表中的第一个元素转换为整数

标签 haskell

列表是:

l = ["1","kg","g"]

我找到了这个方法,但它不起作用:

    map (convert) l
    convert [x, "kg", "g"] = (read x :: Integer) *1000

我收到以下错误:

    parse error on input `='
    Perhaps you need a 'let' in a 'do' block?
    e.g. 'let x = 5' instead of 'x = 5'
   |
17 |     convert [x, "kg", "g"] = (read x :: Integer) *1000
   |                            ^                ^

最佳答案

您无法使用类型提示转换值。 Haskell 具有类型系统,这意味着您只能使用函数将字符串转换为整数

因为 IntegerRead typeclass 的一个实例,您可以使用read :: Read a => String -> a将字符串解析为Integer:

convert [x, "kg", "g"] = (read x :: Integer) *1000

关于haskell - 将字符串列表中的第一个元素转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65692140/

相关文章:

scala - Scala 中的惯用 Haskell 式迭代?

haskell - 查找 snap-server 绑定(bind)的端口

docker - 为什么COPY指令在我的Docker构建中导致缓存未命中

haskell - 如何在 Haskell 中对数据强制执行运行时条件?

java - 我可以在 Java 中定义 Negatable 接口(interface)吗?

list - 出于效率原因,ghc 是否将仅使用一次的列表转换为生成器?

Haskell - 分割数字然后相乘

Haskell 到 Javascript 编译器?

data-structures - Haskell 的代数数据类型

haskell - 为什么类型系统拒绝我看似有效的程序?