トップページtech
1002コメント368KB

【Lisp】プログラミング言語 Clojure #3【JVM】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/09/28(土) 11:03:28.38
JVM上で動作するLisp方言「Clojure」のスレ。

Clojure - home
http://clojure.org/
http://www.try-clojure.org/

前スレ:
【Lisp】プログラミング言語 Clojure #2【JVM】
http://toro.2ch.net/test/read.cgi/tech/1318498898/
【Lisp】プログラミング言語 Clojure【JVM】
http://hibari.2ch.net/test/read.cgi/tech/1255533519/
0067デフォルトの名無しさん2013/10/17(木) 15:28:06.39
Lisp系の文法フリーな文化に慣れると
他の言語に手を出す気が失せる
0068デフォルトの名無しさん2013/10/17(木) 15:59:06.29
>>66
今の時代エディタのサポートなしとか余程の変態か初心者しかやらないし

python流行ってるのは米軍とかgoogleが支援してるからも大きい
つまりclojureにもいいパトロンがつけば
0069デフォルトの名無しさん2013/10/17(木) 17:06:09.50
外野からすると単にカッコがというよりものっぺりしたコードの見た目に抵抗がある
0070デフォルトの名無しさん2013/10/17(木) 18:06:07.41
>>64
生のJavaScript書くのが辛いという理由で、Haxeみたいなのが人気が出てるのを見ると、
「コンパイラがエラーを指摘してくれる安心感」に魅力を感じる人が多いんだな、と思う。
Lispは発想を自由にコーディング出来るが、言い換えると開発者によって練度のバラつきが
大きく影響する--->人月で契約するプロジェクトマネージャーへの受けの問題だろう。
0071デフォルトの名無しさん2013/10/17(木) 22:00:11.12
マクロ書けなかったらClojure使う意味なんかないしなぁ
0072デフォルトの名無しさん2013/10/18(金) 13:15:25.70
>>70
JavaScriptもClojureのREPLみたいに使えればそんなに書くの嫌いじゃ無いんだが開発環境がとてもショボイのが嫌いだ
ってなわけでWeb環境はclojure+clojure scriptが楽だったりする。
プロトタイプはこれで作ってプレゼンする感じ
でも実際の運営までにはPHPとかに変換しないと運営から文句来る orz
0073デフォルトの名無しさん2013/10/18(金) 16:00:03.29
これはClojure->PHPのトランスレータのフラグ。
0074デフォルトの名無しさん2013/10/19(土) 10:07:41.65
Twitter見てるとアニオタに人気の言語なのかね
0075デフォルトの名無しさん2013/10/19(土) 13:41:00.30
>>74
PythonとRubyがアップを始めたようです
0076デフォルトの名無しさん2013/10/19(土) 20:10:23.28
Haskell「所詮スポーツマンじゃの」
0077デフォルトの名無しさん2013/10/19(土) 21:31:27.19
今勉強中なんだけど、
セットとかマップって単にリストとか連想リストではいかんのだろうか。
そんなに効率が変わるようにも思えないし
0078デフォルトの名無しさん2013/10/20(日) 00:36:22.11
普段はScala + Playをsbt + IDEAでコーディングしてるんだけど、
Clojureでウェブアプリ作ろうと思ったらどんな組み合わせでやるものなの?
デプロイ先とかも簡単に見つかるのかどうかも気になります。
0079デフォルトの名無しさん2013/10/20(日) 01:42:32.78
Ring: RubyでいうRackのようなミドルウェア
Compojure: RubyでいうSinatraのようなWebアプリ記述用DSL

ということらしい、詳しくは知らん

参考URL ttp://d.hatena.ne.jp/oknknic/20130704/1372950152
0080デフォルトの名無しさん2013/10/20(日) 12:28:05.95
ringアプリでwarとか作れば、servletで提供できるよ。
http://www.ibm.com/developerworks/jp/java/library/j-paasshootout/
なので、openshift,run@cloud,gae,beanstalk,herokuなど無料から使えるとこで使える。
0081デフォルトの名無しさん2013/10/20(日) 12:51:03.51
mvc的なものなら
compojure
https://devcenter.heroku.com/articles/clojure-web-application
luminus
http://www.luminusweb.net

RESTとクライアントJSアプリなら
liberator
http://clojure-liberator.github.io/liberator/
http://www.flyingmachinestudios.com/programming/building-a-forum-with-clojure-datomic-angular/

この本は、compojure中心
http://pragprog.com/book/dswdcloj/web-development-with-clojure

クライアントサイドJSまわりは、clojurescriptというのでかけたりする。
http://www.oreilly.co.jp/books/9784873116129/

Railsのmigration、scaffold的なところがあるツールは、今のところないと思う。
0082デフォルトの名無しさん2013/10/20(日) 13:38:55.00
>>78
webアプリだと基本warに落とせる物が多いからAWSでもなんでも何処でもOKですぜ。
servletエンジン持ちもあるから単体jarで起動できる物も多いし。

JVMの有無だけじゃないのかなデプロイの可否
0083デフォルトの名無しさん2013/10/22(火) 01:07:49.94
ふっふっふ
社内で勉強会開始
emacsenが半数を占めていたのでCCWじゃなくnrepl-jack-inでclojure学習でだいぶいけそう
0084デフォルトの名無しさん2013/10/22(火) 02:58:45.16
メモ帳+コマンドプロンプト の俺は異端か…
0085デフォルトの名無しさん2013/10/22(火) 03:51:38.44
Lispでエディタ補助なしって拷問に近い
LightTableがオシャレ
0086デフォルトの名無しさん2013/10/22(火) 04:10:29.72
メモ帳でLisp書くのとかどんな罰ゲームだよwww
0087デフォルトの名無しさん2013/10/22(火) 05:31:08.88
>>84
器用だな
不便感じないの?
0088デフォルトの名無しさん2013/10/22(火) 07:49:10.16
>>79
>>80
>>81
>>82
ありがとう。いろいろ選択肢はあるんですね。
少しずつ勉強してみます。
0089デフォルトの名無しさん2013/10/22(火) 18:48:42.63
>>84
xyzzyいいよー^^
0090デフォルトの名無しさん2013/10/22(火) 23:16:26.44
メモ帳+コマンドプロンプトになれると、USBメモリにclojure1.xx.x..jarとコマンドプロンプトのショートカットだけ入れてればどこでもプログラミングできる
0091デフォルトの名無しさん2013/10/23(水) 02:58:00.41
xyzzyにclojure-modeあるのか?
0092デフォルトの名無しさん2013/10/23(水) 14:58:22.80
>>90
いっそのことlanternaとか使ったテキストエディタもとろもつくっちまったほうがよくね?(lanterna日本語とおらないのがアレ過ぎるけど)
0093デフォルトの名無しさん2013/10/25(金) 03:44:18.58
もはやメモ帳でコーディングする方が楽という領域に入ったが、
メモ帳閉じた後に自動インデント整形してソースを出力しなおしてくれるツールがあるとうれしい

clojure.jarにくっつけてくれ、とだれが英語でリクエストしておいてください
0094デフォルトの名無しさん2013/10/25(金) 05:16:19.00
http://www.infoq.com/jp/news/2013/10/core-typed
形システムについての日本語記事
0095デフォルトの名無しさん2013/10/26(土) 01:55:15.87
>>93
vimとclojure.vim入れて、全行を「=」コマンドで整形して保存するだけのスクリプトを書いて実行
もしくはemacsで(ry

コードの整形は流石にpretty-printでは無理か
0096デフォルトの名無しさん2013/10/26(土) 19:43:26.42
leiningen使ってたら他の処理系のビルドが大変めんどくさくなってきて困る
なんだかdameningenになった気分だ
0097デフォルトの名無しさん2013/10/26(土) 20:08:56.78
githubのランキングが変わってた。
だいぶ前なのかもしれないけど。

トレンドなリポジトリ
https://github.com/trending?l=clojure
トレンドな開発者
https://github.com/trending/developers?l=clojure

googleのリポジトリもあるんだね。
0098デフォルトの名無しさん2013/10/26(土) 20:19:48.05
>>96
最近の、ビルドの最中までオンライン前提な風潮はどうにかならないのだろうか…
0099デフォルトの名無しさん2013/10/27(日) 17:15:30.86
>>98
つlein -o
0100デフォルトの名無しさん2013/10/28(月) 01:28:01.73
nrepl.elで
(.start (Thread. #(println "anal")))
とかすると、出力がreplではなく*nrepl-server*バッファに表示されてしまう問題はいつ解決されるんだろうか
0101デフォルトの名無しさん2013/10/28(月) 21:17:40.45
https://github.com/ayamada/clan
http://doc.tir.ne.jp/devel/clan
作者が日本人だから日本語のドキュメントが充実してていいな
0102デフォルトの名無しさん2013/10/29(火) 20:25:42.06
>>100
replの*out*をどこかにコピーしておいてbinding で*out*へ結びなおすのじゃだめなん?
user>(defonce +nrepl+ *out*)
user> (.start (Thread. #(binding [*out* +nrepl+] (println "anal"))))
anal
nil

user>
0103デフォルトの名無しさん2013/11/02(土) 18:46:32.47
>>102
そっか、それで良いのかありがとう
pcallsとかならbindingしなくてもちゃんとreplに出力されるみたいだから内部で同じようなことやってるのかな
それでも例外は*nrepl-server*に出てしまうけど
0104デフォルトの名無しさん2013/11/03(日) 08:59:14.28
>>103
例外は補足してバッファにpopupさせる設定ができるから
nrepl-popup-.*
な変数を c-h vでチェックしてみるのがよさげ

;;; 最新版にしたらritzが動かないのでbreak-on-exception効かなくなってちょっとこまった >> nrepl
0105デフォルトの名無しさん2013/11/05(火) 21:51:04.56
http://cemerick.com/2013/11/05/2013-state-of-clojure-clojurescript-survey/
Clojure国勢調査2013
去年まではもう少し早い時期にやってた気が。
0106デフォルトの名無しさん2013/11/05(火) 21:58:39.40
Great Goodとか出してるNo Starchからclojureの本出すらしい。
> Good news everybody: I've signed a deal with No Starch Press to publish Clojure for the Brave and True! Not only that, the entire book will continue to be available for free online!
http://www.flyingmachinestudios.com/programming/book-deal/

たくさん図のはいった本になるんだろうか
0107デフォルトの名無しさん2013/11/05(火) 22:20:40.22
現在フリーで公開してるこれを No Starch からも出すってことじゃない?
http://www.braveclojure.com/

これで勉強して Compojure で何か書いてみたいなあ
0108デフォルトの名無しさん2013/11/11(月) 23:53:23.54
ニュー速VIP爆撃中の2ch定期書き込みツールqsocks
lispで書かれたこのツールを誰か改造してください。
他板でも使えるようにしてください。
お願いします。m(ーー)m

qsocks
https://anonfiles.com/file/3fcd3edbf6000ecf37b61e8af186c453

qsocksソースコード
http://codepad.org/uyuG7Ovg
0109デフォルトの名無しさん2013/11/12(火) 00:19:25.31
知らばく見てなかったけど、もちろんJVMとは決別したよな。
0110デフォルトの名無しさん2013/11/12(火) 00:32:31.14
もうブラウザに移行しまうま。
来年ぐらいに構文解析的な用途では十分なCinCもできそう。
llvm、python、.net実装は利用者増えてない。
0111デフォルトの名無しさん2013/11/12(火) 00:33:43.41
JJUGで発表あったような、、、
0112デフォルトの名無しさん2013/11/20(水) 08:19:00.09
http://www.sankeibiz.jp/smp/business/news/131119/prl1311191038019-s.htm
clojure cupに出てたのこのチームだったそうで。
0113デフォルトの名無しさん2013/11/20(水) 16:55:40.22
もっとこういうClojureの採用事例が増えてくれるとうれしい
0114デフォルトの名無しさん2013/11/23(土) 01:29:58.21
lispってemacsユーザーのオモチャっていうイメージがある
0115デフォルトの名無しさん2013/11/23(土) 03:14:20.49
そもそもclojureはlispなのだろうか…
0116デフォルトの名無しさん2013/11/23(土) 07:37:57.01
let over lambdaの作者がvimmer過ぎて、読んだらemacs云々はのイメージが薄れた。
0117デフォルトの名無しさん2013/11/23(土) 10:29:47.83
>>114
逆ジャね?
emacsがLispユーザのおもちゃじゃね?
0118デフォルトの名無しさん2013/11/24(日) 01:18:40.32
SICPとemacsがプログラミング入門に最適だった
今でも、そこからスタートするのが良い素養を持てるはず
C#,PHPがやることなんて、せいぜいlatexの延長か何か
0119デフォルトの名無しさん2013/11/24(日) 16:43:40.55
SICPはschemeメインだから、SICPから入ると、loopを多用するlisp的なイデオムに拒否反応が出る
0120デフォルトの名無しさん2013/11/24(日) 18:43:19.94
lein使おうと思ってダウンロードしてlein replしたら
https://leiningen.s3.amazonaws.com/downloads/leiningen-2.4.0-SNAPSHOT-standalone.jar
をダウンロードしようとして失敗する。
0121デフォルトの名無しさん2013/11/26(火) 23:46:08.50
2.4.0-SNAPSHOTがないっぽい。
たしか、2.3.4にしたら動いた。
leiningen-2.3.4-standalone.jar
0122デフォルトの名無しさん2013/11/26(火) 23:54:53.15
http://blog.jonharrington.org/python/2013/11/21/clojure-python-lite/
Hy (lisp on python)
http://docs.hylang.org/en/latest/
clojure-pyは活動停してしまったけど、
lisper向けな別プロジェクトがあるらしい。
0123デフォルトの名無しさん2013/11/27(水) 00:02:25.56
export LEIN_VERSION="2.4.0-SNAPSHOT"
ここを"2.3.4"ね。
たまたま、普段使わないwindowsにいれようと思ってひっかかったので、
404 not found じゃなくて、403 Forbiddenだし、
過去の報告みてダウンローダーがおかしいのかと思ったんだけど、
取り敢えずファイルが公開されてないようだ。
0124デフォルトの名無しさん2013/11/27(水) 00:04:04.94
hylasと微妙にカブる
0125デフォルトの名無しさん2013/11/28(木) 23:21:29.33
incanterをRの代わりの使おうしたけど
incanterは色々足りない感じがして残念
0126デフォルトの名無しさん2013/11/28(木) 23:51:11.37
資産を生かしたいなら、Rのラッパーがjavaやclojureにあればすむのかな?
0127デフォルトの名無しさん2013/11/29(金) 02:46:50.26
>>125
Incanter は現在もしっかりと開発されてるんだよな
数人がコツコツ作ってる印象だけど
物足りない感じるならなら開発に参加すべき
0128デフォルトの名無しさん2013/11/29(金) 13:56:26.40
JVM上で動くRやサーバーで動くRもあるらしいので組み合わせてみては
https://code.google.com/p/renjin/
http://rforge.net/Rserve/
0129デフォルトの名無しさん2013/11/29(金) 20:41:34.26
もうそれ素直にRやったほうがいいと思うの
0130デフォルトの名無しさん2013/12/03(火) 13:16:22.87
Common LispやSchemeとの関数の対照表はありませんか?
まずmemberやfindに対応するものからしてわからない……
0131デフォルトの名無しさん2013/12/03(火) 20:08:14.78
define defun defnとか、set系とか、eq系とか、mapとmapcarとか、高階関数の引数で#'が必要かどうかとか
もうあきらめてる
0132デフォルトの名無しさん2013/12/03(火) 23:33:26.00
http://hyperpolyglot.org/lisp
0133デフォルトの名無しさん2013/12/03(火) 23:49:14.67
2013利用者調査の集計終わったらしい
http://cemerick.com/2013/11/18/results-of-the-2013-state-of-clojure-clojurescript-survey/
http://tech.puredanger.com/2013/12/01/clj-problems/
0134デフォルトの名無しさん2013/12/12(木) 00:14:11.72
jarkをraspberry piとbeaglebone blackで使えるようにしてほしい。
つまりarmアーキテクチャで動くjarkがほしい。
rpiもbbbもjvmとかreplとかの起動が信じられないほど遅くてclojureを使うモチベーションが
打ち砕かれてるのが現状だけど
jarkが動くようになれば未来がガラリとかわる。
0135デフォルトの名無しさん2013/12/12(木) 01:01:07.13
CPUは18ヶ月で2倍だっけ?
atomのBayTrailなら普通に動くので、
あと二年ぐらいで、1万前後の組み込みボードでarmかatomがそこそこ動くようになってると思う。
0136デフォルトの名無しさん2013/12/17(火) 14:54:34.68
Incanter 最近動きないと思っていたけどこつこつと開発は進んでいたんだな
0137デフォルトの名無しさん2014/01/03(金) 18:29:49.53
同じような処理をするならリストかベクタどっちが早いの
0138デフォルトの名無しさん2014/01/03(金) 19:21:41.87
>>137
その同じような処理がどんな処理かによる
0139デフォルトの名無しさん2014/01/04(土) 01:48:06.47
>>138
要素ごとに関数を適応する場合と
(+ n n+1 n+2)みたいな計算を全リストごとに計算をする
0140デフォルトの名無しさん2014/01/04(土) 02:00:47.86
処理そのものの速さよりも、結果を他のコレクションに変換するときのコストを気にする方がいいような…
0141デフォルトの名無しさん2014/01/04(土) 02:40:32.32
>>139,140
1.5からmapvとかあるからvectorでもseqでも変換コストはかかんねぇような気がする
0142デフォルトの名無しさん2014/01/04(土) 02:41:55.72
あ、まちがい、出来上がった結果のvecやらseqやらをさらに遣って後から伸びる方法によるのか。(頭に足すかケツに足すか)
0143デフォルトの名無しさん2014/01/04(土) 18:25:37.79
>>141
mapv初めて知った
>>140
リストをベクタにしたりとか変換しないようにしとけば特に問題ないんだな
0144デフォルトの名無しさん2014/01/09(木) 16:16:29.71
LightTableがOSSになったぞ
0145デフォルトの名無しさん2014/01/09(木) 16:58:50.78
>>144
見てきた
cljsとはおもわなんだ
ちょっとびっくり
0146デフォルトの名無しさん2014/01/25(土) 03:02:37.00
おいしいclojure読んだけど、外部のライブラリを導入するときに、インストールまで全部オンラインでやること前提になってるけど、今はそれが普通なのだろうか
必要なアーカイブをダウンロードして、あとはオフラインでやるというスタイルはもう終わりですか
0147デフォルトの名無しさん2014/01/25(土) 13:52:56.12
>>146
できなくはないけど、面倒くさい。
0148デフォルトの名無しさん2014/01/25(土) 15:18:37.20
jarファイルダウンロードしてくる部分のこと?
yum(rpm)、gemとかと一緒だね、
leiningenとかで使ってるのは、javaのmavenレポジトリがベース
rubygems.orgとか良くダウンしてたので、その時の為に、ローカルにリポジトリのhttp://daly.axiom-developer.org/clojure.pdfミラー作ったり、yumもインストールCDからしたり出来るし。ローカルネットワークのみの場合でもproxy経由でインストールしたりする。

mavenは詳しくわからないけど、
leiningenも、ローカルにミラーしたmavenレポジトリ追加したりということは可能かと。
あとは、独自版を使いたいときのために、localinstallプラグインというのがある。
0149デフォルトの名無しさん2014/01/25(土) 16:42:03.33
4clojureがちょくちょくつまる
reverseなしでreverseするには空リストにintoとか
普通すらすらわかるん?
0150デフォルトの名無しさん2014/01/25(土) 16:53:06.44
>>148
普通にローカルの~/.m2/repositoryへ突っ込む手段はあるから問題ないんじゃ?
ソースひっぱってきてmvn installでも lein installでも使える
バイナリのjarだけを突っ込む方法はしらん;-p (~/.m2/repositoryをクローンで?)
0151デフォルトの名無しさん2014/01/25(土) 21:21:53.70
>>150
バイナリのjarだけつっこみたい時は、lein localrepoをつかう
ttps://github.com/kumarshantanu/lein-localrepo
0152デフォルトの名無しさん2014/01/25(土) 23:42:38.80
起動時間なんとかしてくれー
0153デフォルトの名無しさん2014/01/26(日) 11:44:45.81
jvmの起動時間て
なんであんなに遅いの?
どうにかならないもんなの?
0154デフォルトの名無しさん2014/01/26(日) 15:18:15.60
leinは、32bitJVMのころにあった-clientに当たるような設定つけて起動してるみたい。
なので、サーバー用途にlein runそのまま使うと遅くなることも。

Android4.4に実装されているART Runtimeみたいに、AOTで起動早くすることもできるんだけど、
現状、AOT付いてるPC向けのVMはHotSpotVMより起動が遅かったりする。

そういうば、ART Runtimeだと今のところclojureでつくったソフトが起動時にclassのverificationで落ちて動かない。
0155デフォルトの名無しさん2014/01/26(日) 23:53:17.89
要望にあったものではないだろうが、こんなのが
https://github.com/takeoutweight/clojure-scheme
ClojureScriptのscheme版に改造したものらしい
cljs系は面倒だけど、メンテナンスはしやすいかも。

pycljとかも、起動早いしそのまま使える。
でも、JVMに直接依存してるところは、動かない、、

こういうのって、OpenCLみたなHPC向けのコード吐けるものなら便利そう
0156電波いっぱい2014/01/27(月) 23:40:51.24
>>149

そういうのに多く触れて来た人ならスラスラ解けるでしょうけど、そうで無い人の方が多いでしょう。
でも、そういう問題を解いて、他の人がどのように解いているのかということを知るのが4clojureの目的だよね。
0157デフォルトの名無しさん2014/01/28(火) 10:27:48.13
>>156
なるほど、解いた後他人のsolutionを見ることに意味があるのか
0158デフォルトの名無しさん2014/01/30(木) 00:07:51.81
すみません

leiningen を reple で起動したときに、jar をどっかからダウンロードしてると思うんですけど、そのjarっていったいどこに保存されてるのでしょうか?
Windows7 です
0159デフォルトの名無しさん2014/01/30(木) 05:22:55.78
lein classpath とか打てば書いてあるんじゃね?
0160デフォルトの名無しさん2014/01/30(木) 11:22:48.47
>>158
c:/Users/<アカウント名>/.m2
ここがmavenのリポジトリの在処
lein depsでひらってくると.m2以下に突っ込まれる
0161デフォルトの名無しさん2014/01/31(金) 22:17:30.83
大学生協に1冊だけあったおいしい本がなくなってやがる
こんなマイナー本をピンポイントで
中身確認したかったのにorz
0162デフォルトの名無しさん2014/02/01(土) 00:04:22.94
おいしい本は、読者がネットに常時接続してることを前提にしている点に違和感がある
0163デフォルトの名無しさん2014/02/01(土) 00:30:20.21
ずっと繋がないといけない処理があったりするの?

lein使うのやめてほしいとかそいうの?
0164デフォルトの名無しさん2014/02/01(土) 00:34:29.85
>>163
私の開発環境は完全にオフラインだから
leinだと、USBメモリにjarファイルコピーしても、どこに配置すればいいのか分からん
0165デフォルトの名無しさん2014/02/01(土) 01:00:42.53
確かに。昔は、何も使わないチュートリアルがあったけど、最近はlein中心だからね。

もともとそれで動くから、
ツール系はhadoopとかみたいに、libsフォルダにがっつりjarファイルが入ってて、コマンド用意して隠蔽してたりする。

jar置いて実行できるツールは必要かもね。clojurebox

基本はこれだけど、
http://clojure.org/repl_and_main

unix
java -cp jar1:jar2:..:jarn -m clojure.main
win
java -cp jar1;jar2;...;jarn -m clojure.main

jarフォルダにいれてあれば、jar1:jar2:...:jarnを展開してくれるスクリプトみたいのあったかも。

leinプロジェクトの場合は、lein uberjarしてstandalone.jarをどっかからもってくるというて手もあるが。
0166デフォルトの名無しさん2014/02/01(土) 22:53:02.10
ふと思ったんだけどClojureってClojureで実装されてんの?
■ このスレッドは過去ログ倉庫に格納されています