理解 Haskell as 模式

2024-03-03

我正在通读 Real World Haskell,并试图理解 as 模式。

摘自书中(第 4 章):

suffixes :: [a] -> [[a]]
suffixes xs@(_:xs') = xs : suffixes xs'
suffixes _ = []

这本书解释了@符号,

“...将变量 xs 绑定到与右侧匹配的值 @ 象征。”

我无法理解这个解释。 假设我打电话

suffixes "hello"

明确地说,上面带有 @ 的行对此有何作用(在第一次迭代中)?我知道该函数的结果是什么,但看不到我们如何从上面的代码中得到它。


xs'将被绑定到字符串"ello".

xs将被绑定到字符串"hello".

The @模式允许您为变量命名,同时还匹配其结构,并可能为组件命名。

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

理解 Haskell as 模式 的相关文章

  • 在依赖类型的函数式编程语言中,扁平化列表是否更容易?

    在 haskell 中寻找一个可以展平任意深度嵌套列表的函数时 即应用的函数concat递归并在最后一次迭代时停止 使用非嵌套列表 我注意到这需要有一个更灵活的类型系统 因为随着列表深度的变化 输入类型也会变化 确实 有几个 stackov
  • Haskell 中列表列表的笛卡尔积

    给定一个长度列表的列表x所有子列表的长度都相同y 输出y x长度列表x包含每个子列表中的一项 例子 x 3 y 2 1 2 3 4 5 6 Output 2 3 8不同的输出 1 3 5 1 4 5 1 3 6 1 4 6 2 3 5 2
  • 如何在 Haskell 中漂亮地打印表格?

    我想在 Haskell 中漂亮地打印一个类似表格的数据结构 列列表 例如 Table StrCol strings a bc c IntCol ints 1 30 2 DblCol doubles 2 0 4 5 3 2 应该渲染类似 st
  • 标准的能力

    我发现了一些使用标准的旧例子here http www serpentine com blog 2009 09 29 criterion a new benchmarking library for haskell 看起来好像早在 2009
  • Haskell 输入返回元组

    我想知道 IO 函数是否可以返回元组 因为我想从这个函数中获取这些元组作为另一个函数的输入 investinput IO gt Char Int investinput do putStrLn Enter Username username
  • 为什么 ZipList 不是 List 的默认应用实例

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

    GHC专用库可以称为标准库吗 或者只有 Haskell 2010 报告中的那些才算数 许多 GHC 库可以通过 Haskell 报告中的函数来实现 可能与 C 绑定相结合 但其他语言依赖于 GHC 特定的扩展 因为语言报告中定义的当前 Ha
  • 如何通过“cabal build”或“stack build”构建带有图标的项目

    我想构建一个带有图标的可执行文件 通过谷歌搜索 我发现这里的说明 https wiki haskell org Setting an executable icon 但它只能通过编译源文件来工作ghc 如果我想构建一个具有可执行文件的项目c
  • Data.Sequence 中的 inits 和 tails 如何工作?

    Louis Wasserman 编写了当前的实现inits and tails in Data Sequence 他表示它们非常高效 事实上 只要查看代码 我就可以看到 无论它们在做什么 它们都是以干净 自上而下的方式进行的 这往往会给惰性
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实
  • 执行 Boyer-Moore 模式匹配时是否必须考虑编码?

    我即将实现 Boyer Moore 模式匹配算法的变体 具体来说是星期日算法 我问自己 我的字母表大小是多少 它是否取决于编码 可能的字符数 或者我可以假设我的字母表由 256 个符号组成 一个字节可以表示的符号数 在许多其他情况下 将字符
  • 如何在Haskell中实现词法分析器和解析器

    我在这里得到了这段代码 它是用Haskell结构的命令式编程语言编写的程序 所以问题是 我如何为这种语言实现词法分析器和解析器 该程序被定义为一系列语句有 6 种类型 goto write stop if goto 和 int int n
  • 在另一个字符串中查找子字符串的索引 Haskell

    我要创建一个带有两个参数 字符串 的函数 该函数应查看第一个参数是否是第二个参数的子字符串 如果是这种情况 它将返回每个出现的元组 其中包含子字符串的起始索引和子字符串的结尾索引 例如 f String gt String gt Int I
  • 约束包如何工作?

    背后的想法数据 约束 Forall http hackage haskell org packages archive constraints 0 3 2 doc html src Data Constraint Forall html据我
  • 纯 Haskell 代码需要线程池吗?

    In 现实世界 Haskell 第 28 章 软件事务内存 http book realworldhaskell org read software transactional memory html 开发了一个并发网络链接检查器 它获取网
  • Haskell 项目可以使用 cmake 吗?

    我正在计划一个用 Haskell 编写的项目 也许也有一些部分是用 C 编写的 对于构建系统 我决定不选择 Haskell 程序 cabal 的常见选择 主要是因为我想了解其他语言的构建程序是如何工作的 我听说过 CMake 我认为这是一个
  • “如何判断 Python 中的字符串是否重复?”的更复杂版本

    我正在读书这个帖子 https stackoverflow com questions 29481088 how can i tell if a string repeats itself in python我想知道是否有人可以找到将重复的
  • 函数式语言中的部分求值和函数内联有什么区别?

    我知道 函数内联就是用函数定义代替函数调用 部分评估是在编译时评估程序的已知 静态 部分 在 C 等命令式语言中 两者之间存在区别 其中运算符与函数不同 但是 在像 Haskell 这样的函数式语言 其中运算符也是函数 中 两者之间有什么区
  • Haskell:对 Num 类型类的使用感到困惑

    我很困惑为什么这有效 f Num a gt a gt a f x x 42 但这并没有 g Num a gt a gt a g x x 4 2 我本来就明白Num包含实现运算符的所有类型 因此 如果42 is an Int and 4 2
  • 如何使用foldr为列表创建显示实例?

    我想为我的数据类型 我的列表 编写自己的显示实例 到目前为止 我的方法是有效的 但我总是在末尾有一个逗号 我已经尝试用最后一个元素启动折叠并将其从列表中删除 但它很麻烦而且不起作用 有没有更简单的方法来获得正确的解决方案 实际 1 2 3

随机推荐

  • 了解 MVC 中的模型类与数据类

    多年来我一直使用 Webforms 开发 ASP Net 应用程序 并且完成了一些 MVC 应用程序 但从未真正完整地使用过该框架 这是由于大多数项目的时间限制 虽然 我使用的是 MVC 结构 但我仍然使用旧的方法 即不使用 Html Be
  • ggplot2图例不出现的原因[重复]

    这个问题在这里已经有答案了 我试图 失败 在我的 R ggplot2 图中显示一个涉及多个图的图例 我的数据框df代码如下 Individuals Mod 2 Mod 1 Mod 3 1 2 0 013473145 0 010859793
  • php 只处理第一个空白的爆炸函数

    我有一个字符串Hello This is a String 我只需要在 PHP 中将其分解为第一个White Space 这怎么可能 set limit范围 print r explode str 2 Reference http php
  • SQL Server 碎片问题

    我的数据库中有几个表 User 和 UserRecord 它们变得极其碎片化 例如 99 导致整个数据库以及网站陷入瘫痪 UserRecord 有点像该用户在某个时间点的快照 用户就像该用户的主记录 用户有 0 到多个 UserRecord
  • 自定义 STL 序列的最小嵌套 typedef 集?

    应在满足序列概念的自定义 STL 类中定义的最小嵌套 typedef 集是什么 自定义序列应兼容 std back insert iterator http www sgi com tech stl front insert iterato
  • 从 Apple Developer Portal 中删除开发者证书

    我错误地在我的 Apple 开发者帐户上创建了开发者证书 现在我想从门户中删除它 但我不喜欢任何方法来删除它 您能给我一个如何从苹果开发者门户删除证书的想法 建议吗 如果您错误地创建了证书或者想要重置证书 您可以从 Apple Develo
  • 如何连接位置数据(纬度、经度)

    我必须数据集 一个包含某个位置 经纬度 即测试 另一个包含纽约市所有邮政编码的纬度 经度信息 即 test2 test lt structure list trip count 1 10 dropoff longitude c 73 959
  • AWS Lambda 无法删除 Amazon S3 对象

    我正在尝试创建一个 AWS Lambda 函数 该函数处理上传到第一个存储桶的文件 然后将其保存到第二个存储桶 然后删除输入文件 问题是 当我尝试删除文件时 我得到了 message Access Denied code AccessDen
  • 复制的 std::list 中的垃圾

    我的图形类看起来像 class Graph public typedef unsigned int size type typedef std list
  • 具有静态存储持续时间的对象构造函数中的 std::cout 使用

    使用安全吗std cout在 C 98 C 03 中具有静态存储持续时间的对象的构造函数中 由此看来answer https stackoverflow com a 8785008 1608835它不是 但它不包含标准中的任何引用 只有在
  • 在另一个 for 循环中使用 for 循环

    我正在尝试以彩虹色打印文件 但是我有一个问题 这是我的代码 color 91 93 92 96 94 95 with open sys argv 1 as f for i in f read for c in color print 033
  • 哈希图与数组性能

    当数组的索引已知时 使用数组或 HashMap 是否 性能方面 更好 请记住 示例中的 对象数组 映射 只是一个示例 在我的实际项目中 它是由另一个类生成的 因此我不能使用单独的变量 数组示例 SomeObject objects new
  • PHP 和 mySQL 单引号还是双引号?

    我没有看到使用单引号或双引号有任何区别 我何时或为什么应该使用第一个而不是后者 我读过一些关于 SQL 我应该使用单打的文章 为什么 您应该使用单引号和mysql real escape string http php net manual
  • 在表格行上使用 Flexbox?

    我找不到任何快速答案 使用起来爽吗display flex 在表行上 tr 元素 感觉不对 但如果没有兼容性问题我会这样做 这是我正在谈论的内容的代码笔 https codepen io connorv pen boEYOB editors
  • 如何在不擦除 \perl\site\lib\ 和 \perl\site\bin\ 的情况下升级 Strawberry Perl?

    我下载了 5 12 3 安装程序来升级 5 12 1 安装 安装5 12 3后 我之前安装的cpan模块消失了 这是预期的行为吗 我应该在升级之前备份我的库以防止这种情况发生吗 我会声称这不应该是预期的行为 The site目录不是标准发行
  • 如何使 JsonResult 返回数组数组(不带字段名)而不是对象数组?

    我有一个日期 值对的 IEnumerable 列表 我将其作为 Json 列表返回以进行浮动 但是 当我调用 JsonResult 时 结果如下所示 Date date1 Value value1 Date date2 Value valu
  • Angular 1.2 的 debugInfoEnabled

    Angular 1 3引入了一个新的debugInfoEnabled https docs angularjs org api ng provider 24compileProvider debugInfoEnabled调用该方法可以提高性
  • 这是使用 jQuery 解析 XML 时的错误吗?

    好的 我会尝试尽可能简单地解释这一点 我正在尝试使用 jQuery 解析通过 Web 服务获得的 XML 一切都按其应有的方式进行 直到我注意到看在上帝的份上 我无法解析名为 image 的节点 长话短说 2小时后 我注意到 问题出在标签名
  • 如何解决文档未定义错误?

    我收到此错误 我以为是因为 node js 但我不确定 我该如何解决它 Running node c Users Lenovo Desktop projectjs index js c Users Lenovo Desktop projec
  • 理解 Haskell as 模式

    我正在通读 Real World Haskell 并试图理解 as 模式 摘自书中 第 4 章 suffixes a gt a suffixes xs xs xs suffixes xs suffixes 这本书解释了 符号 将变量 xs