Привет, я очень новичок в haskell
Я создаю программу с графическим интерфейсом, которая
открывает диалог выбора файла
взять слово
поиск слова в выбранном текстовом файле
распечатать номер найденного на этикетке
но я застрял с ошибкой, которую я не могу решить
Я вставляю сюда ошибку и код
Может кто-нибудь помочь мне?
спасибо
полный код здесь
--GUI routine
import Graphics.UI.Gtk
import Text.Regex.Posix ((=~))
import Control.Monad (when)
--core routine
matchWord :: String -> String -> Int
matchWord file word = length . filter (== word) . concat $ file =~ "[^- \".,\n]+"
--main start
main :: IO ()
main =
do initGUI
win <- windowNew
windowSetTitle win "WORD SEARCHER"
win `onDestroy` mainQuit
fch <- fileChooserWidgetNew FileChooserActionOpen
containerAdd win fch
targetFile <- fileChooserGetFilename fch --wrong?
ent <- entryNew
btn <- buttonNew
st <- labelNew $ Just "Found : 0 "
col <- vBoxNew False 5
containerAdd col ent
containerAdd col btn
containerAdd col st
buttonSetLabel btn "Click to search"
btn `onClicked` do targetWord <- entryGetText ent
fileData <- readFile targetFile
found <- matchWord fileData targetWord
labelSetText st found
containerAdd win col
widgetShowAll win
mainGUI
ошибка здесь
gui-word-search.hs:33:49:
Couldn't match expected type `FilePath'
against inferred type `Maybe FilePath'
In the first argument of `readFile', namely `targetFile'
In a 'do' expression: fileData <- readFile targetFile