次の問題があります。Gtk2Hs と Glade を使用して、Haskell で BASE64 Encoder の簡単な GUI を作成しようとしています。これは Haskell の BASE64 Encoder の例です。
{-# LANGUAGE OverloadedStrings #-}
import Data.ByteString.Base64
import Data.ByteString.Char8
main = do
print $ unpack $ encode "Hello, world!"
print $ decode "SGVsbG8sIHdvcmxkIQ=="
この例の GUI を作成したいのですが、任意の値を入力してエンコードできるようにしたいと考えています。次のコンポーネントを含むテンプレートを作成済みです: - entry1 (エンコードする値を入力するため) - ボタン (生成を開始するため) - entry2 (生成された値を表示するため)
私のハスケルコード:
entry1 <- builderGetObject hello castToEntry "entry1"
entry2 <- builderGetObject hello castToEntry "entry2"
button <- builderGetObject hello castToButton "button"
onClicked button $ do
name2 <- get entry1 entryText
set entry2 [ entryText := unpack $ encode name2]
コンパイル時に次のエラーが表示されます
Couldn't match expected type `ByteString' with actual type `String'
In the first argument of `encode', namely `name2'
In the second argument of `($)', namely `encode name2'
In the second argument of `(:=)', namely `unpack $ encode name2'