2016-04-08 56 views
0

Kodumu şemada uygulamak için DrRacket kullanıyorum. Bu dil ile yeni oluyorum ve ödevlerimde yardıma ihtiyacım var. Öğretmenim konsoldan bir işlevi çağırmamı istiyor ve ismi ile çağırmamı istemiyor. Şema - İsimsiz işlev çağrısı

Bu

izin verilmez =>(işlev adı 'John (X pcf F g K: 1 4))

Bunun yerine gösterimi kullanarak, Evimi aramak zorunda isim dışında işlev.

Bu

istediği şeydir =>(John (X pcf F g K: 1 4))

adı ve çağrı olmadan bir işlev tanımlamak için herhangi bir yolu var mı o? İnternette çok aradım ama bir çözüm bulamadım.

+0

o gerçekten ne istediğini öğretmeninize sorun. – leppie

+0

Sistem, şeklinde ayarlanmış parola isteklerini işleyecek ('John (Xp F z C b Y Y 1 2 3 4: :)) –

cevap

3

Örneğiniz fazla mantıklı değil. İkinci snippet, numaralı numaralı bir parametrenin sadece bir listesi olup, gerçek bir prosedürü geçmek zorundasınız.

(define (square x) 
    (* x x)) 

(square 4) 
=> 16 

bu eşdeğerdir mi:

((lambda (x) (* x x)) 4) ; look ma, no name! 
=> 16 

"adı olmadan bir işlevi çağırmak" için bir alternatif bu örneğin ... anonim prosedürdür bir lambda ifadesini kullanmak olacaktır Yinelemeli prosedürleri lambda s cinsinden bile tanımlayabilirsiniz, ek ayrıntılar için Y-birleştirici hakkında bilgi edinin.

yorum okuduktan sonra DÜZENLEME

- sadece bir işleve parametre listesini geçmesi gerekiyorsa, bunu kullanın:

(apply function-name list-of-parameters) 
+0

"Sistem, (' John (X pc F z C b Y s 1 2 3 4: :)) "istediği bu. Ve bir parametrenin bir listesini bir işleve nasıl geçireceğim? –

+1

Öğretmeninizin ne sorduğunu tamamen yanlış anladığınıza dikkat edin. Parametreleri bir listede alırsanız, işlevi şu şekilde çağırabilirsiniz: '(işlev-ad-parametrelerinin listesini uygula). Öğretmeninizin sorduğu şey, hiçbir şekilde, işlevin adının kullanılamayacağını ima etmez. –

+0

Evet, bunu yanlış anladığımı biliyordum. Yardımcı olan şeylerin listesi yardımcı olacak, ty –

İlgili konular