概述
在本任务中,您将重构文本匹配正则表达式引擎,以使用更强类型的接口。这些更强的类型不只减小了出现错误的可能性,并且提升了代码库的可读性和清晰度。
在强类型版本的基础上,您将实现许多额外的方便组合器,用于处理正则表达式。这项做业将使你有使用Haskell类型系统扩展(特别是GADTs)的经验,以及使用单子和应用函子编程的经验,并向你介绍诸如替代词之类的概念。
1提供的代码提供的代码由多个模块组成:兔子包含您应该实现的代码存根。无类型.hs包含正则表达式引擎的非类型化、未扩展版本。哈雷蒙.hs包含用于编写匹配算法的一元类型。测试.hs包含用于运行测试的主函数。测试/支持.hs包含运行测试的支持代码。测试/单元测试.hs包含基本正则表达式的属性。测试/成绩单.hs包含一些你的组合子的验收测试,用于分析新南威尔士州的成绩单。测试/示例.hs包含此规范中的全部示例,做为单元测试。
注意:您只能提交'兔子,所以请确保您提交的文件与全部其余文件的原始版本一块儿编译。正则表达式正则表达式是描述和操做字符串模式的流行方法。
它们一般用于搜索与特定模式匹配的子字符串,而后从该子字符串中提取信息。许多语言将正则表达式做为内置功能或标准库包含在其中。若是你作过COMP2041,你将会接触到几种这样的语言。不幸的是,Haskell不是一种语言。为了解决这个问题,helenthehare开始为Haskell设计一个正则表达式库H.A.R.E。她首先将正则表达式的基本构建块编码为Haskell数据类型。 正则表达式
更多讨论能够+V:xiaolajiao0414算法