标签: defmacro

为什么我们不用 LISP 语法编写 haskell?(我们可以!)

它......有点工作你们(这绝对编译,改编自https://hackage.haskell.org/package/scotty):

main :: IO ()
main = (do
  (putStrLn "Starting Server....")
  (scotty 3000 (do
    (get "/hello/:name"
        (text ("hello " <> (param "name") <> "!")))

    (get "/users"
      (json allUsers))

    (get "/users/:id"
      (json (filter (matchesId (param "id")) allUsers))))))
Run Code Online (Sandbox Code Playgroud)

(我不知道足够多的 haskell 来转换<>为简单的括号,但聪明的人可以很容易地。)

我们为什么要这样做?我们可以用任何 lisp 宏引擎预处理 Haskell!琐碎!。

想象一下。哈斯克尔和 LISP 在一起。我们可以统治银河系!

在此处输入图片说明

(我知道你的想法,但我实际上已经考虑过了:在这个例子中,Vader 是 Lisp,Luke 是 Haskell,Yoda 是 Alonzo Church)

(编辑“感谢所有回答和评论的人,我现在更聪明了。我认为还没有提到这种技术的最大问题,并由朋友 IRL 指出:如果你写一些 lispy 预处理器,你在你的 IDE 和工具中丢失类型检查和语法突出显示和理解。这听起来对我来说很难。”

“我现在正在关注https://github.com/finkel-lang/finkel项目,这是我想要的 lisp 风格的 Haskell 项目!” )

lisp macros haskell defmacro

4
推荐指数
2
解决办法
429
查看次数

标签 统计

defmacro ×1

haskell ×1

lisp ×1

macros ×1