haskell - Haskell - 定义函数所需的 Num Char 实例
问题描述
我想用 3 个输入参数和 1 个输出参数编写一个简单的递归函数:
getLengthOfNumber :: (String, Int, Int) -> Int
getLengthOfNumber (n, i, res)
| isCharDigit(n!!i+1) = getLengthOfNumber (n, i+1, res+1)
| otherwise = res
为什么 Hugs 会向我抛出错误“定义 getLengthOfNumber 所需的 Num Char 实例”?
解决方案
!!
具有比 更高的优先级+
,因此n!!i+1
被解析为(n !! i) + 1
,它试图将 1 添加到字符串的元素中,这仅适用Char
于数字。你应该改写n !! (i+1)
.
推荐阅读
- android - 字符不会在字符串中替换
- c# - C# 控制台应用程序中的上下文数据库和 Sharepoint
- c++ - 不能使用嵌套结构内的联合元素作为 scanf() 的参数来存储所需的值
- linux - realloc() : 无效的下一个大小使 p_thread 程序
- c# - 将 Richtextbox 中的字符串与 SQL Server 进行比较
- php - 如何动态取消设置嵌套数组键?
- c# - 什么类结构将模仿带有交替标记的 XML 文档
- python - 如何将列表列表与字符串列表结合起来
- ember.js - 如何从已部署的 ember 项目转到本地开发项目?
- kivy - buildozer“调试安卓调试”