小编grw*_*rwp的帖子

attoparsec如何返回不同类型的值?

我坚持使用attoparsec,我无法返回有关它的"嵌入式"的值.

我试图解析一个文件:

type
value
type
value
...
Run Code Online (Sandbox Code Playgroud)

例如:

0 -- code for a string value
hello
70 -- code for an int value
10
0
world
20 -- code for a double value
5.20
Run Code Online (Sandbox Code Playgroud)

我目前的数据类型是:

data KeyValue = forall a. (Typeable a, Show a, Eq a) => KeyValue (Int, a)
instance Eq KeyValue where -- as I need to test equality
    KeyValue (code1, value1) == KeyValue (code2, value2) =
      code1 == code2 && case cast value2 of
                               Just value2' -> …
Run Code Online (Sandbox Code Playgroud)

haskell existential-type attoparsec

2
推荐指数
1
解决办法
134
查看次数

是否可以使用gtk2hs清理一些代码?

我正在使用haskell和gtk2hs启动GUI.我有一个笔记本小部件,我想用"F1,F2 ... F11"键切换页面.

我的工作代码是:

import Control.Monad.Trans (liftIO)
import Graphics.UI.Gtk

main = do
  initGUI

  builder <- builderNew
  builderAddFromFile builder "M62.glade"

  window <- builderGetObject builder castToWindow "window1"
  notebook <- builderGetObject builder castToNotebook "notebook1"

  window `on` keyPressEvent $ tryEvent $ do "F1" <- eventKeyName
                                            liftIO $ notebookSetCurrentPage notebook 0
  window `on` keyPressEvent $ tryEvent $ do "F2" <- eventKeyName
                                            liftIO $ notebookSetCurrentPage notebook 1
  window `on` keyPressEvent $ tryEvent $ do "F3" <- eventKeyName
                                            liftIO $ notebookSetCurrentPage notebook 2
  window `on` keyPressEvent $ …
Run Code Online (Sandbox Code Playgroud)

haskell boilerplate gtk2hs

0
推荐指数
1
解决办法
162
查看次数