Hi John, Using bytestring-handle, you can get this with something like
stringHandle :: String -> Handle stringHandle s = readHandle False (Data.ByteString.Char8.pack s) [note the complete disregard of encoding issues in the use of Data.ByteString.Char8] Cheers, Ganesh On 28/02/2013 13:32, John D. Ramsdell wrote: > I think I wasn't clear about my question. I want something that > creates a value of type System.IO.Handle. You see, I have a high > performance S-expression parser that I'd like to use in GHCi reading > strings while at the command loop. > > Here is more details on my module SExpr that exports the SExpr data > type and the load function. The desired function is called > stringHandle. > > -- An S-expression > data SExpr > = S String -- A symbol > | Q String -- A quoted string > | N Int -- An integer > | L [SExpr a] -- A proper list > > -- Read one S-expression or return Nothing on EOF > load :: Handle -> IO (Maybe (SExpr Pos)) > > In GHCi, I want to type something like: > > SExpr> let h = stringHandle "()" > SExpr> load h > Just (L []) > SExpr> load h > Nothing > SExpr> > > It seems to me right now that I have to implement a duplicate parser > that implements Read. At least S-expression parsing is easy. > > John > > On Thu, Feb 28, 2013 at 3:02 AM, Ganesh Sittampalam <[email protected]> wrote: >> Hi, >> >> On 27/02/2013 20:38, John D. Ramsdell wrote: >>> How does one create a value of type System.IO.Handle for reading that >>> takes its input from a string instead of a file? I'm looking for the >>> equivalent of java.io.StringReader in Java. Thanks in advance. >> >> http://hackage.haskell.org/package/bytestring-handle can make handles >> that read and write to ByteStrings. >> >> Cheers, >> >> Ganesh >> >> > _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
