1

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

任何帮助表示赞赏,在此先感谢。

4

0 回答 0