haskell - 如何处理 Haskell 中的严格类型检查?
问题描述
我正在尝试在 Haskell 中编写我的第一个程序(它非常简单)来检查给定的数字是否为素数:
prime :: Num n=> n -> Bool
prime x=smz[x `mod` a > 0 | a<-[2..(round(sqrt x))]] where
smz :: [Bool]->Bool
smz [] = True
smz (c:cs)=c && (smz cs)
但我遇到了一堆错误。有人可以给我正确版本的代码(不改变我的想法)
解决方案
GHC 中的编译错误包含实际描述,也包含在源代码中的位置。一些较新的 ghc 版本还会打印一段代码。此外,错误消息中还添加了其他信息,因此总体上看起来很吓人。但实际错误在第一行。最简单的是类型不匹配,例如“预期这个,得到那个”。在复杂的情况下,您可能必须检查文档、Google 或 SO。
从第一个错误开始通常会更好。有时它们很明显需要修复。有时它们会让你重新考虑你的设计。修复错误后再次编译并选择下一个。继续,直到修复所有错误。
有些人还建议不要先写很多代码,然后编译并得到很多错误,而是尽可能少写,然后编译。这样您在每个步骤中都会遇到更少的错误。
推荐阅读
- javascript - 为什么我不能解析 XML?
- sql - 如何编码从第一个日期到最后一个日期的用户输入参数(SQL 查询管理器)
- flutter - 如何在 JSON Dart 中添加新数据?
- java - 检查字符串中的一组字母是否是变量的有效方法?
- javascript - 使用对象的两个属性减少单个对象数组
- python - 如何区分街道名称和地址?
- kubernetes - 如何从 kubernetes(裸机服务器)中的节点重新调度 pod?
- c++ - 我当前的代码在 MS Visual Studio 中运行不正常?
- reactjs - 在没有构造函数的情况下在 React 中初始化状态
- c# - JsonConvert.DeserializeObject
在简单字符串上引发异常