我最近在互联网上读到的一些有趣文章的Haskell特殊版本,首先是一些 Haskell 实践文章:
-
我喜欢这种创建成熟编程语言的脚本方言的新趋势。与Babashka和Small Java一样,Hell 是 Chris Done 开发的一种 Shell 脚本 Haskell 方言。我通常用 Python 编写脚本,但我非常怀念静态类型和函数式编程,所以自然地,我对 Hell 感到兴奋。它现在还处于初级阶段,但希望它能成长为漂亮且可用的东西。
-
Haskell 因过于复杂而臭名昭著。我真的很喜欢 Patrick Thomson 提出的关于将 Haskell 投入实际使用的可靠建议: Towards Faster Iteration in Industrial Haskell ,他在其中撰写了有关 Haskell 编辑器和工具、GHC 扩展、类型系统、构建和部署的文章。
-
Haskell 是默认情况下惰性的少数编程语言之一,这通常会给程序员带来很多麻烦,导致空间泄漏、计算缓慢或难以调试堆栈跟踪。但有时可以利用惰性来编写更好的程序,就像 Jasper Van der Jeugt 所做的那样,创建了一种高效而优雅的布局算法,用于在Lazy Layout中创建照片拼贴画。
-
我喜欢人们使用先进的编程技术来解决日常问题!在用 Haskell 的 100 行计划每周锻炼中,Rodrigo Mesquita 使用 Haskell 中的逻辑编程为自己创建自定义锻炼计划。
-
由于某些未知的原因,函数式编程和音乐似乎很好地融合在一起。也许是因为两者都具有组合和组合的性质。在Haskell 中的 Cheap Guitars and Drums中,Alp Mestanogullari 使用 Haskell 通过实现Karplus-Strong 算法来进行一些数字音频合成。
-
Haskell 的另一个有趣用途是以干净有趣的方式解决问题:Vehbi Sinan Tunalioglu 使用图表库为其网站页面生成动态OpenGraph预览图像,详细信息请参阅更多 Haskell 图:动态 OpenGraph 图像。目前,我以最原始的方式为我的网站执行此操作:在浏览器中手动打开页面并保存屏幕截图。当然,我最终每页只执行一次,并且预览不是动态的。我计划将来改用 Vehbi 的技术。
继续阅读一些 Haskell 的有趣文章:
-
水分类是一款益智游戏,您必须将有颜色的水分类到瓶子中。在Haskell 中的 Water Sort中,Nicolas Audinet de Pieuchon 使用Elm 架构将游戏创建为 Haskell 中的终端 UI。我喜欢 Haskell 和函数式编程如何通过清晰地分离游戏逻辑和渲染逻辑来轻松编写和理解此类软件。
-
我已经在 Haskell 中完成了Avdent of Code几年,这让我对 Haskell 中高效且方便的数据结构非常感兴趣。 Brent Yorgey在 Haskell 竞争性编程系列中写了很多相关内容,最新的文章是关于有效计算列表滑动窗口的度量:堆栈、队列和 Monoidal Sliding Windows 。
接下来是一些 Haskell 概念文章:
-
Haskell 因难学而臭名昭著,我认为这种恶名是实至名归的。由于具有强大而灵活的类型系统,Haskell 允许用户以多种不同的方式解决他们的问题,其中一些方式对于许多人来说可能过于晦涩难懂。 Haskell 中类型安全的七个级别:Justin Le 的 Lists展示了在 Haskell 中使用列表的七种不同方式,其中只有一种是我们在通常的 Haskell 中称为 List (
[a]
) 的方式。了解这些仍然很有趣,谁知道呢,其中一些有一天可能会派上用场。 -
fix
是 Haskell 的聪明之作之一,非常酷且简洁,但需要一段时间才能理解。在“通过示例fix
”中,Gil Mizrahi 通过提供激动人心的示例解释了它的工作原理。但说实话,即使在阅读了很多相关内容之后,我还是花了很多尝试才得到它。 - 箭头是 Haskell 的一部分,我不太理解或使用。 Haskell 甚至为它们提供了特殊的语法。在《为什么是箭头?》亚历克西斯·金解释了为什么我们需要箭头。我不做评论,而是引用一部分:
箭头背后的关键见解来自以下观察:如果不应用它,就不可能分析一元函数
a -> mb
的结构,因为函数是不透明的——我们唯一能做的就是应用它。相反,我们需要用不透明的“类似函数的值”来构建我们的计算——我们必须能够做的不仅仅是应用它们。 -
这里是类别理论中一个相当复杂的概念的有趣用法:MangoIV 在资源管理的 Codensity中展示了一种使用Codensity monad来方便地管理 Haskell 代码中的资源的方法。
-
如果您读过任何 Haskell 代码,您就会知道 Haskell 喜欢编写简洁的代码(包括我自己)。这包括使用大量单字母变量名,这可能会使代码对于不熟悉的人来说非常不可行。但解决这个问题有一个方法,杰克·凯利在《单字母变量名词典》中捕获了有关此类变量的全面知识。
- Stephen Diehl 编写了一篇完整教程,介绍如何从头开始生成用于 JIT 编译的 X86 程序集,以及如何通过利用Monads to Machine Code中的 Monadic 接口来使其易于使用。
最后,用一些 Haskell 哲学来结束它:
- Adam Dueck 沉思道:“为什么每个人都讨厌 Haskell、爵士乐和纯数学? ”,并假设探索可能不会立即有用的有趣事物,从长远来看实际上可能会带来更多实际进展。
今年就这样了。祝您2025年幸福、繁荣!
喜欢、分享或评论Mastodon上的这篇文章。