Send Beginners mailing list submissions to
        beginners@haskell.org

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
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

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 <i...@zenhack.net>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Subject: Re: [Haskell-beginners] IO String and String using readFile
Message-ID:
        <155365903334.2487.7573599623212981998@localhost.localdomain>
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]i...@zenhack.net> 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:i...@zenhack.net


------------------------------

Message: 2
Date: Wed, 27 Mar 2019 00:02:49 -0400
From: Ian Denhardt <i...@zenhack.net>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Subject: Re: [Haskell-beginners] Fwd:  IO String and String using
        readFile
Message-ID:
        <155365936937.2487.14589775321104928555@localhost.localdomain>
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]kothariyug...@gmail.com>
>    Date: Wed, 27 Mar, 2019, 9:18 AM
>    Subject: Re: [Haskell-beginners] IO String and String using readFile
>    To:
>    Cc: <[2]beginners@haskell.org>
>    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]i...@zenhack.net> 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:kothariyug...@gmail.com
>    2. mailto:beginners@haskell.org
>    3. mailto:i...@zenhack.net


------------------------------

Subject: Digest Footer

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

End of Beginners Digest, Vol 129, Issue 9
*****************************************

Reply via email to