Haskell 将字符串列表中的第一个元素转换为整数
名单如下:Haskell 将字符串列表中的第一个元素转换为整数,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' bloc
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
| ^ ^
不能使用typehint转换值。Haskell有一个强大的类型系统,这意味着您只能使用函数来转换
整数中的字符串
由于Integer
是的一个实例,因此可以使用将字符串解析为Integer
:
convert [x, "kg", "g"] = (read x :: Integer) *1000
convert[x,“kg”,“g”]=(读取x::Integer)*1000不能使用typehint转换值。Haskell有一个强大的类型系统,这意味着您只能使用函数来转换整数中的字符串
由于Integer
是的一个实例,因此可以使用将字符串解析为Integer
:
convert [x, "kg", "g"] = (read x :: Integer) *1000
convert[x,“kg”,“g”]=(读x::Integer)*1000谢谢你的回复我刚刚理解了read type类。不幸的是,in仍然给了我同样的错误。@AnasHesham:但是您使用的是map convert l
,这没有任何意义,因为l
是一个字符串列表,因此您可以调用convert l
来获得结果。@AnasHesham:您也不需要为read
定义签名read
可从Prelude
@AnasHesham获得:此外,如上所述,您不能使用map
,因为它没有意义:convert
需要字符串列表,而不是单个字符串,因为l
是字符串列表,映射没有意义,您可以使用r=convert l
(然后,r
因此是一个整数
我将映射放在一个列表上,该列表包含与示例中相同类型的数据。但是,是的,它在当前代码迭代中是多余的。感谢您的回复,我刚刚理解了Read type类。不幸的是,在g中“我还是犯了同样的错误。@AnasHesham:但是您使用的是map convert l
,这没有任何意义,因为l
是一个字符串列表,因此您可以调用convert l
来获得结果。@AnasHesham:您也不需要为read
定义签名read
可以从序曲获取Hesham:此外,正如前面所说,你不能使用map
,因为它没有意义:convert
需要一个字符串列表,而不是单个字符串,因为l
是一个字符串列表,映射没有意义,你用r=convert l
(然后,r
因此是一个整数
我把map放在一个列表上,因为我打算在列表中使用convert,该列表包含与示例中可用的相同类型的数据。但是,是的,它在代码的当前迭代中是冗余的。