我正在学习Haskell作为我正在学习的编程语言课程的一部分。我很难理解如何编写整个Haskell程序。我理解GHCi中使用的基本语法,但我的作业需要使用命令创建.hs文件并在Windows CMD中编译/执行它们:
ghc -o test test.hs
test.exe
如果有人可以解释如何编写以下示例,那么我想我会理解我需要做什么才能继续。
module Main where
double :: Integer -> Integer
double x = x * 2
main :: IO ()
main = double 6
我想要做的就是编写一个返回整数参数的double的函数,并使用参数' 6'进行主调用。在分离.hs文件中的主模块和功能模块时,我应该做些什么?谢谢你的帮助。
答案 0 :(得分:1)
这里的问题是,当GHC编译代码时,它希望main
具有适合程序入口点的类型。它需要具有“输入输出的代码”类型,否则Haskell程序实际上不会做任何可观察的事情!
也就是说,它希望找到某些main :: IO X
的{{1}}。将X
表示main :: IO ()
是一个执行输入输出并最终生成main
的程序,这是一个很好的做法,这是一个微不足道的结果。
目前您有()
,类型错误。解决这个问题需要你决定你希望程序在运行时做什么,一个好的默认设置是打印一些东西。我们可以使用函数main :: Integer
,它将使用print :: Show a => a -> IO ()
将提供的值转换为字符串,并将其打印到标准输出。所以我们可以写
show
一切都会像你在REPL一样工作。
一般情况下,请详细了解Real World Haskell中的 main :: IO ()
main = print (double 6)
。完全可以在不了解monad或其他任何东西的情况下使用它。
答案 1 :(得分:0)
"我的作业要求......"然后问你的老师。首先检查她是否已经给你答案(在问题陈述中或在课堂上)。