6

こんにちは、次のコードは wordfeud プログラムです。接頭辞、接尾辞、およびいくつかの文字に一致する単語のリストを検索できます。私の質問は、一番下のリストを使用する代わりに、単語を含む外部テキスト ファイルを使用してリストにロードしたいということです。どうすればこれを行うことができますか?

count :: String -> String -> Int
count _[] = 0
count [] _ = 0
count (x:xs) square
    |x `elem` square = 1 + count xs (delete x square)
    |otherwise = count xs square

check :: String -> String -> String -> String -> Bool
check prefix suffix word square
    | (length strippedWord) == (count strippedWord square) = True
    | otherwise = False
    where
        strippedWord = drop (length prefix) (take ((length word ) - (length suffix)) word)


wordfeud :: String -> String -> String -> [String]
wordfeud a b c = test1
    where
    test =["horse","chair","chairman","bag","house","mouse","dirt","sport"]

    test1 = [x| x <- test, a `isPrefixOf` x, b `isSuffixOf` x, check a b x c]
4

1 に答える 1

5

lines関数 (またはwords、単語が改行以外の空白で区切られている場合)の助けを借りて、非常に単純です。

-- Loads words from a text file into a list.
getWords :: FilePath -> IO [String]
getWords path = do contents <- readFile path
                   return (lines contents)

さらに、まだ行っていない場合は、Haskell の IO を読む必要があるでしょう (「io haskell チュートリアル」をグーグルで検索することをお勧めします)。また、プログラムに対話性を導入するためにも必要です。

于 2012-06-30T20:32:08.710 に答える