-4
import System.IO
import Data.List
import Data.Char
printlist :: Show a => a -> IO ()
printlist x = putStr (show x)
main = do
     handle <- openFile "/usr/local/share/corpus" ReadMode
     text <- hGetContents handle
     let wlist = words text
         clist = map (\k -> take ((k + 15) - k + 1).drop (k - 10))(elemIndices "word" wlist)
printlist clist

仕事を終わらせるために何ができますか。
答えかヒントを教えてください

4

1 に答える 1

3

気分が良かったので、ここでエラーを修正しました

import Data.List

printlist :: Show a => a -> IO ()
printlist = putStr . show

main = do
     text <- readFile "/usr/local/share/corpus" -- removed useless handle
     let clist = zipWith (flip ($)) (repeat text)
                -- ^ applied each function to file
                -- since you currently had
                -- clist :: [String -> String]
                 . map (\k -> take 16 . drop (k-10))
                 . elemIndices "word"
                 $ words text -- inlined wlist
     printlist clist -- fixed indenting

したがって、これが行うことは、タイプの関数のリストを生成し、String -> Stringそれらのそれぞれをファイルに適用し/usr/local/share/corpusて結果を出力することです。

マップ部分は次のように書き換えることができると思います

(.:) = (.) . (.)
infixr 9 .:

map (take 16 .: drop . subtract 10)

これは間違いなくきれいです。

于 2013-10-28T15:00:01.337 に答える