我是Haskell的新手并且编码一般,并且遇到了一些问题 .
sti :: [Char] -> [Integer]
sti "" = [fromIntegral (ord x)| x<-""]
所以我试图用上面的方法创建一个字符串的整数列表,例如 "Hello"
变为 ['H','e','l','l','o']
然后我将该列表转换为 Data.Char
各自的ord值 .
我的问题是,当我尝试使用这个函数时,我得到:函数 sti
中的非详尽模式 . 这是否意味着有些情况下我无法获取字符串的ord x?如果是这样,我将如何解决这个问题?
任何帮助将不胜感激 .
2 回答
你只处理空字符串
""
的情况 . 你要这个:xs
是一个变量,它将匹配任何东西,这就是你想要的 .请注意,您可以使用模式匹配来实现特殊情况,例如:
此函数返回输入字符串中字符的ASCII字符值,除非输入为空字符串,在这种情况下,它返回
[1,2,3]
. 这可能是一个有用的功能,即使它不是你想要的 .如果您只实现特殊情况,并且保留为您的函数定义了没有值的情况,那么如果您尝试为这些情况评估函数,则会崩溃:
你正在使用
""
,好像它是一个变量名 . 但在Haskell中,它代表空字符串 . 因此,您的函数仅针对空字符串定义,并且在所有其他情况下将为您提供非详尽的模式错误 .你应该用适当的变量名替换它 .