类型作为接口

2024-07-23

这篇文章探讨了在Haskell中使用类型作为接口的优缺点。作者首先展示了如何使用简单的数据类型和包装类型来表示带有发送方、接收方和时间戳等附加信息的网络消息。这种方法类似于接口,允许对不同类型的数据使用相同的函数。然而,作者也指出了这种方法的局限性,即它不能很好地组合,例如,当需要处理嵌套的包装类型时。然后,作者提出了使用类型类来解决组合问题,并提供了一些示例来说明如何实现这一点。最后,作者建议采用类似于网络协议的分层方法来设计数据类型,并强调了简单性和可维护性的重要性。

阅读更多
未分类

消防员山姆历险记:彭特潘迪地图

2024-07-05

为了让年幼的孩子体验桌面角色扮演游戏,作者尝试用动画片《消防员山姆》中的彭特潘迪小镇作为背景,通过互动故事的方式引导孩子们进行游戏。为了增强游戏的趣味性和代入感,作者尝试根据动画片中的地图片段,拼接出一张完整的彭特潘迪地图,并将其打印出来作为游戏的辅助工具。

阅读更多

代码审查能找到bug吗?

2024-07-02

文章驳斥了一篇微软研究报告的观点,该报告声称代码审查并不能有效地发现错误。作者引用了多项研究结果,证明代码审查可以找到高达60%的代码缺陷,并且效率极高,每十分钟就能发现一个缺陷。此外,代码审查还能帮助开发者快速熟悉代码库,提高代码质量。文章认为,微软研究报告的结论可能是由于代码审查流程管理不善导致的,例如审查时间过长,而并非代码审查本身的缺陷。

阅读更多
未分类

何时才算一名优秀的反恐精英玩家?

2024-05-11

文章探讨了如何评估《反恐精英》游戏中的玩家技能。作者认为,仅仅依靠杀敌/死亡率并不能完全准确地评估玩家水平,更重要的是玩家对团队获胜的贡献程度。作者分析了Leetify评分系统,该系统通过统计玩家在游戏中的各种事件,并根据这些事件对获胜概率的影响来评估玩家水平。作者通过分析自己的比赛数据,发现击杀率和死亡率对Leetify评分的影响最大,并得出一个结论:如果玩家在与对手的交火中有至少54%的胜算,就应该选择交战,否则就应该选择撤退。

阅读更多