[Haskell-cafe] How does one create an input handle bound to a string instead of a file?

John D. Ramsdell ramsdell0 at gmail.com
Thu Feb 28 14:49:00 CET 2013


I see now.  I read the source code incorrectly.  Now I know what to do.

John

On Thu, Feb 28, 2013 at 8:40 AM, Ganesh Sittampalam <ganesh at earth.li> wrote:
> 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 <ganesh at earth.li> 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
>>>
>>>
>>
>



More information about the Haskell-Cafe mailing list