如何将惰性文本转换为非惰性文本?

ako*_*nsu 25 haskell yesod

我是Haskell的新手,所以这可能是一个微不足道的问题.我看到一条错误消息说

Couldn't match expected type 'Data.Text.Lazy.Internal.Text'
with actual type 'Data.Text.Internal.Text'
Run Code Online (Sandbox Code Playgroud)

我认为问题是实际的类型是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 ()
Run Code Online (Sandbox Code Playgroud) 基本上我有一个带有textarea输入元素的yesod表单,我想通过电子邮件发送textarea的内容.

Tho*_*mas 22

toStrictData.Text.Lazy你会做你想要的(将懒惰转换为严格).

  • 从错误消息中,听起来他实际上需要`fromStrict`.另请注意,虽然文档将其显示为"文本 - >文本",但如果您尝试单击它们,您将看到它们实际上是来自不同模块的不同类型. (17认同)