我正在Haskell从事一项任务。但是,我正在使用的基本代码没有定义主要功能,从任务的措辞来看,我相信我无须在解决问题的方法之外编写任何代码。但是,当我尝试编译代码时,收到错误消息:
The IO function 'main' is not defined in module 'Main'
我认为这是因为该功能没有主要功能。但是,当我尝试编写自己的main函数时:
main :: IO ()
main = solve easy // easy is an array
我得到错误:
Couldn't match expected type 'IO()' with actual type '[Int]'
求解函数的类型声明如下:
solve :: [Int] -> [Int]
因此,它需要一个数组并返回一个数组。在编写main
函数时我做错了什么?即使我尝试将的声明更改为main
:
main :: [Int]
或者
main :: IO [Int]
我仍然无法编译它。
首先:函数main
必须具有IO t
某种类型的类型t
。执行程序时,将执行由定义的计算main
,并且其结果(类型为t
)将被丢弃;看这里。
因此,尤其是,您不能具有main
as的类型[Int]
并且编译器不会抱怨。
根据您是否要查看解决简单案例的结果,可以尝试以下方法之一:
如果要查看结果,请打印!
main :: IO ()
main = putStrLn $ show (solve easy)
如果您不希望看到结果,则将其丢弃:
main :: IO ()
main = let solution = solve easy
in putStrLn ""
编辑:但是,请注意,如果您选择后者,那么(如@ yatima2975在评论中提到的)“解决简单”部分将不会进行评估。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句