假设我定义了一个程序:
(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。
我可以编写一个在列表中轻松执行此操作的函数,但不是“程序”。
如果有人能告诉我我应该首先看什么,那会很有帮助。
谢谢。