早教吧 育儿知识 作业答案 考试题库 百科 知识分享

Scheme高手请进~两个函数相互定义(define(flat-recurseedlist-proc)(letrec((helper(lambda(ls)(if(null?ls)seed(list-proc(carls)(helper(cdrls)))))))helper))(define(deep-recurseeditem-proclist-proc)(letrec((hlp(lambda(ls)(if

题目详情
Scheme高手请进~两个函数相互定义
(define (flat-recur seed list-proc)
(letrec ((helper (lambda (ls)
(if (null?ls) seed
(list-proc (car ls) (helper (cdr ls)))))))
helper))
(define (deep-recur seed item-proc list-proc)
(letrec ((hlp (lambda (ls)
(if (null?ls) seed
(let ((a (car ls)))
(if (or (pair?a) (null?a))
(list-proc (hlp a) (hlp (cdr ls)))
(item-proc a (hlp (cdr ls)))))))))
hlp))
怎么用deep-recur定义flat-recur,怎么用flat-recur定义deep-recur?
就是在定义deep-recur之后用deep-recur的功能来定义flat-recur,另一个就是反过来啦~
本人为菜鸟,这是一本菜鸟入门书的训练题来着
▼优质解答
答案和解析
(define (flat-recur seed list-proc)
(deep-recur seed list-proc list-proc))
用flat-recur来定义deep-recur尚未想到好办法..