【问题标题】:Haskell prelude generic functions out of scopeHaskell 前奏泛型函数超出范围
【发布时间】:2015-08-10 20:15:35
【问题描述】:

当尝试在 Haskell 前奏中使用所谓的“通用”列表函数时,我得到一个超出范围的错误 - 例如在尝试使用 genericDrop、genericTake 等时。

也许我需要导入一个模块或其他东西(但我在prelude docs 或谷歌搜索中看不到任何提及)

【问题讨论】:

  • 您可以在ghci 中看到带有:browse Module 的模块公开的所有名称。要查看前奏中的内容(即您不需要导入),您可以执行:browse Prelude
  • 这里有个小误解:genericDropgenericTake 不在前奏中,这就是为什么你需要导入它们。
  • 是的,我想我想既然 Prelude 包含一些 Data.List 之类的东西,它会包含所有这些

标签: haskell


【解决方案1】:

是的,我相信你需要:

import Data.List

一般来说,当我需要弄清楚要导入哪个模块时,我发现hoogle 非常有用。你可以搜索一个特定的功能,它会带你去hackage,然后在页面顶部有这个功能所属的模块。例如,这里是搜索genericDropassociated hackage page 的结果。

【讨论】:

  • 那么Data.List中的一些函数不用导入就可以使用,而其他的需要导入?
  • 是的,一些列表函数是通过前奏导入的。一般来说,如果你需要列表函数,我会通过 Data.List 导入它们。当您明确指定要导入的函数时,我也更喜欢。例如,我会做import Data.List(genericDrop),它只会导入一个函数。这样就很容易分辨出事情的来源。
  • 好的,你可以从here 看出哪些是通过前奏导入的......干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 2010-11-22
  • 1970-01-01
  • 2015-05-18
  • 2018-07-18
  • 1970-01-01
  • 2018-03-30
相关资源
最近更新 更多