2011-11-29 16 views
8

Scrivere (in-ns 'dbx) in un file e caricarlo non modifica lo spazio dei nomi predefinito del repl (utilizzando cygwin/console). Lo spazio dei nomi è ancora user=>, non dbx=>.Come avviare REPL in uno spazio dei nomi definito dall'utente?

vikrant[28] clj 
Clojure 1.3.0 
user=> (load-file "try1.clj") 
#(Namespace dbx) 
user=> 

Come è possibile avviare REPL in uno spazio dei nomi definito in un file di script?

+1

(ns dbx) (clojure.main/repl) (in-NS 'dbx (clojure.core/uso)' clojure.core) – vikbehal

+3

Just a rapido commento sulla formazione. Dovrebbe essere più semplice e più semplice copiare/incollare il testo nella tua console Cygwin piuttosto che scattare una schermata di esso. –

risposta

1
java -cp .;clojure-1.3.0.jar; clojure.main -e \ 
"(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)" 
+0

@Adrian Mouat, grazie per averti annullato. – BLUEPIXY

6

Se si utilizza Leiningen per costruire il progetto, quindi aggiungere questo al file del progetto project.clj:

(defproject test "1.0.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :dependencies [[org.clojure/clojure "1.2.1"]] 
    :main test.core) 

Nel file src/test/core.clj, aggiungere questo per creare un test.core namespace:

(ns test.core) 

(defn -main [& args]) 

Successivamente, crea il tuo progetto con Leiningen con lein compile. Quindi immettere lein repl per richiamare REPL nel proprio spazio dei nomi. Il prompt REPL sarà simile:

test.core=> 
+1

Raccomando di utilizzare la [risposta più aggiornata di Carlos] (http://stackoverflow.com/a/24364816/109618). –

0

(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)

0

C'è un modo molto migliore per farlo nelle versioni recenti Clojure:

java -cp myapp.jar clojure.main -m myapp.core

1

Oltre a Carlos' answer suggerendo :repl-options {:init-ns foo.bar}, ho anche avuto successo con l'aggiunta di :dev {:main user} alla mia profile.clj.

per dare più contesto:

;; /foo/profile.clj 
... 
:main foo.core 
:dev {:main user 
     :source-paths ["dev"]}` 
... 

;; /foo/dev/user.clj 
(ns user 
    (:require 
    [clojure.pprint :refer (pprint)] 
    [clojure.repl :refer :all] 
    [clojure.string :as str] 
    [clojure.test :refer [run-tests run-all-tests]] 
    [clojure.tools.namespace.repl :refer [refresh refresh-all]])) 
Problemi correlati