我目前正在做一个任务,在球拍中创建一个名为aunt names的函数。该函数的目的是接受一个person结构和一个person结构列表,并返回该person的所有姑妈的排序列表。我不太确定如何启动这个函数,但我已经完成了这些对函数有帮助的函数:
female-list函数
(define (female-list flist)
(cond [(empty? flist) empty]
[(equal? 'female (person-sex (first flist)))
(cons (first flist)
(female-list (rest flist)))]
[else (female-list (rest flist))]))兄弟姐妹?函数
(define (sibling? personA personB)
(cond [(equal? personA personB) false]
[(equal? (person-father personA) (person-father personB)) true]
[(equal? (person-mother personA) (person-mother personB)) true]
[else false]))发布于 2014-03-17 06:00:46
这看起来是一个很好的开始。在编写姑妈姓名的主体之前,这里有一些可能会有用的更多帮助函数的想法:
如果personA的性别是personB
(aunt-or-uncle-of? personA personB):,则(female? personA):返回true;如果personB(aunt-or-uncle-list personA people-list):的父亲或母亲是personA,则personA返回true;如果personA是people-list).(aunt-list personA people-list):的姑妈或姑父,则返回true;如果personA是personA的姑妈,则返回true;如果每个person结构都是person结构的列表,则每个结构都是person结构的列表(并且每个最初在people-list).(aunt-list personA people-list):中的结构都返回person结构的列表,如果personA是personA,则返回true;如果personA是person的姑妈,则返回true;如果personA是person的姑母,则返回true;如果personA是personA的姑母,则返回true;如果personA是person的姑母,则返回true;如果personA是person的姑妈,则返回true)其中每个人都是personA的姑妈(每个人最初都在人物列表中)。(注意,这不同于姑妈名字,因为它返回整个人结构,而不仅仅是名字,而且不会对它们进行排序。)它们可以相互构建,也可以构建在您已有的助手函数上。这可能看起来像许多小函数,但这样每个函数都会非常清晰,如果出现问题,可以分别对它们进行测试。
另一种策略是首先开始编写主函数(aunt-names)的主体,然后假装您想要使用的任何辅助函数已经存在。例如,在编写female-names时,您可以像这样分解它:
(define (female-list flist)
(cond [(empty? flist) empty]
[(female? (first flist)) ; TODO: go back and write "female?"
(cons (first flist)
(female-list (rest flist)))]
[else (female-list (rest flist))]))https://stackoverflow.com/questions/22427741
复制相似问题