【问题标题】:How to configure Haskell / ghci module search path?如何配置 Haskell / ghci 模块搜索路径?
【发布时间】: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 的目录更改为您的代码所在的目录。请注意,这也会在此类目录中运行您的代码(例如,如果您的代码创建了一个文件,它将在那里创建)。

标签: haskell ghci


【解决方案1】:

如果您想从包含该文件的不同文件夹中运行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 和路径之间留空格

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多