oakes / Nightlight

An embedded editor for Clojure
https://sekao.net/nightlight/
The Unlicense
788 stars 35 forks source link

Unable to add core.logic to namespace #17

Closed mchampine closed 7 years ago

mchampine commented 7 years ago

(ns trynightlight.core (:refer-clojure :exclude [==] (:require [clojure.core.logic :refer :all])))

Fails with: java.lang.IllegalArgumentException: No value supplied for key: (:require [clojure.core.logic :refer :all])

(ns trynightlight.core (:require [clojure.core.logic :refer :all]))

Fails with:

java.lang.Exception: No namespace: clojure.core.logic

From nightlight REPL: clojure.core=> (ns trynightlight.core) nil trynightlight.core=> (use 'clojure.core.logic) CompilerException java.lang.Exception: namespace 'clojure.core.logic' not found, compiling:(NO_SOURCE_PATH:2:1)

My project.clj contains:

:dependencies [[org.clojure/clojure "1.8.0"] [org.clojure/core.logic "0.8.11"]]

~/.lein/profile.clj:

{:user {:plugins [[cider/cider-nrepl "0.14.0"] [nightlight/lein-nightlight "1.3.2"] [lein-cljfmt "0.3.0"] [lein-exec "0.3.4"] [lein-try "0.4.3"] [lein-bin "0.3.4"] [slamhound "1.5.5"]]}}

This all works fine from nrepl:

user=> (ns nightlight.core) nil nightlight.core=> (use 'clojure.core.logic) WARNING: == already refers to: #'clojure.core/== in namespace: nightlight.core, being replaced by: #'clojure.core.logic/== nil

oakes commented 7 years ago

That appears to be a typo in your ns form. Your :require is actually inside the :refer-clojure form.

mchampine commented 7 years ago

Turns out my main issue is with the :exclude directive. Even in the first example, when properly formed, :exclude in an ns statement doesn't work.

(ns trynightlight.core (:refer-clojure :exclude [==]) (:require [clojure.core.logic :refer :all]))

Complains that:

WARNING: == already refers to: #'clojure.core/== in namespace: trynightlight.core, being replaced by: #'clojure.core.logic/==

And then any use of "==" throws an exception.

(run* [q] (== q 1))

Sun Dec 18 17:29:49 EST 2016 [worker-3] ERROR - POST /eval java.lang.ClassCastException: clojure.core.logic.LVar cannot be cast to java.lang.Number at clojure.lang.Numbers.equiv(Numbers.java:208) at clojure.lang.Numbers.equiv(Numbers.java:3912) at trynightlight.core$eval4393$fn4394$fn4395$_inc__4396.invoke(NO_SOURCE_FILE:0)