Scheme assoc和assq是如何在方案中实施的?

Scheme assoc和assq是如何在方案中实施的?,scheme,lisp,racket,Scheme,Lisp,Racket,assoc和assq是如何在方案中实施的 那么,这两个程序的实习生代码是什么呢?归根结底,只要符合标准中规定的行为,如何实施并不重要,请参见第6.4节 在中,assq看起来是: SCM_定义SCM_assq、assq、2、0、0、, SCM键,SCM键, @deffnx{Scheme Procedure}assv密钥列表\n @deffnx{Scheme Procedure}assoc密钥列表\n 获取@var{list}中与@var{key}关联的条目。到\n 确定参数@var{key}是否与

assoc和assq是如何在方案中实施的


那么,这两个程序的实习生代码是什么呢?

归根结底,只要符合标准中规定的行为,如何实施并不重要,请参见第6.4节

在中,assq看起来是:

SCM_定义SCM_assq、assq、2、0、0、, SCM键,SCM键, @deffnx{Scheme Procedure}assv密钥列表\n @deffnx{Scheme Procedure}assoc密钥列表\n 获取@var{list}中与@var{key}关联的条目。到\n 确定参数@var{key}是否与中的特定项匹配\n @var{alist},@code{assq}将键与@code{eq?},@code{assv}进行比较\n 使用@code{eqv?},而@code{assoc}使用@code{equal?}。如果@var{key}\n 根据以下等式在@var{alist}中找不到\n 谓词正在使用,然后返回@code{f}。这些功能\n 返回找到的整个列表项,即键和值。 定义函数名s\U scm\U assq { SCM ls=alist; 对于;scm\U是\U对ls;ls=scm\U CDR ls { SCM tmp=SCM_车辆ls; SCM\U ASSERT\U类型SCM\U是\U对tmp、alist、SCM\U ARG2、FUNC\U名称、, 协会名单; 如果scm\U是\U eq scm\U CAR tmp,则键 返回tmp; } SCM\U ASSERT\U类型SCM\U NULL\U或\U NIL\P ls,列表,SCM\U ARG2,函数名, 协会名单; 返回SCM\u BOOL\u F; } 未定义函数名 这是排除某些类型检查的C等价物:

定义assq密钥列表 让循环ls-alist 如果一对?ls 让tmp汽车转向 如果情商?汽车tmp钥匙 tmp 循环cdr ls F
取决于您使用的方案。查看其来源(如果可用)。