2017-08-01 1 views
1

にコンボボックスウィジェットを作成は、私はこのコードをコンボボックスウィジェットを作成したいGtk2HS

Couldn't match type ‘[Char]’ 
        with ‘text-1.2.2.0:Data.Text.Internal.Text’ 
    Expected type: ComboBoxText 
     Actual type: [Char] 
    In the second argument of ‘comboBoxAppendText’, namely 
     ‘"Secuencial"’ 
    In a stmt of a 'do' block: comboBoxAppendText cb "Secuencial" 
    In the expression: 
     do { void initGUI; 
      window <- windowNew; 
      set 
      window 
      [windowTitle := "A title", 
       windowDefaultWidth := 1024, ....]; 
      vb <- vBoxNew False 7; 
      .... } 

私はちょうどこのチュートリアル(http://www.muitovar.com/gtk2hs/chap4-2.html)と読書を以下のいドキュメント(http://projects.haskell.org/gtk2hs/docs/gtk2hs-docs-0.9.12/Graphics-UI-Gtk-ModelView-ComboBox.html#v%3AcomboBoxInsertText

どうすればいいですか?

ありがとうございます。

答えて

2

documentation on Hackageを使用することをおすすめします。あなたがリンクしたドキュメントはおそらく10年前には古くなっています。

From that documentation、我々はあなたがComboBoxText引数として渡している"Option 1"

type ComboBoxText = Text 
comboBoxAppendText :: ComboBoxClass self => self -> ComboBoxText -> IO Int 

を持っています。バニラハスケルでは、TextではなくStringであり、エラーが示すように。次のいずれかを実行でき

import qualified Data.Text as T 
comboBoxAppendText cb (T.pack "Option 1") 

かのように、これは自動的にStringリテラルのために行っているためにOverloadedStringsをオンのようpackString、:

{-# LANGUAGE OverloadedStrings #-} 
comboBoxAppendText cb "Option 1" 
+0

今、コンパイルはこれで失敗:タイプが一致しませんでした。 'T.Text' with 'text-1.2.2.0:Data.Text.Internal.Text' NB: 'T.Text' は 'text-1.2.2.2'パッケージの 'Data.Text.Internal'で定義されています。 'text-1.2.2.0:Data.Text.Internal.Text' は、 'text-1.2.2.0'のパッケージの 'Data.Text.Internal'に定義されています 予想タイプ:ComboBoxText 実際のタイプ:T.Text 'comboBoxAppendText'の2番目の引数、すなわち '(T.pack " 'do'ブロックのstmtにあります: comboBoxAppendText cb(T.pack "Option 1") – Hamburguesa66

+0

@ Hamburguesa66 'text'パッケージのバージョン1.2.2.0でgtk2hsをビルドしたようですが、バージョン1.2.2.2で実行可能ファイルをビルドしています。 ghcを使ってビルドする場合は、 'ghc-pkg'を使ってバージョン1.2.2.0以外のものを隠してください。カバールでビルドする場合は、 'configure'、' install'、または 'new-build'コマンドに' --constraint text = 1.2.2.0'を追加してみてください。 –

関連する問題