Haskell 库导入语法

2023-11-27

对于这个非常基本的问题抱歉:在 GHCi 中,两者之间有区别吗?import Library.Name and :m +Library.Name?它们看起来是等效的,但我认为使用替代语法是有原因的。


你说得对import Module and :module + Module是相同的,但有几个原因:module(以下简称:m) 句法。

  1. 年纪大了。 GHCi 过去实际上只是一个IO do堵塞;现在它支持该语言的每个部分,所以我们可以做imports。 (看起来像GHCi 6.6.x 不支持import, but GHCi 6.8.1 做到了;直到我们才得到对顶级声明的全力支持GHCi 7.4.1.)

  2. 它允许您一次导入多个模块。:m + M1 M2 M3和写作一样import M1, import M2, and import M3每个都在一个新行上。

  3. 它允许您取消导入模块::m - M将删除M提示符下当前范围内的内容。

  4. 它允许您导入解释模块,以便您可以看到whole范围。这就是当你:load File.hs;你发现你在模块中*File, 并且可以e.g.看到一切File进口,甚至所有不出口的东西。如果你有一个解释模块MI已加载,然后您可以使用:m + M1 *MI M3带来M1 and M2以普通方式进入范围,并且MI以特殊方式进入范围。

不过,为了完整起见,import语法确实为我们提供了三件事:m没有:

  1. 合格进口。能够做到更好import qualified Data.Map as M并使用M.lookup比必须做的事Data.Map.lookup或遭受歧义错误。 (请注意,安装的每个软件包都可以在 GHCi 中完全限定,因此import qualified Module独自一人什么也买不到。)

  2. 导入列表。即使我有以下功能Data.Map合格的M,我还可以做import Data.Map (Map)只是将类型带入非限定范围。

  3. Import hiding。与上述相反;也许我正在编写自己的排序例程,所以我可以这样做import Data.List hiding (sort).

您还可以查看GHC (7.6) 用户指南中的 §2.4.5,“提示符下的实际范围是什么?”.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haskell 库导入语法 的相关文章

  • Haskell 中的实例声明

    我有这两个功能 primes sieve 2 where sieve p xs p sieve x x lt xs x mod p gt 0 isPrime number number 1 null x x lt takeWhile x g
  • Haskell 类型系统的细微差别

    我一直在深入了解 haskell 类型系统的本质 并试图了解类型类的要点 我已经学到了很多东西 但我在下面的代码片段上遇到了困难 使用这些类和实例定义 class Show a gt C a where f Int gt a instanc
  • Haskell:无法预期类型“Integer”与实际类型“Int”

    我已经盯着这段代码有一段时间了 但我无法理解该错误消息 divisors Integer gt Integer divisors n t t lt 1 n mod n t 0 length a gt Integer length 0 len
  • Haskell,堆栈:找到可执行文件

    我正在寻找类似的东西 stack whereis hasktags where whereis行为或多或少类似于 UNIXwhereis命令 hasktags是这样运行的 stack exec hasktags stack exec whe
  • Haskell 中的分类结构

    Hask通常被认为是一个范畴 其对象是类型 态射是函数 然而 我看到 Conor McBride pigworker 警告不要使用Hask多次 1 https stackoverflow com a 45905082 474311 2 ht
  • “Eta减少”并不总是在Haskell中举行?

    我发现我可以说 LANGUAGE RankNTypes f1 forall b b gt b gt forall c c gt c f1 f id f HLint 告诉我我可以在这里做 Eta 减少 但是 f2 forall b b gt
  • 标准的能力

    我发现了一些使用标准的旧例子here http www serpentine com blog 2009 09 29 criterion a new benchmarking library for haskell 看起来好像早在 2009
  • Haskell / GHC - 是否有“警告不完整模式”的中缀标签/编译指示

    我正在寻找一个可以对特定的不完整模式发出警告的编译指示 它会使编译器失败并显示以下 假设的 代码 FAILIF incomplete patterns f Int gt Int f 0 0 我正在尝试使用 Arrows 编写一个 编译器 并
  • QuickCheck是否可以生成任意函数

    我试图为身份编写一个 QuickCheck 测试 f y f y 我最初的计划是编写一个返回函数和整数的任意生成器 具有签名Gen Int gt Int Int 并在prop DollerDoesNothing使用 不使用测试该功能应用程序
  • 你能识别 Haskell 程序中的无限列表吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何判断列表是否是无限的 https stackoverflow com questions 7371730 how to tell if a list is infinite 在Haskell中 你
  • 为什么 ZipList 不是 List 的默认应用实例

    我目前正在学习 Haskell 中的应用程序 如果我没记错的话 列表有两个不同的应用实例 List and ZipList 第二个被定义为包装列表值的新类型 这ZipList应用实例对我来说似乎更直观 这可能是一个愚蠢的问题 但有具体原因吗
  • 在 monad 转换器类型类中使用列表 monad?

    我的目标是创建一个在 ReaderT WriterT 堆栈或 RWS 堆栈中使用列表 monad 的函数 更一般地说 如何在 mtl 类型类 例如 MonadReader MonadWriter 中使用列表 monad 我为什么要尝试这样做
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • 类型级别集结合律的证明

    我试图证明类型级函数Union https hackage haskell org package type level sets 0 8 5 0 docs Data Type Set html t Union是关联的 但我不确定应该如何完
  • 如何更换HXT中的节点?

    给定一个示例 xml 文件
  • 我是否需要采取明确的操作来促进与持久数据结构的共享?

    我来自命令式背景 正在尝试实现一个简单的不相交集 并集查找 数据结构 以获得在 Haskell 中创建和修改 持久 数据结构的一些练习 目标是有一个简单的实现 但我也关心效率 我的问题与此相关 首先 我创建了一个按等级并集的不相交集森林实现
  • 如何在haskell中用另一个字符串替换一个字符串

    我想用不同的字符串替换输入文件中的字符串 我正在寻找一种方法 但似乎我只能逐个字符地更改字符串 例如在我下面的代码中 replace String gt String replace replace x xs if x then y rep
  • RankN多态性和令人发指的克莱斯利之箭

    我不明白为什么 demobind1 的定义会产生一些编译器错误 它看起来像一个愚蠢的翻转 但不知何故 LANGUAGE GADTs LANGUAGE RankNTypes ScopedTypeVariables TypeOperators
  • 在 Haskell 中获取玫瑰树的根

    最近我开始学习 Haskell 并在以下练习中遇到困难 Write functions root Rose a gt a and children Rose a gt Rose a that return the value stored
  • Haskell 项目可以使用 cmake 吗?

    我正在计划一个用 Haskell 编写的项目 也许也有一些部分是用 C 编写的 对于构建系统 我决定不选择 Haskell 程序 cabal 的常见选择 主要是因为我想了解其他语言的构建程序是如何工作的 我听说过 CMake 我认为这是一个

随机推荐

  • 可以将文本添加到 SVG 路径吗?

    是否可以将文本添加到 svg 路径 我创建了一个 svg 三角形 想在其中心添加一个字母 但不确定这是否可能 是的 看SVG1 1 规范第 10 13 节 标题为 路径上的文本 有关使用textPath元素 总结 给你的路径一个id属性 C
  • 完全外连接,在 2 个数据表上,带有列列表

    我有2个数据表 我不知道它们的数据列列表 该列表必须在运行时提取 并用于完整外连接 使用这些列时 需要合并两个表之间的列 并且我需要显示所有数据 到目前为止我正在做的是 获取公共列 使用 intersect 并实现 IEqualityCom
  • Razor View 抛出“当前上下文中不存在名称“模型””

    在我的 MVC 4 应用程序中进行重大重构后 Razor 在调试视图时显示此错误 当前上下文中不存在名称 model 这是有问题的代码行 model ICollection
  • 应该先考虑什么——设计模式还是代码?

    我正在开始一个全新的项目 我应该查看我的规范并决定应用哪些设计模式 还是只是提出一个总体的组织理念并允许模式通过重构有机地出现 根据您的经验 哪种技术最有成效并且更有可能产生干净优雅的代码 我还想知道是否有一些设计模式不是由 GoF 定义的
  • 将 SSIS 出价与 Visual Studio 2012 / 2013 结合使用

    我想在 Visual Studio 2012 中使用 SSIS BIDS 项目 我安装了 Visual Studio 2010 和 Visual Studio 2012 以及 Microsoft SQL 服务器2012 首先安装了 VS 2
  • 为什么 HTML5 不支持 font 元素?

    我只是真的很好奇 希望有人能在 W3C 的疯狂中揭示这个方法 最新的HTML5标准不支持该元素的原因是什么 我知道该元素在 HTML 4 01 中已被弃用 但我不明白为什么 对我来说 这似乎完全合乎逻辑 您有一段文本 只想更改字体 或者使用
  • set issubset 性能差异取决于参数类型

    为什么提出此问题呢 我试图回答这个问题 检查所有值是否作为字典中的键存在比生成器理解更好的东西all 与某些函数执行的隐式循环相比 Python 循环即使在推导式中也会减慢执行速度 all i in bar for i in foo whe
  • 如何检索 UITableView 的 UISwitch 行号?

    我已经尝试了此处发布的几种方法 但我无法让我的表充满开关来返回已更改开关的单元格的索引值 我正在以编程方式创建包含表的视图 无 xib TableSandboxAppDelegate m我实例化视图控制器didFinishLaunching
  • Eclipse android 项目不创建空白活动

    每次我创建一个新的 android 项目时 我都会指定要创建空白活动 我进入了我为其命名的页面 但是点击完成后 空白的Activity就找不到了 我知道我可以手动创建空白活动文件 但我想知道为什么 Eclipse 没有创建空白活动 即使它在
  • 传递父类作为参数?

    是否可以在创建实例之前不指定父类 例如像这样的东西 class SomeParentClass something class Child unspecifiedParentClass something instance Child So
  • php类中的回调函数

    由于某些原因 我们的托管公司使用 PHP 5 2 甚至没有预安装 mysqli 和 PDO 我别无选择 只能重写部分代码以使其兼容 5 2 所以 这是我的问题 在 PHP 5 2 中 不支持匿名函数 因此我做了以下测试以确保我正确更改了代码
  • iOS 使 UIImage 的一部分透明

    我有一个 UIImage 其中一部分已被用户选择清除 使其透明 为了进行选择 我使用了 NSBezierPath 如何在 iOS 中清除 使 UIImage 的部分透明 首先 我假设您有 UIBezierPath iOS 而不是 NSBez
  • PHP cURL HTTP 代码返回 0

    我不明白 当我 echo httpCode 时 我总是得到 0 当我将 html brand 更改为损坏的网址时 我期待 404 有什么我想念或不知道的吗 谢谢 check if url exist ch curl init curl se
  • 如何重新构建默认的“Launcher”应用程序?

    我的目标是修改Launcher应用程序并动态修改和更改主题 我在以下位置看到了几个 家庭 应用程序http www cyrket com p android com stain46 taghome 看来他们采用了默认的主页 启动器 并对其进
  • printf 中用星号填充?

    我已经搜索了高低 但在 C 中的 printf 中 似乎只有零填充和空白填充 我正在寻找自己的填充 在本例中使用星号 例如 假设宽度为8个字符 Input 123 Ouput 123 00 Input 3输出 3 00 我怎样才能做到这一点
  • Bash 中的嵌套函数调用

    现在 我正在尝试将一个 bash 函数调用嵌套在另一个函数调用中 以便一个函数的输出用作另一个函数的输入 是否可以像我在这里尝试那样在 bash 中嵌套函数调用 首先 我定义了这两个函数 returnSomething return 5 f
  • 使用ggplot2过度绘制分组箱线图中的平均点

    我有一个像这样的 ggplot2 分组箱线图 p lt qplot factor cyl mpg data mtcars geom boxplot fill factor gear 我想透支平均点 我试过这个 p stat summary
  • 如何在 iOS 中使用 3D 纹理?

    我找不到glTexImage3D OpenGL ES 2 0 中的 OpenGL 函数 那么如何使用 3D 纹理 例如 tga 文件 有人知道如何在 OpenGL ES 2 0 中使用 3D 纹理吗 OpenGL ES 1 x 和 2 x
  • 替换列表列表中的字符串

    我有一个字符串列表列表 例如 example string 1 a r ntest string string 1 test 2 another r ntest string 我想更换 r n 有一个空格 并去掉 在所有字符串的末尾 对于普
  • Haskell 库导入语法

    对于这个非常基本的问题抱歉 在 GHCi 中 两者之间有区别吗 import Library Name and m Library Name 它们看起来是等效的 但我认为使用替代语法是有原因的 你说得对import Module and m