clojure
ちょいとjuliaに秋田ので、久しぶりにOpenBSDを立ち上げた。
そしてぶらぶらと/usr/ports/lang/を見ていたら、clojureなんてのが出ていた。 それって、javaを下敷きにした新風なlispだよな。そんなのOpenBSDで動くのか? まあ、動くから登録されているんだろうけど。
念の為にjavaを探してみると、それっぽいのが無い。でもまあいいか。
を見るとjavaが入ってる事を前提にしてclojureをインストールしてる。
まあ、portsから入れれば、javaもきっと釣られて入ってくるだろう。入れてみた。 そして、cljってのが楽そうなので起動。
ob$ clj Couldn't find 'java'. Please set JAVA_HOME.
ホェー、環境設定が必要なのか。
ob$ export JAVA_HOME=/usr/local/jdk-1.8.0 ob$ clj Clojure 1.10.0 user=>
動いた。よかったね。
まてまて、裸で使うのは寒いぞ。少なくとも、 clojure-mode や cider それに、 Leiningen ぐらいは入れておけよ。こういうのは幾らなんでも、portsには無いだろうから。
Leiningen Tutorial を見ると、juliaで言うPkgの開発用なのね。
clojure衆の溜まり場は、ここか。 Community Resources
兎も角、leinを入れた。こやつはjavaのPATHが必要そうなので、先に設定する。
ob$ PATH=$JAVA_HOME/bin:$PATH ob$ lein repl nREPL server started on port 35366 on host 127.0.0.1 - nrepl://127.0.0.1:35366 REPL-y 0.4.3, nREPL 0.6.0 Clojure 1.10.0 OpenJDK Server VM 1.8.0_202-b08 Docs: (doc function-name-here) (find-doc "part-of-name-here") Source: (source function-name-here) Javadoc: (javadoc java-object-or-class-here) Exit: Control+D or (exit) or (quit) Results: Stored in vars *1, *2, *3, an exception in *e user=>
ここまで動けば、Linuxのそれと遜色ないな。
最近の事情を余り知らないので、フリークに訪ねてみる。
そうか、補完をするには、companyが良いらしい。
(use-package company :config (global-company-mode) (setq company-idle-delay 0.1 company-minimum-prefix-length 2 company-selection-wrap-around t) (bind-keys :map company-mode-map ("C-i" . company-complete)) (bind-keys :map company-active-map ("C-n" . company-select-next) ("C-p" . company-select-previous) ("C-s" . company-search-words-regexp)) (bind-keys :map company-search-map ("C-n" . company-select-next) ("C-p" . company-select-previous)))
こやつを動かすには、use-packageって言うパッケージが必要になるんで、先にelpaに行って入れておく事。
pareditも入れておけとな。ParEdit チュートリアル
(use-package paredit :config (bind-keys :map paredit-mode-map ("C-h" . paredit-backward-delete))) (use-package clojure-mode :init (add-hook 'clojure-mode-hook #'paredit-mode) ;; 略 )
ciderを動かしてclojureと接続されていると、下記のように便利に使えるとな。
cider-jack-in (C-c M-j) REPLに接続します。日々ここから作業スタートです。 cider-eval-last-sexp (C-x C-c or C-c C-c) 現在カーソルのあるフォームを評価します。 cider-load-buffer (C-c C-k) 名前空間(ファイル全体)を評価します。 cider-pretty-print (C-u C-c C-p) 評価した結果をデータ構造が見やすいように表示してくれます。 cider-interrupt (C-c C-b) 評価を中断させる
こちらにあんちょこが、CIDER Quick-Reference Card
こちらは、開発例かな。 Clojure 完全マスター with Emacs/Cider-mode
good job
ニューラルネットの学習過程を雑にグラフ化してみた へぇ、面白い物を見つけたな。
ニューラルネットワークが任意の関数を表現できることの視覚的証明
これ以外にも詳細な説明が有るので見ておくと吉。違う分野に手を出すと、知識が拡がるなあ。 井の中の蛙は、いかんぜよ。
そして、clojure用のjupterだな。
ブラウザ上でデータ分析が出来る!Clojure/Gorilla入門
gorilla
debian:tmp$ lein new app gorilla Generating a project called gorilla based on the 'app' template. debian:tmp$ cd gorilla/ debian:gorilla$ emacs project.clj debian:gorilla$ lein gorilla clojure.lang.Compiler$CompilerException: Syntax error macroexpanding clojure.core/ns at (ring/util/mime_type.clj:1:1). #:clojure.error{:phase :macro-syntax-check, :line 1, :column 1, :source "ring/ut il/mime_type.clj", :symbol clojure.core/ns} at clojure.lang.Compiler.checkSpecs (Compiler.java:6971) : clojure.lang.Var.applyTo (Var.java:705) clojure.main.main (main.java:37)
早速エラーの返礼。
debian:repository$ pwd /home/sakae/.m2/repository debian:repository$ ls ch/ clout/ gorilla-repl/ org/ cheshire/ com/ grimradical/ reply/ cider/ commons-codec/ http-kit/ rewrite-clj/ cljfmt/ commons-fileupload/ javax/ rewrite-cljs/ clj-http/ commons-io/ jline/ ring/ clj-http-lite/ commons-logging/ joda-time/ slingshot/ clj-stacktrace/ compojure/ lein-gorilla/ tigris/ clj-time/ gorilla-plot/ net/ trptcolin/ clojure-complete/ gorilla-renderable/ nrepl/
ringって、ここに置いてある物と違うのかな? javaも同時に見ないといけないのは辛い商売だな。
clojure on Debian
64Bit機ではどうかと clojureを入れてみる。jdkが多分必要だろうと思って、 default-jdk を入れた。
sakae@debian:/tmp$ javac -version javac 11.0.4 sakae@debian:/tmp$ java -version openjdk version "11.0.4" 2019-07-16 OpenJDK Runtime Environment (build 11.0.4+11-post-Debian-1deb10u1) OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Debian-1deb10u1, mixed mode, sharing)
ciderが何だか取り下げられていてインストール出来ない。nREPLからpREPLへでも移行するんで、一時閉店なのかな?
ゴリラもnREPLの影響を受けるようで、こんなのを指定するといいよとの事だけど、
:plugins [[org.clojars.benfb/lein-gorilla "0.6.0"]]
ちゃんとするまで待つか。わたしーー待つわよ。
また32Bit機に戻ってきて
debian:gorilla$ lein gorilla :ip xxx.xxx.xxx.xxx :port 12345 Gorilla-REPL: 0.6.0 Unable to reach update server. Started nREPL server on port 38285 Running at http://xxx.xxx.xxx.xxx:12345/worksheet.html . Ctrl+C to exit.
on firefox
Gorilla REPL Welcome to gorilla :-) Shift + enter evaluates code. Hit alt+g twice in quick succession or click the menu icon (upper-right corner) for more commands ... It's a good habit to run each worksheet in its own namespace: feel free to use the declaration we've provided below if you'd like. 1 (ns divine-stream 2 (:require [gorilla-plot.core :as plot]))