2014-02-26 23 views
0

我试图使用#lang普拉伊类型的球拍运行一个程序,但我不断收到“未绑定的标识符”错误球拍:模块中的未绑定标识符:vector?

(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”一样,而不是“矢量”作为输入,调整到列表类型,它的工作原理。用我得到的矢量:

'unbound identifier in module in:vector?'

帮助?

回答

1

#lang plai-typed没有vector?功能,同样的原因,没有一个list?symbol?,或number?功能:你不需要检查值的类型;类型注释告诉你。

如果您打算检查矢量是否为空,可以使用(= 0 (vector-length fds))(< 0 (vector-length fds))

但是你为什么要使用矢量?列表往往会更加方便:

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

刚注意到这个问题的日期,对不起,如果这是巫术。 – dpercy