Listeniz önceden 'bir
Teşekkür verilen bir char bekliyor ?: odun kömüründe küçük harf, aslında sembollerin bir listesi (ve bir sayı)' dir. Karakter önlerinde #\
ile yazılır:
;; In Lisps the custom is to use dashes between words instead of camelCase
(is-upper '(#\a #\s #\f #\t #\r #\5 #\q))
fonksiyon kendisi iki sorun var gibi görünüyor. 1) İlk elemanın olup olmadığını kontrol etmek yerine, ilk if
, tüm lst
'un boş olup olmadığını kontrol etmelidir. 2) İç if
'daki yüklem olarak char-upper-case?
'u kullanmalısınız. Eğer üç şubeleri var yana
(define (is-upper lst)
(if (null? lst)
#f
(if (char-upper-case? (car lst))
#t
(is-upper (cdr lst)))))
, iç içe geçmiş if
yerine cond
kullanmak daha net olacaktır.
(define (is-upper lst)
(cond
((null? lst) #f)
((char-upper-case? (car lst)) #t)
(else (is-upper (cdr lst)))))
(is-upper '(#\a #\b #\c))
;=> #f
(is-upper '(#\a #\B #\c))
;=> #t
Sadece emin olmak için: Bir listedeki bir elemanın least_ eğer _at denetlemek istediğiniz bir büyük harf yapmak veya her eleman harf karakterleri ise ne olur? –