【问题标题】:How to convert from lazy text to non-lazy text?如何从惰性文本转换为非惰性文本?
【发布时间】:2011-11-22 07:52:39
【问题描述】:

我是 Haskell 的新手,所以这可能是一个微不足道的问题。我看到一条错误消息,上面写着

Couldn't match expected type 'Data.Text.Lazy.Internal.Text'
with actual type 'Data.Text.Internal.Text'

我认为问题在于实际类型是 Data.Text.Text 并且它需要惰性文本。如何将一种转换为另一种?

编辑:

这是给出此错误的简化代码。

{-# LANGUAGE OverloadedStrings #-}
import Data.Text.Lazy.Encoding import Network.Mail.Mime import Yesod
data FormData = FormData { dataField :: Textarea } deriving Show
part d = Part { partType = "text/plain; charset=utf-8" , partEncoding = None , partFilename = Nothing , partContent = encodeUtf8 $ unTextarea $ dataField d , partHeaders = [] }
main = return ()
基本上我有一个带有 textarea 输入元素的 yesod 表单,我想通过电子邮件发送 textarea 的内容。

【问题讨论】:

  • 你从哪里得到“encodeUtf8”函数?

标签: haskell yesod


【解决方案1】:

来自Data.Text.LazytoStrict 会按照您的要求执行(将惰性转换为严格)。

【讨论】:

  • 从错误信息来看,他确实需要fromStrict。另请注意,虽然文档将其显示为 Text -> Text,但如果您尝试单击它们,您会发现它们实际上是来自不同模块的不同类型。
  • 我希望能澄清我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多