Haskell报错:非法在项级别使用类型构造器‘Int’咨询
问题分析与修正
你的代码存在两个核心问题:
- 混淆了类型与值的使用场景:
Int是Haskell中的类型构造器,只能在类型层面(比如函数的类型签名里)用来声明数据的类型,不能把它当成具体的数值放到表达式里做运算——这就是错误提示里"Illegal term-level use of the type constructor ‘Int’"的原因。 - 函数定义缺少参数:你的类型签名
Test :: Int -> Int声明这是一个接收Int参数、返回Int的函数,但函数体Test = Int * Int既没有接收参数,也没有用参数来做计算。
修正后的代码
-- 惯例:Haskell函数名通常用小写开头,大写开头一般留给类型/数据构造器 square :: Int -> Int square x = x * x
说明
- 第一行的类型签名里,
Int -> Int依然用Int来声明输入输出的类型,这是合法的类型层面使用。 - 第二行的
square x表示函数接收一个名为x的参数(变量名可以随便取,比如num、n都可以),然后通过x * x实现参数自乘的逻辑。
内容的提问来源于stack exchange,提问作者KevenH
相关产品推荐
相关产品推荐

