1

我会尽量具体。我正在尝试使用 Haskell、Threepenny 和 DOT 制作图形可视化 GUI

我已经创建了修改图形的按钮,并且我试图将修改后的图形保存在图像中,并在每次修改图形时加载该图像

但是,我可以运行 Threepenny gui,但我不能编写图像并更新它抛出的函数。

RunGraphviz 函数返回 IO () 并且 Threepenny GUI 使用 UI ()。我正在尝试使用“liftIO”,但它正在生成一些错误“Prelude head.empty list”。这是片段

url <- GL.loadFile sl "graph.png"
   img <- GL.img # set GL.src url
   getBody window #+ [return img] #+ [br]

GL.on GL.click button2 $ \_ -> do
   -- number <- get GL.value noOfNodes
    currentGraph <- GL.get GL.value ini
    no<- GL.get GL.value noOfNodes
    let (Just g1) = readMaybe (currentGraph) :: Maybe AdjList
    let f1 = addnode (read no::Int) g1
    set GL.value (show f1) (element ini)
    liftIO (visualize f1)
    getBody window #+ [GL.string "New Nodes Added"] #+ [br]

visualize g = void $ do 
    runGraphviz (graphToDot myParams (myGraph g)) Png ("C:/Users/Tabish/Desktop/Barira/graph.png")
4

0 回答 0