[racket] newlines in strings not the same in DrRacket and Racket

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Sat Jun 21 02:28:46 EDT 2014

I think that here strings are parsed in a way to make the
line-separator difference not matter too. Maybe that works best for
you?

http://docs.racket-lang.org/reference/reader.html#%28idx._%28gentag._54._%28lib._scribblings%2Freference%2Freference..scrbl%29%29%29

Robby

On Sat, Jun 21, 2014 at 1:25 AM, Jos Koot <jos.koot at gmail.com> wrote:
> Thanks Robby, that's clear.
> I often copy results from the interactions window to the definitions window
> of DrRacket.
> After reverting my preference file to defaults and reselecting my personal
> preferences, the problem has disappeared.
> Nevertheless I'll avoid the problem for the future. Four options I think:
> 1: stick to your string-append advice.
> 2: @ notation of scribble (which I have to try out yet, but may well be
> preferable)
> 3: replace all newlines in strings by \n (not nice for it makes the text
> less readable)
> 4: my trick to remove #\return from strings before comparing them.
> Thanks, Jos
>
>
>> -----Original Message-----
>> From: Robby Findler [mailto:robby at eecs.northwestern.edu]
>> Sent: sábado, 21 de junio de 2014 0:51
>> To: Alexander D. Knauth
>> Cc: Jos Koot; users
>> Subject: Re: [racket] newlines in strings not the same in
>> DrRacket and Racket
>>
>> The issue is probably that the file is being saved with CRLF. When the
>> file is opened in DrRacket, DrRacket always treats newlines like that
>> as if there were the "\n" character. But when racket reads the file it
>> just puts whatever bytes are in the saved file into the string.
>>
>> The best path forward: don't use actual newlines in literals (like
>> strings). Instead write things like:
>>
>> (string-append "first line\n" "second-line\n")
>>
>> Or use scribble's @ notation.
>>
>> Robby
>>
>>
>> On Fri, Jun 20, 2014 at 5:20 PM, Alexander D. Knauth
>> <alexander at knauth.org> wrote:
>> > Or are you using different editors?  Different editors
>> might use different
>> > conventions for representing newlines.
>> >
>> > When the 32 bit one has the problem, what does it say?
>> >
>> > For example when I made the text file with DrRacket or
>> TextEdit but ran it
>> > with racket (not DrRacket), it worked,
>> > but when I made the text file with Microsoft Word, it gave me this:
>> > $ racket newline-3.txt
>> > (format "~n") = "\n"
>> > "
>> > " = "\r"
>> > Ran 1 check.
>> > 0 checks passed.
>> > Actual value
>> > , the expected value.
>> >  In newline-3.txt at line 7 column 0
>> >
>> > On Jun 20, 2014, at 5:14 PM, Jos Koot <jos.koot at gmail.com> wrote:
>> >
>> > Very strange.
>> > I did the same on my other computer and there it has the
>> same problem as
>> > before.
>> > I use windows 7 on both systems one with 64 bit OS and one
>> with 32 bit OS.
>> > The 64 bit version does well, the 32 bit windows 7 system
>> has the problem.
>> > May be my preferences?
>> > Thanks, Jos
>> >
>> > -----Original Message-----
>> > From: Jos Koot [mailto:jos.koot at gmail.com]
>> > Sent: viernes, 20 de junio de 2014 23:03
>> > To: 'Alexander D. Knauth'
>> > Cc: 'users'; 'Jos Koot'
>> > Subject: RE: [racket] newlines in strings not the same in
>> > DrRacket and Racket
>> >
>> > Gives me
>> >
>> > (format "~n") = "\n"
>> > "
>> > " = "\n"
>> > The only test passed!
>> >
>> > both in DrRacket and Racket.
>> > Very surprising. Can you explain what happens here?
>> > I don't have a clue.
>> > Thanks,
>> > Jos
>> >
>> >
>> > ________________________________
>> >
>> > From: Alexander D. Knauth [mailto:alexander at knauth.org]
>> > Sent: viernes, 20 de junio de 2014 22:41
>> > To: Jos Koot
>> > Cc: users
>> > Subject: Re: [racket] newlines in strings not the same
>> > in DrRacket and Racket
>> >
>> >
>> > This doesn't exactly solve your problem, but what
>> > happens (for both cases) when you do this?:
>> > #lang racket
>> > (require test-engine/racket-tests)
>> > (display "(format \"~n\") = ") (format "~n")
>> > (display "\"") (newline)
>> > (display "\" = ") "
>> > "
>> > (check-expect (format "~n") "
>> > ")
>> > (test)
>> > (void (read-line)) ; wait until the user has read the results.
>> >
>> > On Jun 20, 2014, at 3:02 PM, Jos Koot
>> > <jos.koot at gmail.com> wrote:
>> >
>> >
>> > Running the following in DrRacket goes well.
>> >
>> > #lang racket
>> > (require test-engine/racket-tests)
>> > (check-expect (format "~n") "
>> > ")
>> > (test)
>> > (read-line) ; wait until the user has read the results.
>> >
>> > Displays: The only test passed!
>> >
>> > But running the same with Racket tells me the
>> > test fails.
>> > I have a solution for this by removing #\return
>> > from the strings to be
>> > compared.
>> >
>> > Question though: Can I solve this problem in a
>> > simpler way?
>> > May be I overlooked something in the docs?
>> >
>> > Best wishes, Jos
>> >
>> >
>> > ____________________
>> > Racket Users list:
>> > http://lists.racket-lang.org/users
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > ____________________
>> >   Racket Users list:
>> >   http://lists.racket-lang.org/users
>> >
>


Posted on the users mailing list.