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

From: Jos Koot (jos.koot at gmail.com)
Date: Sat Jun 21 04:27:20 EDT 2014

Nonetheless many thanks for your help and attention.
Jos 

> -----Original Message-----
> From: Robby Findler [mailto:robby at eecs.northwestern.edu] 
> Sent: sábado, 21 de junio de 2014 9:54
> To: Jos Koot
> Cc: Alexander D. Knauth; users
> Subject: Re: [racket] newlines in strings not the same in 
> DrRacket and Racket
> 
> Ah, sorry.
> 
> Robby
> 
> On Sat, Jun 21, 2014 at 2:04 AM, Jos Koot <jos.koot at gmail.com> wrote:
> >
> > I find the following:
> >
> > (write (string->list #<<end
> > a
> > a
> > end
> > ))
> >
> > In DrRacket (#\a #\newline #\a)
> > In Racket: (#\a #return #\newline #\a #\return)
> >
> > Jos
> >
> >
> >> -----Original Message-----
> >> From: Robby Findler [mailto:robby at eecs.northwestern.edu]
> >> Sent: sábado, 21 de junio de 2014 8:29
> >> To: Jos Koot
> >> Cc: Alexander D. Knauth; users
> >> Subject: Re: [racket] newlines in strings not the same in
> >> DrRacket and Racket
> >>
> >> 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._%28g
> > 
> entag._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.