【发布时间】:2019-11-03 22:56:09
【问题描述】:
我一直在玩 Haskell,尝试使用 Servant 和 Lucid 创建一个非常简单的网站。此刻我达到了“我的代码有效,我不知道为什么”的阶段。 我尝试创建引导按钮。根据文档,它应该定义为:
<button type="button" class="btn btn-primary">Primary</button>
于是我找到了 Lucid.Html5 文档:https://hackage.haskell.org/package/lucid-2.9.11/docs/Lucid-Html5.html 并制定了创建按钮的函数:
button_ :: Term arg result => arg -> result
花了一些时间尝试找出正确的语法后,我想出了这个:
-- correctly replicates the html pasted above
button_ [type_ "button", class_ "btn btn-primary"] "Primary"
通常我会称其为胜利并专注于其他任务,但这对我来说似乎是一件真正的魔法。
文档说“button_”是一个函数,它接受一个参数“arg”并返回一个泛型类型“result”的值。但是,在我的应用程序中,“button_”显然需要两个参数并返回“Html ()”。
-- f arg arg again ??
button_ [type_ "button", class_ "btn btn-primary"] "Primary"
它必须对“Term”类型类做一些事情,但我不知道如何理解它。有人可以帮我弄这个吗 ?我尝试将模块加载到 ghci 并使用 ":t" 检查类型,但这对我没有太大帮助。
【问题讨论】:
-
不同的功能,但完全相同的魔法。
-
很公平。对不起,不知道这个事实:-)。我会查看您发布的文章,然后将我的问题作为重复项关闭。
标签: html haskell bootstrap-4 haskell-lucid