Data types à la carte (2008)
摘要
本文提出了一种从独立组件组合数据类型和函数的技术,并将该方法扩展到结合自由单子,从而实现了对Haskell的IO单子的模块化结构。
<p><a href="https://lobste.rs/s/8ukphx/data_types_la_carte_2008">评论</a></p>
查看缓存全文
缓存时间: 2026/05/31 02:14
# 数据结构 à la carte | 函数式编程杂志 | 剑桥核心
来源:https://www.cambridge.org/core/journals/journal-of-functional-programming/article/data-types-a-la-carte/14416CB20C4637164EA9F77097909409
## 摘要
核心共享和 HTML 视图不可用于此内容。但鉴于您可以访问此内容,可通过“保存 PDF”操作获取完整 PDF 版本。
本文描述了一种技术,用于从独立的单个组件组装数据结构和函数。我们还探讨了如何将同一技术用于组合自由单子,并进而结构化 Haskell 的单一 IO 单子。
## 参考文献
Awodey,S.(2006)范畴论.牛津逻辑指南,第49卷.牛津:牛津大学出版社.CrossRef (https://dx.doi.org/10.1093/acprof:oso/9780198568612.001.0001)Google Scholar (https://scholar.google.com/scholar_lookup?title=Category+Theory.&author=Awodey+S.&publication+year=2006)
Johann,P.&Ghani,N.(2007)初始代数语义就够了!*类型化 Lambda 演算及其应用*.计算机科学讲义,第4583卷. Springer.CrossRef (https://dx.doi.org/10.1007/978-3-540-73228-0_16)Google Scholar (https://scholar.google.com/scholar?q=Johann,+P.+&+Ghani,+N.+(2007)+Initial+algebra+semantics+is+enough!+Typed+Lambda+Calculi+and+Applications.+Lecture+Notes+in+Computer+Science,+vol.+4583.+Springer.)
Johann,P.&Ghani,N.(2008)基于 GADT 的结构化编程基础.收录于《ACM SIGPLAN-SIGACT 程序设计原理研讨会论文集》,加州旧金山,第297–308页.Google Scholar (https://scholar.google.com/scholar_lookup?title=Conference+record+of+the+ACM+SIGPLAN-SIGACT+Symposium+on+Principles+of+Programming+Languages&author=Johann+P.&author=Ghani+N.&publication+year=2008&pages=297-308)
Liang,S.,Hudak,P.&Jones,M.(1995)单子变换器与模块化解释器.收录于《ACM SIGPLAN-SIGACT 程序设计原理研讨会论文集》,加州旧金山,第333–343页.Google Scholar (https://scholar.google.com/scholar_lookup?title=Conference+record+of+the+ACM+SIGPLAN-SIGACT+Symposium+on+Principles+of+Programming+Languages&author=Liang+S.&author=Hudak+P.&author=Jones+M.&publication+year=1995&pages=333-343)
Löh,A.&Hinze,R.(2006)开放数据类型与开放函数.*原则与实践的声明式程序设计:第8届 ACM SIGPLAN 声明式程序设计原理与实践研讨会论文集*,意大利威尼斯,第133–144页.CrossRef (https://dx.doi.org/10.1145/1140335.1140352)Google Scholar (https://scholar.google.com/scholar?q=L%C3%B6h,+A.+&+Hinze,+R.+(2006)+Open+data+types+and+open+functions.+Princ.+Prac.+Declarative+Program.+Proceedings+of+the+8th+ACM+SIGPLAN+Symposium+on+Principles+and+Practice+of+Declarative+Programming.+Venice,+Italy,+pp.+133%E2%80%93144.)
Lüth,C.&Ghani,N.(2002)使用余积组合单子.收录于《ACM SIGPLAN 函数式编程国际会议论文集》,宾夕法尼亚州匹兹堡,第133–144页.CrossRef (https://dx.doi.org/10.1145/581478.581492)Google Scholar (https://scholar.google.com/scholar?q=L%C3%BCth,+C.+&+Ghani,+N.+(2002)+Composing+monads+using+coproducts.+In+Proceedings+of+the+ACM+SIGPLAN+International+Conference+on+Functional+Programming.+Pittsburgh,+PA,+pp.+133%E2%80%93144.)
Meijer,E.,Fokkinga,M.&Paterson,R.(1991)使用香蕉、透镜、信封和带刺铁丝进行函数式编程.收录于《ACM 函数式编程语言与计算机体系结构会议论文集》.CrossRef (https://dx.doi.org/10.1007/3540543961_7)Google Scholar (https://scholar.google.com/scholar?q=Meijer,+E.,+Fokkinga,+M.+&+Paterson,+R.+(1991)+Functional+programming+with+bananas,+lenses,+envelopes+and+barbed+wire.+In+Proceedings+ACM+Conference+on+Functional+Programming+Languages+and+Computer+Architecture.)
Sheard,T.(2001)基于两级类型和参数化模块的泛型合一.收录于《ACM SIGPLAN 函数式编程国际会议论文集》,意大利佛罗伦萨,第86–97页.Google Scholar (https://scholar.google.com/scholar?q=Sheard,+T.+(2001)+Generic+unification+via+two-level+types+and+parameterized+modules.+In+Proceedings+of+the+ACM+SIGPLAN+International+Conference+on+Functional+Programming.+Florence,+Italy,+pp.+86%E2%80%9397.)
Swierstra,W.&Altenkirch,T.(2007)野兽之美:尴尬阵容的函数式语义.收录于《ACM SIGPLAN Haskell 研讨会论文集》,德国弗赖堡,第25–36页.CrossRef (https://dx.doi.org/10.1145/1291201.1291206)Google Scholar (https://scholar.google.com/scholar?q=Swierstra,+W.+&+Altenkirch,+T.+(2007)+Beauty+in+the+beast:+A+functional+semantics+of+the+awkward+squad.+In+Proceedings+of+the+ACM+SIGPLAN+Haskell+Workshop.+Freiburg,+Germany,+pp.+25%E2%80%9336.)
相似文章
Haskell中的Profunctor装备
这篇博客文章提供了一个用Haskell实现的Profunctor装备的玩具实现,包括自然变换和组合,旨在让范畴论概念对程序员来说更易于理解。
余代数和自动机
一份介绍性的 literate Haskell 文档,探讨余代数和自动机之间的关系,展示如何利用范畴论中的 fold 和 unfold 操作来建模状态机。
并行折叠
探索使用幺半群进行易并行数据处理,表明霍纳规则和Boyer-Moore多数投票算法等传统串行算法可通过幺半群组合实现并行化。同时介绍了垂直幺半群组合,用于高效的嵌套分组聚合。
声明式数据服务:用于组合数据系统的结构化智能体发现
本文提出了声明式数据服务(DDS),这是一种从声明式用户意图出发,对数据系统组合进行结构化智能体发现的架构。它将全局搜索分解为有界子搜索,并在一个交易后端工作负载上展示了收敛性,而在此负载上无界发现会失败。
递归模式的隐秘历史
一场演讲,追溯从goto面条代码到结构化循环,再到递归模式的演化历程,展示控制流抽象如何映射数据结构,以及为何大多数语言仍把最好的组合子藏起来。