Простая программа clojure не работает

Я пытаюсь следовать примеру из кулинарной книги Clojure Data Analasys. Я использую LightTable для игры с программой. В первом примере показано, как читать данные в формате .csv.

Я использовал lein newget-data. Затем я добавил две зависимости в файл проекта

  (defproject getting-data "0.1.0-SNAPSHOT"

  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [
                  [org.clojure/clojure "1.5.1"]
                  [incanter/incanter-core "1.4.1"]
                  [incanter/incanter-io "1.4.1"]
                ]
  )

Затем в файле core.clj я говорю, как показано ниже, используя cmd-shift-enter в LightTable для оценки программы, но я получаю следующие исключения:

(use 'incanter.core 'incanter.io)

clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: невозможно разрешить символ: использовать в этом контексте, компиляция:(/Users/idf/Documents/clojure/getting-data/src/getting_data/core.clj:1: 1)

(read-dataset "data/small-sample.csv") 

clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: невозможно разрешить символ: набор данных чтения в этом контексте, компиляция:(/Users/idf/Documents/clojure/getting-data/src/getting_data/core.clj: 4:1)

Не уверен, что я делаю неправильно?


person user1676605    schedule 31.01.2014    source источник
comment
Можете ли вы показать весь ваш проект.clj?   -  person Michiel Borkent    schedule 01.02.2014
comment
Только что отредактировал пост.   -  person user1676605    schedule 01.02.2014
comment
Как вы оцениваете/компилируете выражения?   -  person Michiel Borkent    schedule 01.02.2014
comment
Кстати, ваш project.clj выглядит отлично.   -  person Michiel Borkent    schedule 01.02.2014
comment
См. перезапись выше. Я использую LightTable, используя cmd-shift-enter   -  person user1676605    schedule 01.02.2014
comment
Тогда я не уверен, так как я мало использовал LT. Но вам все равно нужно иметь правильное объявление пространства имен, например:   -  person Michiel Borkent    schedule 01.02.2014
comment
(nsget-date.core (:require [incanter.core :as incanter]) (:require [incanter.io :as io]))   -  person Michiel Borkent    schedule 01.02.2014
comment
Проблема, похоже, [incanter/incanter-core 1.5.4] [incanter/incanter-io 1.5.4]   -  person user1676605    schedule 01.02.2014
comment
Вы поставили (use ...) в (ns ...) вместо (:use ...) (обратите внимание на двоеточие).   -  person d11wtq    schedule 01.02.2014
comment
Разместите объявление core.clj ns.   -  person d11wtq    schedule 01.02.2014
comment
Вы можете попробовать запустить его в командной строке с lein repl. Это скажет вам, связано ли это с конфигурацией LightTable. (Хотя я ничего не знаю о LT.)   -  person Mars    schedule 01.02.2014
comment
Как я уже говорил, проблема в том, что мне нужно было использовать 1.5.4. не уверен, почему оригинал не работает.   -  person user1676605    schedule 01.02.2014


Ответы (2)


«Невозможно разрешить символ: использовать в этом контексте» означает, что среда светового стола не может ничего оценить в принципе: проблема не может быть связана с инкантером. Не используя световую таблицу, я не могу дать дальнейших советов по ее устранению, но похоже, что вы каким-то образом забрели в пространство имен, на которое не ссылается clojure.core. Это должно работать, если вы (clojure.core/refer 'clojure.core) перед остальным кодом, который вы действительно хотите запустить, но, конечно, это не должно быть необходимо.

person amalloy    schedule 01.02.2014

поставь свой код

(ns getting-data.core)
(use 'incanter.core 'incanter.io)
(read-dataset "data/small-sample.csv") 

в сгенерированном файле core.clj перейдите туда и нажмите strg-enter. Теперь он должен оценить все внутри редактора. В качестве альтернативы откройте проект и откройте Instarepl, и LightTable спросит вас, к какому проекту должен подключиться repl.

привет Фрике

person fricke    schedule 20.02.2014