2014-02-26 26 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