Jos*_*ose 3 scheme currying racket
我必须使用foldr编写自己的map函数.
想到的最简单的解决方案是:
(define (my-map f lst)
(foldr (lambda (x y) (cons (f x) y)) empty lst))
Run Code Online (Sandbox Code Playgroud)
但是,我应该在不使用lambda(或任何类型的辅助函数),递归或任何非foldr抽象列表函数的情况下执行此操作.
我也有以下问题可供我使用(我无法修改):
(define (compose f g)
(lambda (x) (f (g x))))
(define (curry f)
(lambda (x) (lambda (y) (f x y))))
(define (uncurry f)
(lambda (x y) ((f x) y)))
Run Code Online (Sandbox Code Playgroud)
我的猜测是我必须使用上述函数制作某种等价的(lambda(xy)(cons(fx)y)).我到底该怎么做呢?
尝试
(define (my-map f lst)
(foldr (uncurry (compose (curry cons) f))
empty lst))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1462 次 |
| 最近记录: |