2012-01-09 73 views
0

我已經定義is-string?方案功能

(define (is-string? expr) 
    (string? expr)) 

interpret-string

(define (interpret-string expr env) 
    expr) 

這些都是我寫的功能:

(define (string-equals? expr) 
    (and 
    (list? expr) 
    (= 3 (length expr)) 
    (equal? '= (first expr)))) 

(define (interpret-string expr env) 
    (= 
    (internet (second expr) env) 
    (interpret (third expr) env))) 

這是字符串的解釋:

((is-string? expr) (interpret-string expr env)) 

當我進入這一行來檢查它是否工作:

(check-expect (is-string-equals? ’(string-equals "abc" "abc")) 
       #t) 

我得到一個錯誤說:

check-expect encountered the following error instead of the expected value, #t. 
    :: reference to undefined identifier: is-string-equals? 

我會對is-string-equals辦?我沒有任何線索。

這裏是根據要求詢問的實際問題。

  1. 用「字符串」數據類型擴展解釋器。你將需要編寫函數:
  2. is-string?
  3. 解釋字符串 並修改解釋函數以支持字符串數據類型。 另外添加兩個函數來使用解釋型語言中的字符串:
  4. string-equals?檢查兩個給定的字符串是否相同。
  5. string-join返回通過連接兩個字符串togeter形成的新字符串。 確保您的功能通過以下試驗:

    (?入住期待(是字符串,等於「(字符串等於‘ABC’,‘ABC’)) #T)

    (登記期待(解釋字符串,等於「(字符串等於 「ABC」, 「ABC」)(請-ENV)) #T)

+0

雖然從上面的定義看起來很奇怪,但是你沒有一個名爲'is-string-equals?'的函數,但是你有一個叫'string-equals?'的函數。 'interpret-string'過程是什麼?目前尚不清楚*根據'check-expect'測試你想要測試的內容 – 2012-01-10 00:11:57

+0

字符串不是字符列表。 – leppie 2012-01-10 06:39:41

回答

2

我看這是怎麼回事 - 這是一個PL類,並且你正在擴展一個現有的解釋器,以便它可以處理字符串和字符串比較 - 但它在我看來很像很多爲您的函數添加目標語句,併爲所有這些語句測試用例。從頂部開始。 is-string?應該做什麼?編寫測試用例以確保它能夠完成它應有的功能。努力下去。

此外,羞辱你的導師給你測試用例:)。