gpt4 book ai didi

html - 使用 Lucid 作为简单示例

转载 作者:行者123 更新时间:2023-12-04 02:00:58 24 4
gpt4 key购买 nike

鉴于:

import Lucid
import Lucid.Base

mainPage :: Html ()
mainPage = div_ (p_ "hello")

我收到以下编译时错误:
/Users/kevinmeredith/Workspace/my-project/src/Lib.hs:9:18: error:
• Couldn't match type ‘HtmlT Data.Functor.Identity.Identity ()’
with ‘[Char]’
arising from a functional dependency between:
constraint ‘Term [Char] (HtmlT Data.Functor.Identity.Identity ())’
arising from a use of ‘p_’
instance ‘Term (HtmlT m a) (HtmlT m a)’ at <no location info>
• In the first argument of ‘div_’, namely ‘(p_ "hello")’
In the expression: div_ (p_ "hello")
In an equation for ‘mainPage’: mainPage = div_ (p_ "hello")

请问如何修复这个编译时错误?

最佳答案

正如 documentation 中所写:

Intro

(..)

For GHCi:

:set -XOverloadedStrings -XExtendedDefaultRules@
import Lucid

In a module: {-# LANGUAGE OverloadedStrings, ExtendedDefaultRules #-}

(..)



所以你需要打开 OverloadedStringsExtendedDefaultRules扩展名。

您可以通过 执行此操作编译 :
ghc -XOverloadedStrings -XExtendedDefaultRules file.hs

但也许更方便的是 打开文件头中的扩展 :
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ExtendedDefaultRules #-}


import Lucid
import Lucid.Base

mainPage :: Html ()
mainPage = div_ (p_ "hello")

就像编译器在错误消息中所说的那样, p_div_不要指望 String s,但是一个 HtmlT Data.Functor.Identity.Identity ()类型(某种字符串)。然而,这种类型是 IsString 的成员。 typeclass,因此可以将其视为“类字符串”类型,并且具有实现 [source code] :

instance (Monad m,a ~ ()) => IsString (HtmlT m a) where
fromString = toHtml


发生这种情况的原因是因为您可以 添加 HTML 字符 ,在这种情况下 (p_ "<foo>")看起来像: <p><foo></p> .但这非常不安全。首先通过 toHtml 处理它,结果将是 <p>&lt;foo&gt;</p> .

关于html - 使用 Lucid 作为简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47286938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com