首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方案UpperCase控制

方案UpperCase控制
EN

Stack Overflow用户
提问于 2016-04-03 11:31:19
回答 1查看 217关注 0票数 0

我试图检查一个元素是否大写,但是我有一些错误。

代码语言:javascript
复制
(define (isUpper lst)
  (if (null? (car lst))
  #f
  (if (char-lower-case? (car lst)) #t
           (isUpper (cdr lst)))
  ))
(isUpper '(a s f t r 5 q))

错误;char -小写?:期望一个字符,给定'a‘

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-03 12:10:20

您的字符列表实际上是一个符号列表(和一个数字)。字符是在前面用#\编写的:

代码语言:javascript
复制
;; In Lisps the custom is to use dashes between words instead of camelCase
(is-upper '(#\a #\s #\f #\t #\r #\5 #\q))

这个函数本身似乎有两个问题。1)第一个if应该检查整个lst是否为空,而不是检查第一个元素是否为空。2)应该在内部char-upper-case?中使用char-upper-case?作为谓词。

代码语言:javascript
复制
(define (is-upper lst)
  (if (null? lst)
      #f
      (if (char-upper-case? (car lst)) 
          #t
          (is-upper (cdr lst)))))

因为您有三个分支,所以使用cond而不是嵌套的if会更清楚。

代码语言:javascript
复制
(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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36384864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档