制作一个模块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 noob。
答案 0 :(得分:3)
为了让GHCi导入模块,你必须确保一些事情是真的。
首先,你在同一个目录中吗?默认情况下,GHCi只搜索当前目录中的模块。
其次,您是否添加了模块标题?您的代码应以
开头 module Timeit where
...
第三,您的文件实际上必须命名为Timeit.hs
(使用该大小写)。
默认情况下,Haskell会插入module Main where
,如果您的模块不是主模块,则会出现问题。
最后但同样重要的是,GHCi似乎要求您至少使用:l Timeit
一次。我不确定为什么会这样,但是一旦加载,您就可以使用:m
将其从范围中删除,然后将其导入您的内容。
如果你已经完成了这些事情,它应该导入得很好。
答案 1 :(得分:0)
要从ghci导入模块,请不要使用import,而是使用
:m +TimeIt