试图输出一个列表,而不是得到一个单一的价值
Trying to output a list but instead getting a single value
- 我正在尝试创建一个比较两个字符串列表并将比较结果保存到列表中的函数
- 结果以布尔值给出
没有错误消息,而不是输出是一个包含多个布尔结果的列表,我只得到一个结果
; alon: a list of names
; alob: a list of boolean
(define (findNamev4 alon alon2 alob)
(cond
[(empty? alon) #false]
[(string=? (first alon) (first alon2)) (cons #true lob)]
[else (findNamev4 (rest alon) (first (rest alon2)) alob)]))
(findNamev4 l1 l2 lob)
(findNamev4 l2 l2 lob)
- 输出不是一个列表,而是一个布尔值
(list #true)
(list #true)
(list #true)
我建议按如下方式进行:
(define (compare-string-lists strs-1 strs-2)
(cond
[(or (empty? strs-1) (empty? strs-2)) empty]
[else
(cons (string=? (first strs-1) (first strs-2))
(compare-string-lists (rest strs-1) (rest strs-2)))]))
您没有指定如果列表长度不同应该发生什么;此版本只会比较两个列表中较短列表中存在的尽可能多的元素。
一个解释:
- 第一个案例是我们的基本案例。如果两个列表中的任何一个为空,那么我们就不需要将比较添加到我们的比较列表中,因此我们可以 return 一个空列表。
- 第二种情况就是我们的递归情况。我们要比较每个列表的第一个元素,然后将结果(使用
cons
)附加到包含我们输入列表其余部分的比较结果的列表。
- 我正在尝试创建一个比较两个字符串列表并将比较结果保存到列表中的函数
- 结果以布尔值给出 没有错误消息,而不是输出是一个包含多个布尔结果的列表,我只得到一个结果
; alon: a list of names
; alob: a list of boolean
(define (findNamev4 alon alon2 alob)
(cond
[(empty? alon) #false]
[(string=? (first alon) (first alon2)) (cons #true lob)]
[else (findNamev4 (rest alon) (first (rest alon2)) alob)]))
(findNamev4 l1 l2 lob)
(findNamev4 l2 l2 lob)
- 输出不是一个列表,而是一个布尔值
(list #true)
(list #true)
(list #true)
我建议按如下方式进行:
(define (compare-string-lists strs-1 strs-2)
(cond
[(or (empty? strs-1) (empty? strs-2)) empty]
[else
(cons (string=? (first strs-1) (first strs-2))
(compare-string-lists (rest strs-1) (rest strs-2)))]))
您没有指定如果列表长度不同应该发生什么;此版本只会比较两个列表中较短列表中存在的尽可能多的元素。
一个解释:
- 第一个案例是我们的基本案例。如果两个列表中的任何一个为空,那么我们就不需要将比较添加到我们的比较列表中,因此我们可以 return 一个空列表。
- 第二种情况就是我们的递归情况。我们要比较每个列表的第一个元素,然后将结果(使用
cons
)附加到包含我们输入列表其余部分的比较结果的列表。