gpt4 book ai didi

haskell - Haskell 终端输入中的可编辑默认字符串

转载 作者:行者123 更新时间:2023-12-05 02:30:26 24 4
gpt4 key购买 nike

我希望能够提示用户输入(比如 FilePath),但也希望提供一个 mutable/interactive 字符串作为默认值,所以改为让用户键入完整路径,我可以提示:

C:\Users\John\project\test

并让他们能够退格 4 次并输入 final 以生成 C:\Users\John\project\final,而不是键入整个路径。

然而,使用 putStrSystem.IO.hPutStr stdout 打印默认字符串确实将此默认字符串打印到终端,但不允许我来改变其中的任何一个。例如

import System.IO

main = do
hSetBuffering stdout NoBuffering
putStr "C:\\Users\\John\\project\\test"
l <- getLine
doSomethingWith l

我怀疑 Data.Text.IOinteract 可以做我想做的事,但我无法让它工作。

如有任何建议,我们将不胜感激。

最佳答案

getLine 不提供任何行编辑功能。为此,您可以使用类似 haskeline 的库相反,例如:

import System.Console.Haskeline

main :: IO ()
main = do
runInputT defaultSettings $ do
mInput <- getInputLineWithInitial "Enter path: "
("C:\\Users\\John\\project\\test", "")
case mInput of
Nothing -> do
outputStrLn "No entry."
Just input -> do
outputStrLn $ "Entry: " ++ show input

另一种方法是使用提供行编辑的包装器调用程序,例如 rlwrap .为了构建更复杂的全屏文本 UI,还有 brick ,它在 Brick.Widgets.Edit 中提供了一个简单的文本编辑组件。

关于haskell - Haskell 终端输入中的可编辑默认字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71851486/

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