如何使用“ord”函数在 Haskell 中将 Char 转换为 Int?

Posted

技术标签:

【中文标题】如何使用“ord”函数在 Haskell 中将 Char 转换为 Int?【英文标题】:How can I transform Char to Int in Haskell using "ord" function? 【发布时间】:2020-10-06 09:05:32 【问题描述】:

我一直试图弄清楚如何使用 Data.Char 库中的“ord”函数在 Haskell 中将 Char 转换为 Int。这是我现在到达的地方:

charToNum :: Char -> Int
charToNum x = (ord(x))

这是一个非常简单的程序,但我不能 100% 确定如何使用“ord”函数

当我运行编译程序时,一切都会编译,但是当我尝试输入一个字符时,我得到了这个错误:

> charToNum e
<interactive>:85:11: error: Variable not in scope: e :: Char

【问题讨论】:

您收到什么错误消息/您的程序有何异常行为? 当我尝试编译它时,它工作正常,但在我尝试输入一个字符后,我收到此错误消息 charToNum e :85:11: error: Variable not in scope: e :: 字符 【参考方案1】:

e 不是字符。我的意思是,它当然是您在提示符中键入的字符串的一个字符,例如 cN 是该字符串的字符,但就解析器而言,所有这些都代表变量名的一部分。而且,好吧,正如 GHCi 然后告诉你没有名为 e 的变量。

如果您想将字符“e”作为参数传递,那么就这样做吧!

> charToNum 'e'

【讨论】:

【参考方案2】:

charToNum 'e'?

顺便说一句,你的定义应该是

charToNum x = ord x

(或者干脆

charToNum = ord

)

【讨论】:

对,甚至完全省略定义charToNum,而是直接调用ord “应该”这个词太强了,不能在这里使用。其他定义会是更好的风格,但所写的定义在语义上没有任何错误。 @amalloy 是的,但我同意 bipll 的观点,即一般来说应该省略多余的括号

以上是关于如何使用“ord”函数在 Haskell 中将 Char 转换为 Int?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Haskell 中将 main :: IO () 重写为由一个 main :: IO() 组成的两个函数

如何在Haskell gtk2hs中将Cairo绘图渲染到打印机

在 Haskell 中将字符串转换为类型构造函数

Haskell:(Num a,Ord a)和(Integral a)之间的区别

如何在 Haskell 中将数据类型转换为 BSON?

如何在 haskell 中打印列表?