gpt4 book ai didi

haskell - 如何将变量保存为字节串?

转载 作者:行者123 更新时间:2023-12-02 18:05:41 25 4
gpt4 key购买 nike

这是一个愚蠢的问题,但如果我有这个:

a :: B.ByteString
a = "a"

我收到一条错误消息“无法将 B.ByteString 类型与 [Char] 类型匹配”。我知道问题出在哪里,但不知道如何解决,你能帮忙吗?谢谢。

最佳答案

默认情况下,Haskell 中的字符串文字始终被视为 String ,相当于[Char] 。大多数类似字符串的数据结构都定义了一个名为 pack 的函数。转换自,以及 bytestring包是 no exception (请注意,这是 pack 中的 Data.ByteString.Char8Data.ByteString 中的值是从 [Word8] 转换而来)。

import Data.ByteString.Char8(pack)

a :: B.ByteString
a = pack "a"

但是,GHC 还支持名为 OverloadedStrings 的扩展。 。如果您愿意启用此功能,ByteString实现一个名为 IsString 的类型类。启用此扩展后,字符串文字的类型如 "a"不再是[Char]而是 forall a. IsString a => a (类似于 3 等数字文字的类型是 forall a. Num a => a )。这将很高兴地专注于 ByteString如果类型在范围内。

{-# LANGUAGE OverloadedStrings #-}

a :: B.ByteString
a = "a"

如果您选择这条路线,请确保您了解 the proviso在此实例的文档中列出。对于 ASCII 字符,它不会造成问题,但如果您的字符串包含 ASCII 范围之外的 Unicode 字符,您需要注意这一点。

关于haskell - 如何将变量保存为字节串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73327474/

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