2013-02-17 45 views
-1
(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) 

我想知道你将如何编写一个函数,消耗一个餐厅,并产生餐厅的总数。就像我带餐馆1一样,我得到6道菜。希望我这样做是正确的。消费清单球拍

+0

你知道设计配方吗? – dyoo 2013-02-17 07:33:14

回答

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定义一个新结构,都会为其每个字段自动创建一个访问器过程。例如,dishprice是通过在dish(dish-price dish)上调用dish-price获得的。

+0

谢谢。但是,“我们如何确定列表的大小”是什么意思? – Josh 2013-02-17 05:08:14

+0

@Josh有一个内置过程,给定一个列表,返回它的大小。我邀请你看看[文档](http://docs.racket-lang.org/reference/pairs.html),很容易找到它 – 2013-02-17 05:10:15

+0

很多这个我没有在课堂上过去。有没有更简单的方法来做到这一点? – Josh 2013-02-17 05:25:53