球拍:模块中的未绑定标识符:矢量



我正在尝试使用 plai 类型在球拍中运行程序 #lang 但我不断收到"未绑定标识符"错误

(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"作为输入运行相同的操作时,调整为列表类型,它可以工作。使用矢量,我得到:

"模块中的未绑定标识符:矢量?"

帮助?

#lang plai-typed没有

vector?函数,原因与它没有list?symbol?number?函数相同:你不需要检查值的类型;类型注释告诉你。

如果你想检查向量是否为空,你可以使用 (= 0 (vector-length fds))(< 0 (vector-length fds)) .

但是为什么要使用向量呢?列表往往更方便:

  • 列表有更多的实用程序函数;特别是,filter在这里会有所帮助。
  • 向量不太方便重复,因为没有vector-dropvector-rest函数。如果确实要遍历向量,则可能需要使用索引。
  • 向量是可变的,除非你真的需要它,否则你不想要它。

相关内容

  • 没有找到相关文章

最新更新