我正在尝试使用#lang plai-typed在球拍中运行程序,但我一直收到“未绑定标识符”错误
(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'而不是'vector'作为输入运行时,调整为列表类型,它可以工作。我得到了矢量:
模块中的'未绑定标识符:vector?'
帮助?
答案 0 :(得分:1)
#lang plai-typed
没有vector?
功能,原因与它没有list?
,symbol?
或number?
功能的原因相同:你不需要检查一个值的类型;类型注释告诉你。
如果您想检查矢量是否为空,可以使用(= 0 (vector-length fds))
和(< 0 (vector-length fds))
。
但你为什么要使用矢量?列表往往更方便:
filter
在这里会有所帮助。vector-drop
或vector-rest
函数,因此向量不太方便重复。如果你真的想迭代一个向量,你可能需要使用一个索引。