2016-08-29 3 views
1

私はentryTextを文字列に変換しようとしていますので、他の関数にも使用できます。entryGetTextをInt gtk2hsに変換する

`unsafePerformIO (entryGetText txtMagn)` 

このコードをコンパイルしようと、私はエラーメッセージを取得しながら:あなたはunsafePerformIOを渡すここ

putStrLn unsafePerformIO (entryGetText txtMagn) 

を書いたので、これは事前

答えて

3

`Couldn't match type ‘IO a0 -> a0’ with ‘[Char]’ 
    Expected type: String 
     Actual type: IO a0 -> a0 
    Probable cause: ‘unsafePerformIO’ is applied to too few arguments 
    In the first argument of ‘putStrLn’, namely ‘unsafePerformIO’` 

感謝を〜putStrLnをパラメータとする。あなたは実際には:

putStrLn (unsafePerformIO (entryGetText txtMagn)) 

今すぐunsafePerformIOを意味します。その名前が示すように、それは安全でないです。だから、あなたは何を達成しようとしているのか明確な考えを持っていることをお勧めします。安全IOのあなたの価値を引き出し、後でそれを使用するには:

text <- entryGetText txtMagn 
putStrLn text 
0

を値を取得するには、read関数を使用する必要があります。

val <- getLine 
someFunctionWhichNeedsTheValue (read val ::Float)