回文章列表
作者meemily.bbs@bbs.cs.nthu.edu.tw (影子), 信區: sources
標題[狂問]請問有沒有教scheme的教授
時間清華資訊(楓橋驛站) (Fri Dec 31 10:24:34 2004)
轉信站: GIBBS!news2.ncku!ccnews.ncku!news.ccns.ncku!news.mksh.phc!news.nsysu!ne


如題

請問有沒有教scheme的教授

謝謝

問題如下:(會scheme的幫忙解一下 ,感恩)

;(set? '(a b a c d)) ;#f  →這樣看來是說 有重複的話是#f
;(set? '(a b d e)) ;#t      沒重複的話是#t
;use member?
(define member
  (lambda (n ls)
    (cond
      ((null? ls) #f)
   ;  ^^^^^^^^^^^^^^^^^^^^這種怎麼解釋(空的是#f?)
      ((eq? (car ls) n) #t)
;   ^^^^^^^^^^^^^^^^^^^^^^^^^^^相等叫#t
      (else (member n (cdr ls))))))
(define set?
  (lambda (ls)
    (cond
      ((null? ls) #t)
 ; ^^^^^^^^^^^^^^^^^^^^空是真?
      ((eq? #f (member (car ls) (cdr ls))) #f)
   ; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^這在搞什麼?
                    ((member的東西 和 否 相等的話 就執行 否))
      (else (set? (cdr ls))))))

(set? '(a b a b e))  ; →你看執行結果  這個是#f→可以理解
(set? '(a b c d e))  ;→這邊就見鬼了  執行也是#f→是上面哪裡有錯嗎
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: 140.125.90.36
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻