haskell - GHCi 没有看到我的模块

标签 haskell module

A制作了一个模块Timeit。我无法将其导入 GHCi。 模块:

module Timeit (timeit, timeCatch) where
import Data.Time.Clock

timeit::IO ()->IO (Float)
timeit io=do
    (time,())<-timeCatch io
    return time

timeCatch::IO (a)->IO (Float,a)
timeCatch io=do
    start  <-getCurrentTime
    result <-io
    end    <-getCurrentTime
    return $! (realToFrac (diffUTCTime end start), result)

test=do
    putStrLn "What is your name?"
    name <- getLine
    putStrLn $ "Your name is "++name++"."

GHCi:

theking@ChrisLaptopUbuntu1304:~/Desktop/Haskell$ cd ~/Desktop/Haskell/; ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> import Timeit

<no location info>:
    Could not find module `Timeit'
    Perhaps you meant Time (needs flag -package haskell98-2.0.0.2)

我可以将其导入到我的其他程序中,但不能导入到 GHCi 中。

注意:我是一个 Haskell 菜鸟吗?

最佳答案

为了让 GHCi 导入模块,您必须确保一些事情是正确的。

首先,你们在同一个目录吗?默认情况下,GHCi 只会在当前目录中搜索模块。

第二,你添加了模块头吗?您的代码应以

开头
 module Timeit where
 ...

第三,您的文件实际上必须命名为 Timeit.hs (使用该大小写)。 默认情况下,Haskell 会插入 module Main where,如果您的模块不是 main,这就会出现问题。

最后但并非最不重要的一点是,GHCi 似乎要求您至少使用一次 :l Timeit 。我不确定这是为什么,但是一旦加载,您可以使用 :m 将其从范围中删除,然后将其导入您的心中内容。

如果您已完成这些操作,则应该可以正常导入。

关于haskell - GHCi 没有看到我的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246000/

相关文章:

linux - 为什么对 CONFIG_GCC_PLUGIN_RANDSTRUCT 的种子文件的读取权限不限于特权用户?

javascript - 更改模块名称大小写时,Webpack 使 bundle 无效

python - Pyinstaller导入报错没有模块命名路径

javascript - 对 JavaScript ECMA2015 中导入或创建的模块使用react

haskell - 为给定的数据类型编写一个在镜头上具有多态性的函数?

haskell - 欧拉计划 14 : performance compared to C and memoization

haskell - 如何使用 Scott 编码表示嵌套类型?

module - 受子签名约束的 OCaml 子模块

haskell - Haskell 中的类型和类型变量

haskell - 组合 Monad 与应用仿函数