Haskell新手在这里也是第一次在这里提问,对于我可能错过的任何事情提前道歉。
我正在编写一个 repl 函数,该函数接受用户输入,将输入添加到列表中,并使用 haskeline 使用先前输入的单词来完成用户输入。
到目前为止,我只能使用在运行时之前定义的静态列表来完成单词。
1-如何将输入单词添加到 repl 列表中(已解决...?)
2- 如何启用 searchFunc 来查询 repl 循环中的列表?
我当前的代码:
import Data.List
import System.Console.Haskeline
-- main method
main :: IO ()
main = runInputT mySettings (repl [])
repl :: [String] -> InputT IO ()
repl list =
do
minput <- getInputLine "> "
case minput of
Nothing -> do
outputStrLn "Error"
repl list
Just input ->
do
outputStrLn "Successfully added input to list"
-- < 1- add input word to list ... is this correct?>
repl (input:list)
mySettings :: Settings IO
mySettings = Settings { historyFile = Just "myhist",
complete = completeWord Nothing " \t" $ return . searchFunc,
autoAddHistory = True
}
searchFunc :: String -> [Completion]
-- < 2- complete word using list of words from repl>
searchFunc str = map simpleCompletion $ filter (str `isPrefixOf`) listFromRepl
任何帮助表示赞赏,在此先感谢。