2014-11-13 37 views
3

我必須使用foldr編寫我自己的地圖功能。計劃/ DrRacket - 地圖功能與foldr

,想到的最簡單的解決方法是:

(define (my-map f lst)  
(foldr (lambda (x y) (cons (f x) y)) empty lst)) 

不過,我應該這樣做沒有使用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))) 

我的猜測是,我必須做出某種相當於(拉姆達(XY)(缺點(FX) ))使用上述功能。我該如何去做這件事?

回答

5

嘗試

(define (my-map f lst)  
    (foldr (uncurry (compose (curry cons) f)) 
     empty lst)) 
+0

它的工作!非常感謝。 – Jose