Удалить монаду пользовательского интерфейса с 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каждая монада следует этому принципу. Вы найдете множество учебных пособий по монаде в сети.

Другие вопросы по тегам