From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17128 invoked by alias); 17 Jan 2017 10:07:39 -0000 Mailing-List: contact kawa-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: kawa-owner@sourceware.org Received: (qmail 17113 invoked by uid 89); 17 Jan 2017 10:07:38 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.5 required=5.0 tests=AWL,BAYES_40,KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 spammy=nom, dog, Nom, sk:damien. X-HELO: smtps-n.oca.eu Received: from smtps-n.oca.eu (HELO smtps-n.oca.eu) (192.54.174.167) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 17 Jan 2017 10:07:28 +0000 Received: from [192.168.109.88] (natoca100-13.unice.fr [134.59.100.13]) by smtps-n.oca.eu (Postfix) with ESMTPSA id 539FE80543 for ; Tue, 17 Jan 2017 11:07:26 +0100 (CET) From: Damien MATTEI To: Kawa mailing list Subject: behavior of CASE with strings PART 2 Date: Tue, 17 Jan 2017 10:07:00 -0000 User-Agent: KMail/1.9.6 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <201701171107.25991.Damien.Mattei@unice.fr> X-IsSubscribed: yes X-SW-Source: 2017-q1/txt/msg00018.txt.bz2 testing with eqv? predicate (that seems to be used in kawa CASE if it follow R5RS) and according to https://www.gnu.org/software/kawa/Conditionals.html i have this: |kawa:1|# (case "dog" (("cat" "dog" "mouse") "animal") (else "mineral or vegetable")) animal #|kawa:2|# (invoke "dog":class 'getName) java.lang.String #|kawa:3|# (eqv? "dog" "dog") #t #|kawa:4|# (define a "dog") #|kawa:5|# (eqv? a "dog") #t and now in my code: i modified the code to display things: (begin (display-msg-var-nl "ResultatGeneralAFKawa : work : type1 = " type1) (display-msg-var-nl "ResultatGeneralAFKawa : work : type2 = " type2) (display-msg-var-nl "ResultatGeneralAFKawa : work : Nom = " Nom) (if (equal? "B5" type1) (display-nl "ResultatGeneralAFKawa : work : equal? test TRUE") (display-nl "ResultatGeneralAFKawa : work : equal? test FALSE")) (if (eqv? "B5" type1) (display-nl "ResultatGeneralAFKawa : work : eqv? test TRUE") (display-nl "ResultatGeneralAFKawa : work : eqv? test FALSE")) ;;(display (string-append "|" (type1:getClass:getName) "|")) (display "ResultatGeneralAFKawa : work : type1 is of type : ") (display (invoke type1:class 'getName) ) (newline) (display "ResultatGeneralAFKawa : work : B5 is of type : ") (display (invoke "B5":class 'getName) ) (newline) (if (eq? "B5" type1) (display-nl "ResultatGeneralAFKawa : work : eq? test TRUE") (display-nl "ResultatGeneralAFKawa : work : eq? test FALSE")) (set! nutype1 (case type1 (("O") 1) ;; java.lang.String (("O0") 2) (("O1") 3) (("O2") 4) (("O3") 5) (("O4") 6) (("O5") 7) (("O6") 8) (("O7") 9) (("O8") 10) (("O9") 11) (("B") 12) (("B0") 13) (("B1") 14) (("B2") 15) (("B3") 16) (("B4") 17) (("B5") 18) (("B6") 19) (("B7") 20) (("B8") 21) (("B9") 22) (("A") 23) (("A0") 24) (("A1") 25) (("A2") 26) (("A3") 27) (("A4") 28) (("A5") 29) (("A6") 30) (("A7") 31) (("A8") 32) (("A9") 33) (("F") 34) (("F0") 35) (("F1") 36) (("F2") 37) (("F3") 38) (("F4") 39) (("F5") 40) (("F6") 41) (("F7") 42) (("F8") 43) (("F9") 44) (("G") 45) (("G0") 46) (("G1") 47) (("G2") 48) (("G3") 49) (("G4") 50) (("G5") 51) (("G6") 52) (("G7") 53) (("G8") 54) (("G9") 55) (("K") 56) (("K0") 57) (("K1") 58) (("K2") 59) (("K3") 60) (("K4") 61) (("K5") 62) (("K6") 63) (("K7") 64) (("K8") 65) (("K9") 66) (("M") 67) (("M0") 68) (("M1") 69) (("M2") 70) (("M3") 71) (("M4") 72) (("M5") 73) (("M6") 74) (("M7") 75) (("M8") 76) (("M9") 77) (else => (begin (display-nl "display values:") (dv type1) (dv nutype1) (display "WARNING : ResultatGeneralAFKawa : work : CASE type1 in ELSE") (newline) '())))) (dv nutype1) display* and dv are macro to display variables. here is the output in logs: ResultatGeneralAFKawa : work : type1 = B5 ResultatGeneralAFKawa : work : type2 = F5 ResultatGeneralAFKawa : work : Nom = FIN ResultatGeneralAFKawa : work : equal? test TRUE ResultatGeneralAFKawa : work : eqv? test FALSE ResultatGeneralAFKawa : work : type1 is of type : java.lang.String ResultatGeneralAFKawa : work : B5 is of type : java.lang.String ResultatGeneralAFKawa : work : eq? test FALSE display values: type1 = B5 nutype1 = () WARNING : ResultatGeneralAFKawa : work : CASE type1 in ELSE my concern is with type1 which is of type java.lang.String ,also "B5" in case is of type java.lang.String ,and they should be equal in the sense of eqv? and the CASE should be satisfied in (("B5") 18) but in,stead it goes in ELSE clause because "B5" and type1 are not equal (eqv?) as "dog" and "dog" (depends of the scheme implementation ) i do not want to rewrite the CASE in other things, is there a way to have String that equal in the sense of eqv? ? regards, damien -- Damien.Mattei@unice.fr, Damien.Mattei@oca.eu, UNS / OCA / CNRS