[Haskell-beginners] Is this scope range problem?
earthnut at web.de
Tue Dec 14 15:13:33 CET 2010
On Dec 14, 2010, at 14:36, Luca Toscano wrote:
> On 12/14/2010 12:32 PM, Sok H. Chang wrote:
>> Thank you so much, Luca.
>> Mmm... I want to make a "List of Sentence" from some text file.
>> inputFile.txt is like this.
>> This is a pen.
>> Is this a pen?
>> etc...many sentence. Each line, only one sentence.
>> How can I make a list of sentence?
>> How can I declared inpStr?
>> Thank you.
>> Sincerely, Sok Chang
> You're welcome! I am a beginner in haskell programming, it's interesting to work with others! By the way, this is the code:
> import System.IO
> import System.Random
> import Data.List
> main :: IO ()
> main = do
> inh <- openFile "path_to_file" ReadMode
> prova <- (mainloop inh )
> print prova
> hClose inh
> mainloop :: Handle -> [String] -> IO [String]
> mainloop inh list = do
> ineof <- hIsEOF inh
> if ineof
> return list
> else do
> inpStr <- hGetLine inh
> mainloop inh (list ++ [inpStr])
the "list ++ [inpStr]" is not very efficient for files with lot's of sentences. (++) is implemented in a way that it goes through the whole "list" every time a new field is appended. So, it does a lot of work a multiple times. Instead you should consider to e.g. use "inpStr : list" and reverse the list in the end.
> This is my version, it works I think.. I hope this helps you!!
Another solution would be
main = do
input <- readFile "path_to_file"
let prova = lines input
More information about the Beginners