exr*_*zzo 5 macos haskell functional-programming
我刚刚从这里安装了Haskell平台安装程序https://www.haskell.org/platform/mac.html
现在,作为我的菜鸟,我创建了一个非常简单的程序,只是为了看它是否有效:
f :: Int -> Int
f x = x + 2
Run Code Online (Sandbox Code Playgroud)
但是当我执行
runhaskell test.hs
Run Code Online (Sandbox Code Playgroud)
它返回
test.hs:0:53:错误:
•变量不在范围内:main :: IO a0
•也许你的意思是'min'(从Prelude导入)
如果我跑
ghc test.hs
Run Code Online (Sandbox Code Playgroud)
它返回
IO动作'main'未在模块'Main'中定义
仅指示第一行"f"的第一个字符
使用您的程序,您没有指示Haskell程序应该执行什么操作.您只定义了一个函数.这并不意味着Haskell会自动调用该函数.
您需要定义一个具有特殊名称的函数main(ghc具有指定其他名称的选项,但现在让我们忽略它).main是类型的函数IO a.它是一个描述IO执行程序时调用的action()的函数.
由于您只定义了一个函数f,因此您可能希望进行测试f.
所以我们可以写一个main:
main :: IO ()
main = print (f 2)
Run Code Online (Sandbox Code Playgroud)
现在,如果将此添加到程序中.编译器将生成将执行的可执行文件main.这main很简单:我们指导它print的结果f 2.所以它会打印出来4.我们称之为该计划main的切入点.
您也可以决定运行交互式会话.在这种情况下,您不需要入口点,因为您可以在交互式会话中决定要调用哪些函数.
例如,您可以使用它ghci file.hs来启动交互式sesion,并运行:
$ ghci testprogram.hs
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( testprogram.hs, interpreted )
Ok, modules loaded: Main.
*Main> f 2
4
Run Code Online (Sandbox Code Playgroud)
所以现在我们已经调用了f 2,交互式会话会自动打印结果4.
| 归档时间: |
|
| 查看次数: |
1000 次 |
| 最近记录: |