我有第一个应用程序文件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的同一目录中找到?
答案 0 :(得分:5)
如果您想从包含该文件的文件夹运行ghci
,请执行以下操作:
ghci -iC:\Test\Haskell\
-i
设置导入搜索路径,然后执行:
:load C:\Test\Haskell\MyApp.hs
或者从ghci
控制台内部执行:
:set -iC:\Test\Haskell\
如果你想查看haskell在哪个文件夹中寻找模块,请调用:
:show paths
应打印module import search paths:
如果从包含文件的文件夹中运行ghci
,则不需要这一切,因为默认情况下Haskell将始终在当前文件夹中查找导入。
请勿在{{1}}与路径之间留出空格