我试图使用#lang plai类型在racket中运行一个程序,但我一直得到“未绑定标识符”错误。
(define (get-fundef [n : symbol] [fds : (vector FunDefC)]) : FunDefC
(cond [(empty? fds)
(error 'get-fundef "reference to undefined function")]
[(vector? fds)
(cond [(equal? n (fdC-name (vector-ref fds 0))) (vector-ref fds 0)]
[else (get-fundef n (vector-drop fds 1))])]))当我以'listof‘而不是’向量‘作为输入时,根据列表类型进行调整,它就能工作了。我得到的向量是:
‘模块中的未绑定标识符在:向量?’
帮助?
发布于 2014-03-16 22:39:37
#lang plai-typed没有vector?函数,原因与它没有list?、symbol?或number?函数的原因相同:您不需要检查值的类型;类型注释告诉您。
如果要检查向量是否为空,则可以使用(= 0 (vector-length fds))和(< 0 (vector-length fds))。
但你为什么要用向量呢?清单往往更方便:
filter在这里会有所帮助。vector-drop或vector-rest函数。如果您真的想迭代一个向量,那么您可能需要使用一个索引。https://stackoverflow.com/questions/22053453
复制相似问题