2012-01-01 7 views
2

とは何ですか?要素とそれをテストする方法?どのようなものです:

'(EQU (COLOR TABLE) ?) 

と呼ばれ、次の

(def seq-counter (atom 0)) 


(defn tokenize-data [data] 
    (reduce 
     (fn [out-data-map token] 
      (if (seq? token) 
       (conj out-data-map {(keyword (str "DIRECTIVE_" (reset! seq-counter (inc @seq-counter))))token}) 
       (if-not (= token (first '(EQU))) 
        (conj out-data-map {(keyword (str "DATA_1")) token}) 
        (conj out-data-map {:START '(EQU)})))) 
     {} 
     data)) 

の出力に逆呼び出しは

([:START (EQU)] [:DIRECTIVE_13 (COLOR TABLE)] [:DATA_1 ?]) 

私の質問がある作り出しますか?私はそれを(以下のものを除いて)どのように比較するのですか?

私は見てみることができないのですか?そこに\を使用していますか?

私ができることは、このように比較して、私が望む結果を得ることです。

(= (last (nth (reverse (tokenize-data '(EQU (COLOR TABLE) ?))) 2)) (first '(?))) 

答えて

3

あなたはただ、その式の前に引用'を置くことによって、任意の式を評価するからClojureのを防ぐことができます。したがって、'(?)は、?のリストを最初の要素として引用し、Clojureは?関数を呼び出そうとせず、(first '(?))はそのリストの?にアクセスします。

直接?シンボルで取得するには、単にあなたがClojureのは?

user=> (= '? (first '(?))) 
true 
+0

おかげに割り当てられている値(もしあれば)を返すようにしようとせず、シンボル自体にアクセスできるようになる'?を行います。私は忘れた 'という言葉は、リスト要素だけでなくリスト自体にも適用されます。 – octopusgrabbus

関連する問題