在haskell中导入我们自己的模块

时间:2014-04-15 16:04:19

标签: haskell module

我有以下代码,我只想从我的模块中导出sphereVolume和sphereArea函数。

module Geometry  
    ( sphereVolume
    , sphereArea  
    ) where  

 sphereVolume :: Float -> Float  
 sphereVolume radius = (4.0 / 3.0) * pi * (radius ^ 3)  

 sphereArea :: Float -> Float  
 sphereArea radius = 4 * pi * (radius ^ 2)  

 cubeVolume :: Float -> Float  
 cubeVolume side = cuboidVolume side side side  

 cubeArea :: Float -> Float  
 cubeArea side = cuboidArea side side side  

 cuboidVolume :: Float -> Float -> Float -> Float  
 cuboidVolume a b c = rectangleArea a b * c  

 rectangleArea :: Float -> Float -> Float  
 rectangleArea a b = a * b  

当我在ghci中写import Geometry时,我收到以下错误

<no location info>:
Could not find module `Geometry':
  it is not a module in the current program, or in any known package

我确保它们位于同一目录中,并且与模块具有相同的文件名。我在这里缺少什么?

2 个答案:

答案 0 :(得分:3)

正如Franky所说,您可以使用:l Geometry来处理GHCi中的代码。但是你可以一次加载一个模块(:l)。如果您已经编写了几个您希望能够同时使用的模块,该怎么办?然后你需要import他们。

为了能够从GHCi中import Geometry,您需要安装它。最简单的方法是使用cabal。这是guide

答案 1 :(得分:2)

请勿在{ghci}中import。只需使用通常的

:l Geometry