2011-11-29 11 views
8

Escribir (in-ns 'dbx) en un archivo y cargarlo no cambia el espacio de nombre predeterminado de la réplica (utilizando cygwin/console). El espacio de nombres sigue siendo user=>, no dbx=>.¿Cómo comienzo REPL en un espacio de nombre definido por el usuario?

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

¿Cómo podemos iniciar REPL en un espacio de nombre definido en un archivo de script?

+1

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

+3

Sólo una comentario rápido sobre el formateo. Debe ser más simple y más limpio simplemente copiar/pegar el texto en su consola cygwin que tomar una captura de pantalla de la misma. –

Respuesta

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, gracias por deshacerte. – BLUEPIXY

6

Si está utilizando Leiningen para construir su proyecto, a continuación, añadir esto a archivos de su proyecto project.clj:

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

En el archivo src/test/core.clj, añadir esto a crear un test.core espacio de nombres:

(ns test.core) 

(defn -main [& args]) 

A continuación, construya su proyecto con Leiningen con lein compile. Luego ingrese lein repl para invocar el REPL en su espacio de nombres. El símbolo del REPL se verá así:

test.core=> 
+1

Recomiendo usar la [respuesta más actualizada] de Carlos (http://stackoverflow.com/a/24364816/109618). –

0

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

0

Hay una mejor manera de hacer esto en los últimos versiones Clojure:

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

1

Además de Carlos' answer sugiriendo :repl-options {:init-ns foo.bar}, también han tenido éxito con la adición de :dev {:main user} a mi profile.clj.

para dar más contexto:

;; /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]])) 
Cuestiones relacionadas