Haskell 使用什么类型的范围?

2024-02-28

我试图弄清楚 Haskell 是否使用动态或静态作用域。 我意识到,例如,如果您定义:

let x = 10

然后定义函数

let square x = x*x

您有 2 个不同的“x”,这是否意味着它是动态作用域的?如果不是,它使用什么范围,为什么?

另外,Haskell 变量可以有别名(同一内存位置/值的不同名称)吗?

Thanks.


Haskell 使用(广义上)与大多数其他语言完全相同的词法范围。

eg.

x = 10

结果通过引用的值x在全球范围内,而

square x = x * x

将导致x词法作用域为函数 square。如果您认为上述形式是以下语法的完美形式,这可能会有所帮助:

square = \ x -> x * x

至于你的其他问题,我不确定你所说的别名是什么意思

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

Haskell 使用什么类型的范围? 的相关文章

  • 作用域对象的 Xtext 示例

    我正在寻找一个示例 在 XText 中 说明如何在用户定义的对象成员上实现代码完成 据我所知 我需要使用 IScope 但所有这些如何连接在一起还不清楚 鉴于trait是用户定义的类型 我如何构建语法来编码完成 验证其中包含的方法Strin
  • Cabal 在 NixOS 上构建时找不到外部库

    我正在尝试使用 cabal2nix 在 NixOS 上构建一个内部 Haskell 项目 它包装 并因此依赖 一个外部库 在 Ubuntu 上可以通过以下方式构建 wget设置源 然后运行make make install ldconfig
  • 在 Haskell 中编写 Web 应用程序的最简单方法是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的项目中更多地使用 Haskell 并且我认为如果我可以开始将它用于 Web 应用程序 这将真正
  • 在 python 中检查堆栈中的局部变量

    我编写了一个小函数 它在堆栈中查找一级并查看其中是否有变量 但是我如何将这个函数变成一个可以在堆栈中一直查找直到找到一个局部变量并购买某个特定名称的函数 import inspect def variable lookup variable
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • 从 createProcess 外部获取的句柄读取

    我正在尝试创建一个进程 并通过我在外部提供的句柄与其进行通信createProcess功能 stdOutH lt openFile logDir gt stdout log ReadWriteMode hSetBuffering stdOu
  • IIFE 和 call 的区别

    之间有区别吗 function call this and function or var MODULE function this hello world call MODULE and var MODULE function m m h
  • 机器和管道(或其他类似的库)之间的概念区别是什么?

    我想学习这个概念 以便我能够理解和使用诸如machines http hackage haskell org package machines 我试着跟随R nar Bjarnason 关于机器的演讲 https dl dropbox co
  • 多个指令 [myPopup、myDraggable] 请求新的/隔离的范围

    我编写了一个对话框指令 myPopup 和另一个用于拖动此对话框的指令 myDraggable 但我总是收到错误 多个指令 myPopup myDraggable 请求新的 隔离的范围 这是一个笨蛋 http plnkr co edit k
  • 在 nohup 中使用别名

    为什么以下不起作用 alias sayHello bin echo Hello world sayHello Hello world nohup sayHello nohup appending output to nohup out no
  • Haskell:Where 与 Let

    我是 Haskell 的新手 我很困惑Where vs Let 它们似乎都提供了相似的目的 我读过一些比较Where vs Let但我很难辨别何时使用它们 有人可以提供一些背景信息或者一些示例来说明何时使用其中一种而不是另一种吗 哪里与让
  • 在 Objective-C 中从异步块增加变量

    我在 Objective C 中开发的服务遇到了一些难题 该服务的目的是解析核心数据实体列表并为每个对象下载相应的图像文件 该服务的原始设计因太多同时下载请求而阻塞了我的网络服务器 为了解决这个问题 我将负责执行下载请求的代码移至递归方法中
  • 如何在 Haskell 中获得列表的中间位置?

    我刚刚开始使用 Haskel 学习函数式编程 我正在慢慢度过Erik Meijer 在 Channel 9 的讲座 http channel9 msdn com shows Going Deep Lecture Series Erik Me
  • 生成所有可能的树

    给定以下数据类型定义 data FormTree Empty Node FormTree FormTree deriving Show 我想编写一个函数 它生成一个无限列表 其中包含按长度排序的所有可能的树 例如节点数量 下面的代码几乎满足
  • 类 GADT 类型变量的未来角色?

    A 昨天的问题 https stackoverflow com q 41135212 3072788有一个定义HList 来自HList https hackage haskell org package HList 0 4 1 0 doc
  • 将系统命令的结果绑定到 Haskell 中的变量

    如何在 Haskell 中运行系统命令and将其结果 即标准输出 绑定到变量 在伪 Haskell 中 我正在寻找类似以下内容的内容 import System Process main do output lt callCommand e
  • 使用 nix 在 Mac OS X 上由于“架构 x86_64 的未定义符号”而导致“堆栈构建”失败

    首先是错误消息 stack build Linking Users yuzhao stack setup exe cache x86 64 osx tmp Cabal simple mPHDZzAJ 2 2 0 1 ghc 8 4 4 cl
  • 如何获取调用函数的“this”值?

    如果我有一个这样的函数 function foo this console log this function bar bar prototype func function foo this var test new bar test f
  • 为什么 Parsec 的 sepBy 停止并且不解析所有元素?

    我正在尝试解析一些逗号分隔的字符串 该字符串可能包含也可能不包含具有图像尺寸的字符串 例如 hello world 300x300 good bye world 我写了下面的小程序 import Text Parsec import qua
  • 在 Haskell 中增长数组

    我想在 Haskell 中实现以下 命令式 算法 给定一个序列对 e0 s0 e1 s1 e2 s2 en sn 其中 e 和 s 部分不一定是自然数不同的是 在每个时间步都会随机选择该序列的一个元素 例如 ei si 并根据 ei si

随机推荐

  • 在构造函数中初始化列表

    我需要创建一个类 该类还将两个事件列表初始化为新的空列表 我不确定这是否是对我的要求 但我知道如何创建列表以及如何创建构造函数 我创建了 2 个列表 现在我应该创建构造函数 这是我的清单之一 List
  • Android - 键盘消失时仍保留空白

    我的键盘有问题 当它消失时 它所占据的空间仍然是空白 其余布局不会调整 正常屏幕 带键盘 键盘已关闭 我以前从未见过这个 所以我什至不知道从哪里开始寻找 4 2 2 和 5 1 上都会发生这种情况 另一条重要信息是 这是一个包含所有内容的自
  • 每 n 个位置将列表中的项目插入到另一个列表

    我有以下清单 vector 1 2 3 4 5 6 7 8 9 10 inserted elements 2 2 2 2 2 我想通过插入每两个元素来得到以下结果 output 1 2 2 3 4 2 5 6 2 7 8 2 9 10 2
  • 仅连接那些非 NA 的列

    我有一个数据集 某些列的某些行中包含 NA DT lt data table ID c 1 2 1 3 A c NA NA 1 NA 3 B c 4 5 NA 5 6 C c 7 8 NA NA 9 DT ID A B C 1 1 NA 4
  • Android 模拟器 30.4.5 无法在 MacOS 上运行

    系统信息 MacOs 版本 11 3 测试版 Android Studio 版本 4 1 2 Android 模拟器版本 30 4 5 Android HAXM 版本 7 5 1 错误堆栈 emulator Android emulator
  • 为什么指向指针的指针与指向数组的指针不兼容?

    好吧 我无法理解指向指针的指针与指向数组的指针 考虑以下代码 char s Hello World char p1 s char p2 s printf c n p1 Works printf c n p2 Segmentation fau
  • 为什么我不能使用 jQuery 延迟删除调用

    我想要一个 div 淡出然后被删除 div delay 1000 fadeOut 300 div delay 1300 remove 不幸的是 这只是直接删除了 div 没有任何延迟 为什么我无法延迟删除操作 有哪些解决方案 Thanks
  • 如何从 Rails 的范围中构建选择标签

    我想要一个包含值 10 20 30 等直到 100 的下拉列表 在 ruby 中可以通过以下方式完成 10 100 step 10 i p i 我如何将其转换为选择标签 我试过 但这是打印10 11 12 13 100 你几乎已经拥有了
  • 垃圾收集的“孤岛”

    谁能解释一下这个概念隔离岛垃圾收集 对象 A 引用对象 B 对象 B 引用对象 A 对象 A 和对象 B 都没有被任何其他对象引用 那是一座与世隔绝的孤岛 基本上 隔离岛是一组相互引用的对象 但它们不被应用程序中的任何活动对象引用 严格来说
  • 隐藏行后重新应用表条带化 (Twitter Bootstrap)

    我正在使用 Bootstrap 并且有一个条带表 可以通过选择表单上的一些选项来过滤该表 JavaScript 解释表单输入 并隐藏表中与所选条件不匹配的行 但是 这会破坏表上的表条带化 具体取决于隐藏的行 灰色行紧邻灰色行 白色行紧邻白色
  • 使用 JSP 从服务器检索并显示图像

    我有一段代码可以帮助我将图像保存在服务器上 我需要知道如何在 div 上显示保存的图像 JSP代码
  • vis.js 分层布局中的级别排序

    我有一个相当简单的节点层次结构 但是当 vis js 绘制它们时 每个级别上的节点顺序没有多大意义 有很多交叉边 屏幕截图 默认布局 https i stack imgur com Y3VtI jpg 我希望得到与此处给出的布局类似的布局
  • 用于编辑 .fla 文件的免费 Flash IDE

    我们有一个 fla 文件 我们需要一个 IDE 来打开 fla 文件并调试操作脚本 我们尝试了 Flash Develop 开源 但该 IDE 无法打开 fla 文件 是否有任何其他免费 开源 IDE 我们可以用来打开和调试 fla 文件
  • 使用 JQuery Datepicker 仅显示月份

    我希望能够使用JQuery UI 日期选择器 http jqueryui com demos datepicker 允许用户选择特定月份 但无法选择该月中的特定日期 日期选择器上的前进和上一步按钮会将用户带到不同的位置years 而不是不同
  • 需要想法:选择表中的行

    我正在为客户开发一个网站 它需要一种特殊的方式来创建计算 在表中 我必须创建具有相同 End 的行组 由于一开始只有一行 90 日期为 2011 年 11 月 24 日 因此您可以忽略它 例如 我必须选择带有日期的行 2011 年 11 月
  • Xlib 截图调用

    看到问题后如何在Linux中截图 高fps 编程 https stackoverflow com questions 25162580 how to take screenshot high fps in linux programming
  • 是否可以在 SASS 或 LESS 中将一个类或标签别名为另一个类或标签?

    我正在尝试使用 Less 或可能使用 Sass 使我的 bootstrap 2 1 标记更加语义化 考虑 Bootstrap 标准导航栏的以下标记
  • STL自定义分配器来管理不同的内存空间

    我想使用 STL 自定义分配器类的不同实例来管理不同的内存空间 然后能够为 STL 容器指定分配器实例 以便每个容器仅从其分配的内存空间中提取 但我不知道如何才能做到这一点 我了解如何将分配器类型传递到 STL 容器的模板参数中 但我想要类
  • 何时在 Node js 中使用 eventEmitter?

    我正在学习 Node js 中的新概念 即事件 但我找不到应该在哪里使用它 我想要任何真实的场景 但我找不到任何关于此的文章或博客 var events require events var eventEmitter new events
  • Haskell 使用什么类型的范围?

    我试图弄清楚 Haskell 是否使用动态或静态作用域 我意识到 例如 如果您定义 let x 10 然后定义函数 let square x x x 您有 2 个不同的 x 这是否意味着它是动态作用域的 如果不是 它使用什么范围 为什么 另