Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Re: IO String and String using readFile (Ian Denhardt)
2. Re: Fwd: IO String and String using readFile (Ian Denhardt)
----------------------------------------------------------------------
Message: 1
Date: Tue, 26 Mar 2019 23:57:13 -0400
From: Ian Denhardt <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] IO String and String using readFile
Message-ID:
<[email protected]>
Content-Type: text/plain; charset="utf-8"
Sounds like you want concatMap:
https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:concatMap
Quoting Yugesh Kothari (2019-03-26 23:48:35)
> I see. anyway, my use case is something like this-
> I have two functions
> fromFile :: [String] -> [Int]
> func :: String -> [Int]
> I want to use the "words contents" output and pass each element in it
> to func and send back [Int] from "fromFile" function (where I
> originally read the file.)
> Could you suggest a better way to do this?
> Quoting� Ian Denhardt
> On Wed, 27 Mar, 2019, 9:13 AM Ian Denhardt, <[1][email protected]> wrote:
>
> It would help to see the complete source file, but I'll hazard a
> guess
> you're doing something like:
> main = do
> � � contents <- readFile "file.txt"
> � � words contents
> At the GHCi prompt, each line can be any expression, and GHCi will
> evaluate it and then display it. The two lines in your session
> aren't
> really related.
> In contrast, the do block in the source file expects the expression
> at
> the end to be an IO action.
> What do you want your program to do when you get to "words
> contents"?
> display it? (If you want to display it, pass it to `print`).
> Quoting Yugesh Kothari (2019-03-26 23:35:14)
> >� � Hi,�
> >� � I am trying to read data from a file.
> >� � When I do-
> >� � ghci> contents <- readFile "file.txt"
> >� � ghci> words contents
> >� � Then everything works.
> >� � The same thing when done in a .hs file gives an IO String vs
> [String]
> >� � error.
> >� � Why is that so?
>
> Verweise
>
> 1. mailto:[email protected]
------------------------------
Message: 2
Date: Wed, 27 Mar 2019 00:02:49 -0400
From: Ian Denhardt <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Fwd: IO String and String using
readFile
Message-ID:
<[email protected]>
Content-Type: text/plain; charset="utf-8"
Ah, in that case you'll need the type to be
String -> IO [Int]
In Haskell, functions *only* do computation -- no side effects, like
reading a file. So a String -> [Int] can't do what you want. We have a
separate type, IO, for doing things that affect the outside world. For
example:
ghci> :type readFile
readFile :: FilePath -> IO String
Also, just a style tip: there's a type alias for String defined called
FilePath, which would make the type signature more clear in this case.
Quoting Yugesh Kothari (2019-03-26 23:54:40)
> Extremely sorry,
> The definition of fromFile is String -> [Int] where input parameter is
> the name of the file.
> ---------- Forwarded message ---------
> From: Yugesh Kothari <[1][email protected]>
> Date: Wed, 27 Mar, 2019, 9:18 AM
> Subject: Re: [Haskell-beginners] IO String and String using readFile
> To:
> Cc: <[2][email protected]>
> I see. anyway, my use case is something like this-
> I have two functions
> fromFile :: [String] -> [Int]
> func :: String -> [Int]
> I want to use the "words contents" output and pass each element in it
> to func and send back [Int] from "fromFile" function (where I
> originally read the file.)
> Could you suggest a better way to do this?
> Quoting� Ian Denhardt
> On Wed, 27 Mar, 2019, 9:13 AM Ian Denhardt, <[3][email protected]> wrote:
>
> It would help to see the complete source file, but I'll hazard a
> guess
> you're doing something like:
> main = do
> � � contents <- readFile "file.txt"
> � � words contents
> At the GHCi prompt, each line can be any expression, and GHCi will
> evaluate it and then display it. The two lines in your session
> aren't
> really related.
> In contrast, the do block in the source file expects the expression
> at
> the end to be an IO action.
> What do you want your program to do when you get to "words
> contents"?
> display it? (If you want to display it, pass it to `print`).
> Quoting Yugesh Kothari (2019-03-26 23:35:14)
> >� � Hi,�
> >� � I am trying to read data from a file.
> >� � When I do-
> >� � ghci> contents <- readFile "file.txt"
> >� � ghci> words contents
> >� � Then everything works.
> >� � The same thing when done in a .hs file gives an IO String vs
> [String]
> >� � error.
> >� � Why is that so?
>
> Verweise
>
> 1. mailto:[email protected]
> 2. mailto:[email protected]
> 3. mailto:[email protected]
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 129, Issue 9
*****************************************