Я использую следующие функции для генерации GUID:Сaching результатов функции в Haskell
import Data.UUID as UV
import Data.UUID.V1 as UV1
generateUUID :: String
generateUUID = UV.toString $ fromJust $ unsafePerformIO UV1.nextUUID
И я использую generateUUID
для создания элементов
createWidgetUI element uuid =
WidgetUI { wui_title = ""
, wui_id = uuid
, wui_attr_style = ""
, wui_attr_class = ""
, wui_styles = []
, wui_scripts = []
, wui_contents = []
, wui_children = []
, wui_element = element
}
wuiPanel :: UI WidgetUI
wuiPanel = do
return $ createWidgetUI elem uuid
where
uuid = generateUUID
elem = ContainerUI $ H.div
Когда я называю метод wuiPanel
несколько раз, я получаю то же значение UUID! Но мне нужно, чтобы каждый метод вызывал метод wuiPanel
, чтобы получить элементы с различным значением UUID. Я не могу понять, как его реализовать.
Похоже, вы используете [UI monad] (http://hackage.haskell.org/package/threepenny-gui-0.6.0.6/docs/Graphics-UI-Threepenny-Core.html#g:3) из пакета [три пенни] (http://hackage.haskell.org/package/threepenny-gui-0.6.0.6) - правильно? – ErikR
Я понятия не имею, что использует OP - вы, вероятно, правы. – chi
UI монада не из трехпенсового пакета! Монада написана мной 'data UI a = UI a'. И экземпляр Functor, Applicativ, Monad для пользовательского интерфейса. – QSpider