Удалить монаду пользовательского интерфейса с ThreepennyGUI
Я действительно плохо знаком с использованием tripenny GUI и хочу сделать что-то вроде этого:
on UI.click button $ const $ do
element reverseArea # set UI.text (reverse (get value area))
Поэтому, когда я нажимаю определенную кнопку на странице, я получаю текст из текстовой области, переворачиваю его и отображаю в другой текстовой области. Однако, когда я пытаюсь запустить это, я получаю ошибку:
Couldn't match expected type ‘[Char]’ with actual type ‘UI String’
Итак, я хотел знать, как я могу удалить монаду пользовательского интерфейса, чтобы я мог манипулировать текстом
1 ответ
Я не знаком с Threepenny-UI, но я думаю, вам нужно что-то вроде этого:
on UI.click button $ const $ do
s <- get value area
element reverseArea # set UI.text (reverse s)
Грубая идея такова: когда у вас есть значение типа UI String
ты можешь использовать x <- value
внутри do
чтобы получить строку (без UI
) и привязать его к переменной x
, Вы можете сделать это только если остальные do
clock в конце возвращает значение типа UI T
для какого-то типа T
,
Итак, используйте <-
по мере необходимости, чтобы получить чистые значения.
Кстати, это не относится к UI
каждая монада следует этому принципу. Вы найдете множество учебных пособий по монаде в сети.