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