Для функции getEvent
необходимо окно
Библиотека Haskell NCurses написана поверх библиотеки GNU ncurses, библиотеки C.Поскольку библиотека GNU ncurses имеет отдельные входные очереди для каждого окна, функция getEvent
должна знать, из какого окна получать входные данные, когда она вызывает соответствующие подпрограммы GNU ncurses.Потребность в окнах для отдельных входных очередей, вероятно, более очевидна, когда ввод не обрабатывается сразу после его получения.
Update
монада против Window
аргумент?Произвольный
Пакет UI.NCurses
содержит неэкспортированную функцию
withWindow :: (Window -> IO a) -> Update a
, которую, как предполагает ее тип, можно использовать для простого преобразования функции, которая принимает Window
в качестве входных данных для однойкоторый возвращает свой результат, заключенный в монаду Update
.Кажется, что люди, которые разработали библиотеку Haskell NCurses, просто думали, что getEvent
будет работать лучше в большинстве случаев, принимая Window
в качестве аргумента вместо использования Update
монады.