gpt4 book ai didi

string - 使用字符串检查字符串列表?

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:11 26 4
gpt4 key购买 nike

您好,我在测试列表以查看列表是否仅包含字符串时遇到了一些问题。我正在阅读文档 2.3(迭代和递归)+ 3.12(条件),但我似乎无法按照我想要的方式处理列表。

我尽量保持简单,

(define (strings-only? lst)
[cond
[(empty? lst) true]
[else (string?(first lst))
(string?(rest lst))]])

我假设这样做是首先检查列表 (lst) 看它是否为空。然后它检查列表的第一个变量看它是否是一个字符串,然后检查其余的。当我投入

(define a (list "This" "that"))

它弹出测试是错误的。我觉得问题出在我尝试使用 first/rest 遍历列表的方式上。如有任何想法,我们将不胜感激。

最佳答案

检查您的 else 子句:

[else (string? (first lst))
(string? (rest lst))]

1) 你有两个谓词调用都返回一些 bool 值,但你没有以任何方式连接它们。您想知道列表中的 所有 元素是否都是字符串,那么什么 bool 运算符(andor 等)最适合这里?

2) (string? (rest lst)) 每次都会返回 false,因为 rest 返回一个列表,而不是一个字符串。要真正使它成为递归函数,您需要使用 lstrest 再次调用 strings-only?


总结:

(define (strings-only? lst)
(cond
[(empty? lst) true]
[else (___ (string? (first lst))
(strings-only? (rest lst)))]))

用这里最有意义的 bool 运算符填空。

关于string - 使用字符串检查字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com