2013-11-27 4 views
2

A изготовлен модуль Timeit. Я не могу импортировать его в GHCi. Модуль: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:

[email protected]:~/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

Вы можете разместить вывод 'Ls | grep hs' – jozefg

ответ

3

Для того, чтобы модуль был импортирован GHCi, вы должны убедиться, что некоторые вещи верны.

Во-первых, вы находитесь в одном каталоге? По умолчанию GHCi будет искать только текущий каталог для модулей.

Во-вторых, вы добавили заголовок модуля? Ваш код должен начинаться с

module Timeit where 
... 

В-третьих, ваш файл на самом деле должен быть назван Timeit.hs (с той капитализацией). По умолчанию Haskell вставляет module Main where, что является проблемой, если ваш модуль не является основным.

И последнее, но не менее важное: GHCi, по-видимому, требует, чтобы вы использовали хотя бы один раз :l Timeit. Я не уверен, почему это так, но после загрузки вы можете удалить его из области с помощью :m, а затем импортировать его в свой контент.

Если вы сделали это, он должен импортировать только штраф.

+0

Я сделал и то и другое. – PyRulez

+0

@PyRulez Затем я не могу воспроизвести вашу ошибку, можете ли вы разместить свой код? – jozefg

+0

Кроме того, если вы просто проверяете код, вы можете загрузить его по имени файла:: путь загрузки/to/file.hs', но это не работает, когда вам нужно импортировать его в другие модули. – bheklilr

0

Чтобы импортировать модули из GHCI не используют импорт, а сказать

:m +TimeIt 
+0

Это не работает для меня. Нужно ли компилировать модуль раньше? Единственное, что работает для меня, это ': load TimeIt.hs'. –

Смежные вопросы