1 :デフォルトの名無しさん:2009/10/15(木) 00:18:39
無いようなので立てた。
JVM上で動作するLisp方言「Clojure」のスレ。

Clojure - home
ttp://clojure.org/

2 :デフォルトの名無しさん:2009/10/15(木) 00:32:54
【チュートリアル】
Clojure Tutorial For the Non-Lisp Programmer | Moxley Stratton
ttp://www.moxleystratton.com/article/clojure/for-non-lisp-programmers
Clojure - Functional Programming for the JVM
ttp://java.ociweb.com/mark/clojure/article.html
【その他】
InfoQ: ClojureがSTMとLISPをJVMにもたらす
ttp://www.infoq.com/jp/news/2009/02/clojure-interview-halloway
InfoQ: Rich Hicky氏、Clojureの特徴と実装について語る
ttp://www.infoq.com/jp/news/2009/06/hickey-clojure
Writing/Coding: Clojure Series: Table of Contents
ttp://writingcoding.blogspot.com/2008/06/clojure-series-table-of-contents.html

41 :a36 ◆K0BqlCB3.k :2010/01/03(日) 17:08:47
golangが一段落したのでこっちにも手を出してみるぜ。
Lisp方言だから習得はしやすいな。

42 :デフォルトの名無しさん:2010/01/03(日) 21:14:08
>>41
lispいがいにhaskellやらjavaやらもしってれば、楽だと思うよ。

あの本の原本はなかなかよいので、それで翻訳者が指折りのshiroさんって
こともあるので期待していいだろうね。国内では盛り上がらないのも普通
だろうな。右むきゃ右の民族性ゆえんだし。

43 :a36 ◆K0BqlCB3.k :2010/01/03(日) 23:36:59
>>42
新しい言語で2chにスレがたつ程度に有名な言語は大抵試しているが、
どの言語も満足できなくて本気コーディングは結局C言語とperlに戻ってしまうんだ。

44 :デフォルトの名無しさん:2010/01/03(日) 23:47:24
>>43
なるほど、大体は試してるのね。じゃあ大丈夫だね。
cに戻るところをみると処理速度重視なんかな?

45 :a36 ◆K0BqlCB3.k :2010/01/04(月) 02:15:03
>>44
速度とプログラミングしやすさのトレードオフ。
Haskellとかprologとかいろんな言語があるけど、
たとえばHaskellはリストの処理はしやすいけど配列の扱いは面倒くさかったり、
par関数みたいなので簡単に並列処理ができるのはいいけど、
CSPみたいな形式手法やpi-calculusみたいな計算モデルを持ち込んだような処理をするなら
golangやscalaのほうがずっとやりやすい。
純粋関数型言語すべてにいえることだけどGUIや非決定的な人の介入があった場合の処理の扱いが
イマイチ確立していなくて、結局X11を直接叩いたりwxHaskellみたいなオブジェクト指向畑のライブラリを
移植したものが(やむをえず)主流になっている。
また、Javascriptはブラウザ上でしか動かないし、
PythonはIronPythonを使えば.NETにコンパイルできるけど
.NETはLinux上ではMonoを使わないといけない時点で嫌いだし、
インデント依存のせいで余計な行数を強要されるのも不愉快だし、
GIL問題のせいで並列処理に致命的な欠陥を持っているし、
今のところやりたいことが何でもできる言語というとC言語ということになるんだよ。

56 :デフォルトの名無しさん:2010/01/12(火) 20:21:46
>> 55
どういう問題が起こったのかわからないんだけど、不慣れなエスパーしてみる。
手許の MacOSX 上の Emacs だと
slime-net-send: Coding system iso-latin-1-unix not suitable for ...
って言われたから、適当に slime のソースを grep して
(setq slime-net-coding-system 'utf-8-unix)
ってしてやったら slime-eval-region できた。
そういう問題?

102 :デフォルトの名無しさん:2010/01/24(日) 12:31:18
ok、レビューに呼んでもらえるようにブログに書評を書くことからはじめるよ
全然関係なくてもgaucheとかclojureとか書いてshiroさんに
拾ってもらえるようにがんばる

104 :デフォルトの名無しさん:2010/01/24(日) 14:04:04
>>102
今なら、clojureの日本語情報があまりないから、海外の情報をいちはやく
紹介してみたらいいかも? ただし、clojureのその他の本が出るのが早い
次期になるとは思えない。
オンラインでもオフラインでも良いが、勉強会を開くなどして目立っていけ。
れと、yesマンになる必要はない。

171 :デフォルトの名無しさん:2010/02/06(土) 21:19:10
問題集なのか分からんけど
・Project Euler
ttp://projecteuler.net/index.php?section=problems
・SICP
ttp://mitpress.mit.edu/sicp/full-text/book/book-Z-H-37.html
書籍ごと書き換えてるやつ(途中?)
・SICP in Clojure ( http://mitpress.mit.edu/sicp/ )
ttp://sicpinclojure.com/
Lisp本のサンプルコード書き換えたもの
・ Practical Common Lisp ( ttp://www.gigamonkeys.com/book/ )
ttp://github.com/stuarthalloway/practical-cl-clojure
・ On Lisp (ttp://www.komaba.utmc.or.jp/~flatline/ ttp://www.paulgraham.com/onlisp.html)
ttp://github.com/stuarthalloway/onlisp-clojure
その他
・ Programming Clojure
ttp://github.com/stuarthalloway/programming-clojure

198 :デフォルトの名無しさん:2010/02/11(木) 17:01:30
ありがとうございます
しかしClojureの数多くある機能の中で
なぜクロージャだけ名前に使われるほどフィーチャーされたのですか?

243 :デフォルトの名無しさん:2010/02/23(火) 10:52:32
user=> (map println '(1 2 3))
(1
2
nil 3
nil nil)
こんな風になってしまうのですが、clojureでは
リストの要素を表示するにはどうすればいいのでしょうか?

256 :デフォルトの名無しさん:2010/03/04(木) 22:52:38
http://github.com/snewman/appengine-clj
こっちも、更新してるみたい、対 appengine SDK 1.3.1 ってかいてある。

257 :デフォルトの名無しさん:2010/03/04(木) 22:59:38
swank-clojure で slime-autodoc 活かすと repl が固まるのはうちだけ?


259 :デフォルトの名無しさん:2010/03/04(木) 23:16:01
>>256
history見てると、1.3.1対応って明記してるのこれだけだった。

>>257
埋もれて申し訳ない。

275 :デフォルトの名無しさん:2010/03/28(日) 19:33:52
clojure.contrib.duck-streams すげー。

(read-lines "http://www.2ch.net")
って書くだけでhtml引っ張ってきてくれる。びっくりですよ。

276 :デフォルトの名無しさん:2010/03/28(日) 19:58:38
>>275
しらんかった
HTTPリクエストまじめに書いちゃった
読み出しをduck-streamで

orz


363 :デフォルトの名無しさん:2010/09/19(日) 22:53:48
Javaの人はLispが嫌いなのかも

364 :デフォルトの名無しさん:2010/09/19(日) 22:58:55
>>363
Javaの人は、Clojureなんて使わずにはじめからJavaを使うでしょ?

Javaじゃない人が、何でClojureに来ないのかな?

個人的にはJVMを使いたくないってのがあるけど。

379 :デフォルトの名無しさん:2010/09/26(日) 06:12:30
future を呼ぶと(最後に System/exit 呼ぶとかしないと)プログラムが終了しなくなるのですが、これそういうものなのでしょうか。
(Thread/ActiveCount)の値の変化を見ると future で作られた JVM の Thread が走り続けているのが原因のようなのですが。

381 :デフォルトの名無しさん:2010/09/26(日) 13:08:23
>>379
clojure単体でみればそんな馬鹿なってキモチになるかも知れないけどjvmの規定からはそれで正しいです


382 :379:2010/09/26(日) 13:45:21
>>381さん、どうもありがとうございます。
futureの値が確定したら対応するJVMのThreadを終了してくれてもよいような気がするのですが
そうなっていないのは理由あっての意図的な仕様なのでしょうか、あるいは単なる実装上の都合?


384 :デフォルトの名無しさん:2010/10/07(木) 15:02:20
>>382
つスレッドプール

387 :デフォルトの名無しさん:2010/10/13(水) 00:14:26
すいません。日本語利用に関して質問があります。
Windows + emacs23.2 + slime-20100404 でやってます。

日本語が含まれているファイル(UTF-8)を読み出します。
hoge.txt
============
1
2
3
4

============
(slurp "hoge.txt") => "1\r\n2\r\n3\r\n4\r\n?\r\n"

すると「あ」の部分が文字化けで?で表示されてしまいます。
これをきちんと表示させるにはどのようにすればよいでしょうか。

(require 'slime)
(setq slime-net-coding-system 'utf-8-unix)
(slime-setup '(slime-repl))

と.emacsに書き、>>56を参考にELPAで取ってきたslime.elに
(setq slime-net-coding-system 'utf-8-unix)を入れてみましたが変化ありませんでした。

clojureというよりemacs,slimeについての質問になってしまいますが、
日本語を上手く使えている方がおりましたら是非アドバイスを下さい。
よろしくお願いいたします。

388 :デフォルトの名無しさん:2010/10/13(水) 01:02:29
ちげーよ
clojureのslurpがデフォルトのエンコードで読み込むからwindows上でutf-8をslurpで読ませるは
(slurp "file.txt" "utf-8")
と第二引数に文字コード入れないとダメってだけだ


391 :387:2010/10/13(水) 07:24:06
>>388-389
ありがとうございます。
しかし(slurp "file.txt" "utf-8")としても
"1\r\n2\r\n3\r\n4\r\n??\n" と表示され文字化けされたままです。
文字コードを指定してもダメってことはemacs本体の問題でしょうか。

書き忘れてしまったのですがreplで数値やアルファベットは問題ないのですが

user> "あ"

と入力すると評価されず、ずっと待機状態になってしまいます。
無理矢理強制終了するしかないのですが、日本語の扱いがどうも変なようです。


394 :デフォルトの名無しさん:2010/10/19(火) 21:26:49
おい、末尾再帰可能なVM上で作りなおせよ。早急に。

JVMなんてクソ使うな。

399 :デフォルトの名無しさん:2010/10/20(水) 23:21:34
>>394
recurがそんな目障りか? trampolineがそんな不自然か?
再帰をlazy-seqで書き換えるのも楽しいじゃん。

それでもというなら…OpenJDKのDa Vinci Machineプロジェクトが
VMレベルで、末尾再帰や継続を使えるようにがんばってるから、
まぁ待て。そして、それらが使い物になったら、>>394自身が
好きなようにClojureを作り直すのだ!!


442 :デフォルトの名無しさん:2010/11/22(月) 07:30:21
分裂を心配する前に、普及を考えたほうがいいと思う。

444 :デフォルトの名無しさん:2010/11/22(月) 13:43:54
>>442
じゃあCLRは時間の無駄だな。

499 :デフォルトの名無しさん:2011/03/10(木) 10:59:53.86
入門読め

562 :デフォルトの名無しさん:2011/05/07(土) 17:54:41.28
どこかswingをバリバリに使ってるGUIなアプリのサンプルコードありませんか
javaのを書き直そうとしたら難しかった

例えばimportでワイルドカード使ってるのをclojureでは実名で全て登録してたり
clojureやる為にjavaまでマスターするんではなく
clojure+swing or awtで終わるような

ないか…

575 :デフォルトの名無しさん:2011/05/11(水) 21:18:20.81
プログラミングClojureって本を読んでたら、JVMは動作が速いから良いって書いてあったけど、いつの間にか世間はそんな認識になってのか

589 :デフォルトの名無しさん:2011/05/12(木) 23:27:40.16
http://kanatoko.wordpress.com/2011/05/06/clojure_stm_too_slow/
ClojureのSTMは使い物にならない

これ読んで、ちょっとclojure醒めた感がでてきたんだけど、
おまえらなんでclojureつかってんの?
平行処理?
マクロ?
lisp?
JVM?

649 :デフォルトの名無しさん:2011/06/10(金) 14:03:46.68
関数型言語って、カプセル化して実装の詳細を隠蔽する考えがあまりないよね?
関数にhashmap渡して処理するにも、
どういう構造のhashmap渡せばいいか知らないといけない。
こういうところはCに似てると思う。
これはコード書いてみて困らない?
関数の外部が実装の詳細に引きずられ過ぎる面はない?

651 :電波いっぱい:2011/06/11(土) 00:58:48.14
>>649
関数がどんなデータを入出力するかということと、それをどうやって処理しているかということは関係ないでしょ。
大体、関数型じゃなくても渡したりもらったりするデータがどんなものなのかわからなかったら何もできない。

652 :デフォルトの名無しさん:2011/06/11(土) 03:08:11.77
>>651
OOならPersonクラスを要求されれば
Personの内部は知らなくてもそのインスタンス渡すだけでいいでしょ。
Clojureみたいにハッシュマップに情報詰め込んだのを渡すスタイル(よくやる)は
どういう構造のデータを渡すか意識する必要あるよね?
datatypeも値を隠蔽しないし。



658 :デフォルトの名無しさん:2011/06/11(土) 13:49:30.94
確かに関数型かどうかは関係ないか。
あとFogusとRichの対話でもencapsulationについて話ししてた。
俺は要点がつかめてないけど。
http://www.codequarterly.com/2011/rich-hickey/

>状態の隠蔽なら、基本的にデータがイミュータブルだからそもそも必要ないし
そう?関数内部でハッシュマップからデータを取り出す時のキー名を変更したら、
外部も変更しないといけないでしょ。

659 :デフォルトの名無しさん:2011/06/11(土) 15:22:30.97
>関数内部でハッシュマップからデータを取り出す時のキー名を変更したら、
>外部も変更しないといけないでしょ。
それ普通のオブジェクト指向だとコンパイルとおらねぇってことじゃんよ


661 :電波いっぱい:2011/06/11(土) 18:46:55.97
>>659
>>658 の言いたいのは、OOであればデータと操作は一緒に提供されているからユーザーは内部の変更を気にする必要がないということだと思う。
確かにそうだけれど、作る側からすればどちらにしても同じこと。











719 :デフォルトの名無しさん:2011/07/07(木) 11:35:31.38
HerokuのBlogがいい感じのClojureアピールになっている

導入事例ここにあったんだね。
http://dev.clojure.org/display/community/Clojure+Success+Stories

722 :デフォルトの名無しさん:2011/07/07(木) 16:00:53.07
>>719
三番目のBackTypeは昨日か一昨日にTwitter社が買収したスタートアップだな
Y Combinatorも支援してたという

752 :デフォルトの名無しさん:2011/07/23(土) 08:44:50.04
俺は海外から声がかかるようなタマじゃないから別にいいわ……

それよりも先に
ttp://clojure.org/contributing
を見る限りCA送ってる日本人がTakahiro Hozumiさんしかいない件をどうにかしようぜ
俺もまだ送ってないけど

755 :デフォルトの名無しさん:2011/07/23(土) 20:22:20.08
>>752
日本のプログラマって会話で損してる人おおいよ、自分みたいなカタコトの英語でも海外の仕事請け負う事あるから一度飛び出せばいいとおもう。

#現場でもっとカタコトのシナ人が一番意思疎通楽(漢字スゲー!)ってのも笑い話だけど

759 :デフォルトの名無しさん:2011/07/24(日) 15:13:50.83
コメントは必要がない限り英語で書くもんじゃないのか
頻繁にIMを切り替えるのめんどくさいし

760 :デフォルトの名無しさん:2011/07/24(日) 16:07:18.04
>>759
そのレスを英語でどうぞ

771 :デフォルトの名無しさん:2011/07/25(月) 19:51:55.44
チラ裏ですまんが、これ使って開発してるとなんか癖になる。
やめられん。
寝る間も惜しいくらい楽しい。


772 :デフォルトの名無しさん:2011/07/25(月) 20:13:50.21
>>771
それはなぁ。。。アルゴリズム以外のくだらないところをプログラミング
する必要が少ないからだ 難しいことをこねくり回しているよりシンプル
だからな。

788 :デフォルトの名無しさん:2011/08/02(火) 14:15:28.41
twitterまでclojure を活用し始めたみたいね。

793 :デフォルトの名無しさん:2011/08/03(水) 00:31:22.89
>>788
kwsk

806 :デフォルトの名無しさん:2011/08/07(日) 23:59:12.44
JVMなんかを使ってる限り普及は無理だろうな。
よく出来た言語仕様だけにもったいない。

早くJVMは切り捨てて、CLRに特化して欲しい。


http://hibari.2ch.net/test/read.cgi/tech/1255533519/l50人気ブログランキングへ