私はできるだけ具体的にしようとします。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")