如何使用“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 ee
不是字符。我的意思是,它当然是您在提示符中键入的字符串的一个字符,例如 c
和 N
是该字符串的字符,但就解析器而言,所有这些都代表变量名的一部分。而且,好吧,正如 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绘图渲染到打印机