diff --git a/goldfish/liii/lang.scm b/goldfish/liii/lang.scm index e39affba3a1d20a88ad788b4f070dd0e26f04bf9..41ba263835109a20d5fb6c3bf091a0ec08542c60 100644 --- a/goldfish/liii/lang.scm +++ b/goldfish/liii/lang.scm @@ -90,9 +90,10 @@ ) +;; 自动生成to-string方法,格式为 "(rich-rational<值>)" (define-case-class rich-rational ((data rational?)) + (define (%get) data) ;; 选择器方法 -(define (%get) data) (define (%abs) (if (< data 0) diff --git a/tests/goldfish/liii/lang-test.scm b/tests/goldfish/liii/lang-test.scm index 3ccc129c75a57513c05130cfed17e31488fa9159..99ddf168ba0ab632949cb1a19c9b7be7b8261f13 100644 --- a/tests/goldfish/liii/lang-test.scm +++ b/tests/goldfish/liii/lang-test.scm @@ -383,6 +383,10 @@ (check ($ 0 :get) => 0) (check ($ -1/3 :get) => -1/3) +(check ($ 1/3 :to-string) => "(rich-rational 1/3)") +(check ($ 0 :to-string) => "(rich-rational 0)") +(check ($ -1/3 :to-string) => "(rich-rational -1/3)") + (check ($ 1/3 :abs) => 1/3) (check ($ 0.0 :abs) => 0.0) (check ($ -1/3 :abs) => 1/3)