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

From: Jos Koot (jos.koot at gmail.com)
Date: Sat Jun 21 02:25:03 EDT 2014

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.