2010-05-18 23 views
14

clojure.contrib.trace ad alanındaki işlevleri REPL dosyasında slime olarak kullanmak istiyorum. Otomatik olarak yüklemek için balçık nasıl alabilirim? İlgili bir soru, çalışan bir repara özel bir isim alanını nasıl ekleyebilirim? clojure.contrib API üzerindeclojure.contrib işlevlerini slime kullanarak değiştirme REPL

böyle kullanımını açıklar:

(ns my-namespace 
    (:require clojure.contrib.trace)) 

Ama herhangi bir işlev için bir "sembol çözülemiyor" hatası ile yükleyemedi olmak dosyasında benim kod sonuçlarına bu ekleme iz ad alanı.

Ben ServerSocket başlatmak için Leiningen'in 'Lein swank' kullanmak ve bu

(defproject test-project "0.1.0" 
    :description "Connect 4 Agent written in Clojure" 
    :dependencies [[org.clojure/clojure "1.2.0-master-SNAPSHOT"] 
        [org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]] 
    :dev-dependencies [[leiningen/lein-swank "1.2.0-SNAPSHOT"] 
         [swank-clojure "1.2.0"]]) 

Her şey yani herhangi bir değişiklik üretmez 'Lein Deps', bugüne kadar görünüyor gibi project.clj dosya görünüyor. Ee n'aber? Sen alıyoruz

+1

Michal'in cevabını doğru olarak işaretlemek isteyebilirsiniz. –

+1

Tyler, sorunun cevabını çözdüğü için Michal'in cevabını bu soruya verilen cevap olarak işaretlemelisiniz. Bunu yapmak için sadece iyi bir form olarak düşünmekle kalmaz, aynı zamanda itibar puanınızı biraz artırır.Sorunun skorunun yakınındaki onay işaretini tıklamanız yeterlidir. –

cevap

18
  1. :require verilen ad herhangi Vars çekmemesi çünkü istisnalar "sembolü çözülemiyor", sadece ad kendisi kullanılabilir hale getirir.

    Böylece size ns formda (:require foo.bar), sen ad foo.bar den Var quux erişmek için foo.bar/quux yazmak için varsa. Bunu fb/quux'a kısaltmak için (:require [foo.bar :as fb])'u da kullanabilirsiniz. Son olasılık, bunun yerine (:use foo.bar) yazmaktır; Bu, tüm Varların foo.bar'dan ad alanınızda kullanılabilir olmasını sağlar. Genellikle :use dış kütüphanelere kötü bir stil olarak kabul edildiğini unutmayın; Yine de, tek bir projede olabilir.

  2. Re: otomatik Çoğaltma de malzeme kullanılabilir hale: ns formların

    :require, :use ve :refer hükümler clojure.core yılında require, use ve refer fonksiyonlarda karşılığı var. Ayrıca :refer-clojure ve :import'a karşılık gelen makrolar da vardır.

    Bu, clojure.contrib.trace'u REPL'de kullanılabilir hale getirmek için (require 'clojure.contrib.trace) veya (require '[clojure.contrib.trace :as trace]) gibi bir şey yapabilirsiniz anlamına gelir. Not: require bir işlev olduğundan, kitaplık özelliklerinden alıntı yapmanız gerekir. (use ve refer da alıntı almakta lib gözlük; import ve refer-clojure hiçbir alıntı gerektirir.)

    olanağı (Eğer balçık ile bunu yaparken de dahil) bir Clojure Repl her başlattığınızda belirli ad alanları için en basit yolu koymaktır Uygun require, ~/.clojure/user.clj numaralı telefonu arar. ( katkısı) ((use 'clojure.contrib.repl-utils) orada olsa da ben şahsen yapmıyorum) çekmek için user.clj içine koymak ne için bir açıklama için John Lawrence Aspden tarafından Requiring all possible namespaces blog yazısı bakın.

+0

Çok teşekkürler! Emacs'te hata ayıklama artık çok daha kolay. – Limpoch