【问题标题】:drRacket code assistancedrRacket 代码帮助
【发布时间】:2015-07-28 17:52:25
【问题描述】:

我有这个代码:

(define (make-entry person money job)
     (list person money job))
(define (make-person list)
(define (sampledata
     (list (make-entry (make-person "jerry" "nicolas") 100 "clerk")
            (make-entry (make-person "shara" "vi") 50 "singer")))
(define trial-person (make-entry (make-person "jerry" "nicolas") 100 "clerk")

我的问题是我不知道我可以使用什么功能,所以我会导致:

(name trial-person); 
Value: (jerry nicolas)
(money trial-person)
;Value: (100)
(job trial-person)
;Value: (clerk)

我做了一些阅读,但我仍然没有想出答案。如果有人可以帮助我,这样我就可以上课了,那就太好了。提前致谢

【问题讨论】:

    标签: scheme racket


    【解决方案1】:

    在第二个define 上,您正在定义一个过程make-person,它接受参数list,它永远不会结束。如果你使用 DrRacket 并按下 CTRL+i 你会看到这个奇怪的标识:

    (define (make-person list)
      (define (sampledata
               (list (make-entry (make-person "jerry" "nicolas") 100 "clerk")
                     (make-entry (make-person "shara" "vi") 50 "singer")))
        (define trial-person (make-entry (make-person "jerry" "nicolas") 100 "clerk")
    

    您会看到在过程make-person 的定义中有一个本地过程定义。使用list 作为参数将使过程sampledata 永远无法工作,因为它使用list 作为过程但将使用您传递的任何内容。 sampledata 也有一个本地定义 trial-person,但由于这两个过程都没有主体,即使您在末尾添加结束括号,它们也会导致语法错误。

    有根据的猜测,我猜代码应该是这样的:

    如果make-person 的实现与list 相同,则应该是:

    (define make-person list) ; removed ( before make.person
    (define sampledata        ; removed ( before sampledata
      (list (make-entry (make-person "jerry" "nicolas") 100 "clerk")
            (make-entry (make-person "shara" "vi") 50 "singer")))
    (define trial-person (make-entry (make-person "jerry" "nicolas") 100 "clerk")) ; added missing ) at end
    

    现在,由于您对代码进行了格式化,就好像代码已正确编写一样,几乎不可能看到任何错误或差异,因此我对更改进行了注释。经常按 CTRL+i 会节省很多时间。

    关于如何制作namemoneyjob 的问题:如果你评估trial-person,你会得到(("jerry" "nicolas") 100 "clerk"),因此如果你知道你的carcdr,它应该是明确money 的定义将与从该列表中获取100 的过程相同,即cadr

    【讨论】:

      猜你喜欢
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多