0
(define-struct restaurant (name address  lod))
(define-struct dish  (name main-ingredient price))

(define lod
  (list
   (make-dish "BNC" "pepper" 15.00)
   (make-dish  "BBQ" "sauce" 20.00)
   (make-dish "BAW" "vanilla" 18.00)
    (make-dish "ACA" "tomato" 15.00)
   (make-dish  "NAM" "onions" 25.00)
   (make-dish "PLA" "milk" 34.00)))

(define lod1
  (list
   (make-dish "AHSH" "carrots" 23.00)
   (make-dish  "PROA" "garlic" 21.00)
   (make-dish "MENE" "eggs" 16.00)
    (make-dish "SAYB" "water" 11.00)
   (make-dish  "WAFA" "chicken" 22.00)
   (make-dish "LDAFK" "chocolate" 10.00)))


(define Sky-Dragon (make-restaurant "Sky Dragon" "23 Cutoiut, NY"  lod))
(define Tomas (make-restaurant "Tomas" "34 Rossi, CA" lod1))


(define restaurant1 Sky-Dragon)
(define restaurant2 Tomas)

レストランを消費し、レストランの料理の総数を生成する関数をどのように記述しますか。私がrestaurant1を取るように、私は6つの料理を手に入れます。私がこれを正しくやっているといいのですが。

4

1 に答える 1

1

簡単です。アクセサプロシージャを使用してレストランの料理のリストを取得し、次に組み込みのプロシージャを使用してそのリストのサイズ(または「長さ」)を決定します。

(define (number-of-dishes restaurant)
  (<???>                  ; how do we determine the size of a list?
    (<???> restaurant)))  ; how do we access a restaurant's list of dishes?

詳細を理解させますが、覚えておいてください。を使用して新しい構造体を定義するたびdefine-structに、そのフィールドごとにアクセサプロシージャが自動的に作成されます。たとえば、priceaのdishは:を呼び出すことによって取得さdish-pricedishます(dish-price dish)

于 2013-02-17T05:02:16.333 に答える