gpt4 book ai didi

haskell - 将字符串转换为 Turtle.FilePath

转载 作者:行者123 更新时间:2023-12-01 10:34:37 25 4
gpt4 key购买 nike

如何将连接的 String 转换为 Turtle FilePath?例如,以下程序尝试读取一些文本文件,将它们连接成一个新文件并删除旧文件。尽管启用了 OverloadedStrings 扩展,但它似乎不起作用:

{-# LANGUAGE OverloadedStrings #-}

module Main where

import System.Environment
import System.IO
import Control.Monad
import Turtle
import Turtle.Prelude
import qualified Control.Foldl as L

main :: IO ()
main = do
params <- getArgs
let n = read $ params !! 0
k = read $ params !! 1
-- Some magic is done here
-- After a while, read generated .txt files and concatenate them
files <- fold (find (suffix ".txt") ".") L.list
let concat = cat $ fmap input files
output (show n ++ "-" ++ show k ++ ".txt") concat
-- Remove old .txt files
mapM_ rm files

抛出的错误是:

Couldn't match expected type ‘Turtle.FilePath’
with actual type ‘[Char]’
In the first argument of ‘output’, namely
‘(show n ++ "-" ++ show k ++ ".txt")’

切换到 output "example.txt"concat 就可以了。 String 不就是 [Char] 的类型别名吗?

最佳答案

String 只是 [Char] 的别名,是的。

您看到上面写着 {-# OverloadedStrings #-} 的地方了吗?它的作用是使编译器在您编写文字字符串 的任何地方自动插入fromString。它不会自动将它插入到您触摸字符串的其他任何地方,只有当它是一个字符串常量时。

如果您在构建路径的整个表达式的结果上手动调用 fromString,这可能会修复它。 (特别是,show 函数总是返回 String,而不是任何类型的重载字符串。)

关于haskell - 将字符串转换为 Turtle.FilePath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37939019/

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