With the code (format #t "~R~%" 100) I get hundred but with the Common Lisp equivalent (I think) (format t "~R~%" 100) in SBCL I get instead one hundred I am unsure of how tightly specified any of this is, but to me the SBCL output makes more sense. Is this expected, allowed, by design, a bug, or something else? A related question: Is it correct that Kawa uses SLIB's test file for format (formatst.scm in testsuite) but not SLIB's implementation of format? Regards, -chaw
Hi, On Thu, Feb 4, 2021 at 10:33 PM Sudarshan S Chawathe <chaw@eip10.org> wrote: > With the code > > (format #t "~R~%" 100) > > I get > > hundred > > but with the Common Lisp equivalent (I think) > > (format t "~R~%" 100) > > in SBCL I get instead > > one hundred > > I am unsure of how tightly specified any of this is, but to me the SBCL > output makes more sense. Is this expected, allowed, by design, a > bug, or something else? There isn't a specification to my knowledge on the specific language used to count the numbers, although in this case Kawa is an oddity. I attached a patch to fix that. The testsuite errors for me from a fresh git clone and it's been a while since I've contributed, so I don't know if it breaks in other areas aside from the obvious formatting cases. > > > A related question: Is it correct that Kawa uses SLIB's test file for > format (formatst.scm in testsuite) but not SLIB's implementation of > format? > > I don't know, but I would guess it's another under specified area, for the the english number formatting in particular, // Inspired by the Slib version, which is inspired // by Bruno Haible's CLisp function format-small-cardinal. -- Kind regards, Charles.
[-- Attachment #1: Type: text/plain, Size: 488 bytes --] On Thu, Feb 4, 2021 at 11:41 PM Charles <chturne@gmail.com> wrote: > > There isn't a specification to my knowledge on the specific language used > to count the numbers, although in this case Kawa is an oddity. I attached a > patch to fix that. The testsuite errors for me from a fresh git clone and > it's been a while since I've contributed, so I don't know if it breaks in > other areas aside from the obvious formatting cases. > And with that patch I mentioned ... B.R, Charles. [-- Attachment #2: 0001-Make-R-cardinal-counting-more-consistent.patch --] [-- Type: text/x-patch, Size: 1802 bytes --] From 085bc7cb13213a21c5397e49457e16b580123766 Mon Sep 17 00:00:00 2001 From: Charles Turner <chturne@gmail.com> Date: Thu, 4 Feb 2021 23:31:30 +0000 Subject: [PATCH] Make ~R cardinal counting more consistent (format #t "~R" 100) returns "hundred", whereas other Lisps tend to return "one hundred". It's arguable that both are in some sense correct (since this is not an area heavily specified anywhere), but it's not good that we're inconsistent, since we also return (format #t "~R" 1000) as "one thousand". Reported by Sudarshan S Chawathe. --- gnu/kawa/format/EnglishIntegerFormat.java | 2 +- testsuite/formatst.scm | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/kawa/format/EnglishIntegerFormat.java b/gnu/kawa/format/EnglishIntegerFormat.java index 16f72e8c7..16b246199 100644 --- a/gnu/kawa/format/EnglishIntegerFormat.java +++ b/gnu/kawa/format/EnglishIntegerFormat.java @@ -78,7 +78,7 @@ public class EnglishIntegerFormat extends java.text.NumberFormat { int num100s = num / 100; num = num % 100; - if (num100s > 1) + if (num100s >= 1) { sbuf.append(ones[num100s]); sbuf.append(' '); diff --git a/testsuite/formatst.scm b/testsuite/formatst.scm index 055d03767..35a4ad23e 100644 --- a/testsuite/formatst.scm +++ b/testsuite/formatst.scm @@ -28,7 +28,7 @@ ; (newline) ; (format:abort))) -(test-begin "format" 454) +(test-begin "format" 455) (define-syntax test (syntax-rules () ((test format-args out-str) @@ -155,6 +155,7 @@ (test '("~r" 4) "four") (test '("~r" 10) "ten") (test '("~r" 19) "nineteen") +(test '("~r" 101) "one hundred one") (test '("~r" 1984) "one thousand, nine hundred eighty-four") (test '("~:r" -1984) "minus one thousand, nine hundred eighty-fourth") -- 2.27.0
On 2/4/21 1:34 PM, Sudarshan S Chawathe wrote: > A related question: Is it correct that Kawa uses SLIB's test file for > format (formatst.scm in testsuite) but not SLIB's implementation of > format? Of course. If there is a new implementation of an interface, it is even more valuable to test it with the old implementation's tests, to get an understanding of the difference between the implementations, such as what differences are bugs, intentional, or otherwise acceptable. In any case, it is (almost) impossible to have too many tests. The Kawa testsuite includes tests from all kinds of sources. -- --Per Bothner per@bothner.com http://per.bothner.com/
On 2/4/21 3:42 PM, Charles via Kawa wrote: > And with that patch I mentioned ... Thanks - checked in. -- --Per Bothner per@bothner.com http://per.bothner.com/