Haskell映射(?)操作具有不同的第一个和最后一个函数

Ral*_*lph 3 base64 haskell split map

我正在编写一个运行在ByteString值列表上的Haskell函数.我需要对第一个和最后一个项目执行不同的操作(如果列表只有一个项目,则可能相同).

具体来说,我想写出以下内容:

  "item-1\
  \item-2\
  \item-3\
  ...
  \item-n"
Run Code Online (Sandbox Code Playgroud)

其中item-1以双引号item-n开头,以反斜杠结尾,以反斜杠开头,以双引号结束.所有项目之间item-1item-n开始和结束都有反斜杠.我发布了一个base64编码的值作为Haskell String进行一些代码生成.我已经将原始(长)base64编码ByteString分成了每个64个字符长的块.

Ral*_*lph 11

我刚刚意识到我的问题是愚蠢的.

我可以intercalate用来"\\\n\\"在项目之间注入,然后在前面添加一个双引号:

import qualified Data.ByteString.Lazy.Char8 as L
(L.pack "\"") `L.append` (L.intercalate "\\\n\\" items) `L.append` (L.pack "\"")
Run Code Online (Sandbox Code Playgroud)

样本输出:

"H4sIAAAAAA\
\AAA2NgAAMm\
\CMXA7JRYxI\
\Am5JafD2Uy\
\AgDvdHs6Lg\
\AAAA==\
\"
Run Code Online (Sandbox Code Playgroud)