System.Console.Haskeline.IO
| Safe Haskell | None |
|---|---|
| Язык | Haskell98 |
Описание
Этот модуль предоставляет управляемый, основанный на IO интерфейс к Haskeline, что может быть проще для интеграции в некоторые существующие программы или библиотеки.
В идеале, рекомендуется использовать более безопасный, монадический API из System.Console.Haskeline, если это возможно, вместо функций явного управления состоянием этого модуля.
Эквивалентный пример REPL:
import System.Console.Haskeline
import System.Console.Haskeline.IO
import Control.Concurrent
main = bracketOnError (initializeInput defaultSettings)
cancelInput -- This will only be called if an exception such
-- as a SigINT is received.
(\hd -> loop hd >> closeInput hd)
where
loop :: InputState -> IO ()
loop hd = do
minput <- queryInput hd (getInputLine "% ")
case minput of
Nothing -> return ()
Just "quit" -> return ()
Just input -> do queryInput hd $ outputStrLn
$ "Input was: " ++ input
loop hd
data InputState Источник
initializeInput :: Settings IO -> IO InputState Источник
Инициализировать сеанс взаимодействия с пользователем в формате строк.
closeInput :: InputState -> IO () Источник
Завершить и очистить сеанс взаимодействия с пользователем в формате строк. Блокируется до завершения существующего вызова queryInput.
cancelInput :: InputState -> IO () Источник
Отменить и очистить сеанс взаимодействия с пользователем. Не блокируется до завершения существующего вызова queryInput.
queryInput :: InputState -> InputT IO a -> IO a Источник
Выполнить одно действие (например, getInputLine) в рамках сеанса взаимодействия с пользователем.
Например, несколько вызовов queryInput с использованием того же InputState будут совместно использовать ту же историю ввода. В отличие от этого, несколько вызовов runInputT будут использовать отдельные истории, если они не используют один и тот же файл истории.
Эта функция не должна вызываться для закрытого или отменённого InputState.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/haskeline-0.7.2.1/System-Console-Haskeline-IO.html