如何配置Haskell/ghci模块搜索路径?

How to configure Haskell / ghci module search path?

我有第一个申请文件,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 的同一目录中找到?

如果您想 运行 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 将始终在当前文件夹中查找导入。

不要在 -i 和路径

之间留下 space