1

假设我定义了一个程序:

(define myprog
  (a-program
   (list (labeled 'A12 (add1 'X)) (unlabeled (sub1 'Y4)))))

我想编写一个程序来查找上述程序中使用的最大索引。

一个测试用例就像:

>(max-index myprog);myprog is the program defined above
12 
;this is from A12 because its the largest index used.

我知道该方案有一个内置函数,可以找到列表中的最大元素,比如 (max 3 5 9) 会给我 9

但就我而言,我知道我必须解析我的程序并考虑省略的索引将对应于 1;X 对应于 X1。

我可以编写一个在列表中轻松执行此操作的函数,但不是“程序”。

如果有人能告诉我我应该首先看什么,那会很有帮助。

谢谢。

4

1 回答 1

2

"A Program" in the sense defined in your question is a list of lists, and nothing else. If you know how to write a function that does what you need for "a list" please post it here, you'll see that it works for "a program" too.

于 2012-04-26T15:52:22.040 回答