【发布时间】:2018-04-05 14:19:46
【问题描述】:
我有第一个应用程序文件,Myapp.hs
我创建了一个用于解析 csv 文件的模块,称为 Csvparser,它在文件 Csvparser.hs 中定义。
两个文件都在同一个目录中。
我不明白如何在 Myapp.hs 中导入 Csvparser 模块
Prelude Data.Maybe Data.List Data.Time Data.Either> :load C:\Test\Haskell\MyApp.hs
[1 of 1] Compiling Main ( C:\Test\Haskell\MyApp.hs, interpreted )
C:\Test\Haskell\MyApp.hs:5:1: error:
Could not find module `Csvparser'
Use -v to see a list of the files searched for.
|
5 | import Csvparser
| ^^^^^^^^^^^^^^^^
Failed, no modules loaded.
Prelude Data.Maybe Data.List Data.Time Data.Either>
模块可以独立加载并运行
Prelude Data.Maybe Data.List Data.Time Data.Either> :load C:\Test\Haskell\Csvparser.hs
[1 of 1] Compiling Csvparser ( C:\Test\Haskell\Csvparser.hs, interpreted )
Ok, one module loaded.
*Csvparser Data.Maybe Data.List Data.Time Data.Either> import Csvparser
*Csvparser Data.Maybe Data.List Data.Time Data.Either Csvparser> :t Csvparser.parseCSV
Csvparser.parseCSV :: String -> Either ParseError [[String]]
*Csvparser Data.Maybe Data.List Data.Time Data.Either Csvparser>
这是 MyApp.hs 第 5 行的失败语法
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ScopedTypeVariables #-}
import Csvparser
import Database.HDBC
import Database.HDBC.ODBC
如何让 ghci/haskell 了解 Csvparser 模块位于 MyApp.hs 的同一目录中?
【问题讨论】:
-
尝试将文件重命名为
Csvparser.hs -
@moondaisy :帖子编辑,实际上有完全相同的名称;区分大小写:模块是 Csvparser,文件是 Csvparser.h
-
如果你从包含这两个文件的文件夹中运行
ghci,导入应该可以工作,但也许你有理由不从那里运行它 -
您也可以使用
:cd C:\Test\Haskell将 GHCi 的目录更改为您的代码所在的目录。请注意,这也会在此类目录中运行您的代码(例如,如果您的代码创建了一个文件,它将在那里创建)。