[240810] Haskell 缺少 Lisp 风格宏的原因及理想设计 | PC 游戏玩家仍然更喜欢 Windows 10

21 阅读2分钟

Haskell 缺少 Lisp 风格宏的原因及理想设计

本文探讨了 Haskell 缺少 Lisp 风格宏的原因,并提出了一种理想的设计方案。

Lisp 宏的特点:

  • 语法简洁
  • 无需编写解析器处理语法
  • 操作词法token树,而非抽象语法树

Haskell 元编程与 Lisp 宏的区别:

  • Haskell 的 Template Haskell 在编译期运行,而 Lisp 宏在运行期运行。
  • Haskell 的引用语法繁琐,而 Lisp 宏语法简洁。
  • Haskell 准引用需要解析为抽象语法树,而 Lisp 宏直接操作token树。

Haskell 无法实现 Lisp 风格宏的原因:

  • Template Haskell 要求生成抽象语法树,而无法直接操作token树。
  • GHC 的解析器生成的语法树与 Template Haskell 的语法树类型不同。

理想的 Haskell 宏设计:

  • 语法简洁,例如 aif!(calculate something; use it; something other)
  • 无需编写解析器,直接操作词法token树。
  • 提供将token树转换为抽象语法树的便捷方法。

代码示例:

Lisp 宏:

(defmacro aif (test-form then-form else-form)
  `(let ((it ,test-form))
    (if it ,then-form ,else-form)))

(aif (calculate-something) (use it) (do-something-else))

Haskell Template Haskell:

aif testForm thenForm elseForm =
  [| let it = $testForm
     in if it
     then $thenForm
     else $elseForm
  |]

$(aif [|calculate something|] [|use it|] [|something other|])

理想的 Haskell 宏:

aif!(calculate something; use it; something other)

Haskell 目前缺乏 Lisp 风格的宏,这限制了其元编程的能力。理想的 Haskell 宏设计应该借鉴 Lisp 宏的优点,提供简洁的语法和便捷的token树操作方式。

来源:
chrisdone.com/posts/haske…

PC 游戏玩家仍然更喜欢 Windows 10

根据最新的 Steam 硬件和软件调查,2024 年 7 月,Windows 11 的使用率下降到 45.81%,而 Windows 10 则上升到 50.16%。尽管两种操作系统的游戏性能相似,但 Windows 10 在某些游戏中可能提供更好的性能。

尽管微软计划在 2025 年停止支持 Windows 10,但 Windows 11 可能会在那之前取代 Windows 10。在 GPU 方面,Nvidia 的 RTX 3060 仍以 5.71% 的份额领先。

来源:
www.yahoo.com/tech/pc-gam…




更多内容请查阅 : blog-240810


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法