【Lisp】プログラミング言語 Clojure #2【JVM】at TECH
【Lisp】プログラミング言語 Clojure #2【JVM】 - 暇つぶし2ch2:デフォルトの名無しさん
11/10/13 18:42:06.81
【リファレンス】
API Overview - Clojure v1.3 (stable)
URLリンク(clojure.github.com)
Clojure-contrib API Reference
URLリンク(richhickey.github.com)
ClojureDocs
URLリンク(clojuredocs.org)
Clojure Examples Wiki
URLリンク(clojure-examples.appspot.com)
逆引きClojure (日本語)
URLリンク(rd.clojure-users.org)
Rosetta Code
URLリンク(rosettacode.org)
clojure-euler
URLリンク(clojure-euler.wikispaces.com)

【ブログ・ML・質問箱】
Clojure
URLリンク(groups.google.com)
Clojure Dev
URLリンク(groups.google.com)
planet clojure
URLリンク(planet.clojure.in)
stackoverflow.com tag:clojure
URLリンク(stackoverflow.com)
github.com clojure
URLリンク(github.com)
Clojure-jp (日本語)
URLリンク(groups.google.com)

3:デフォルトの名無しさん
11/10/13 18:42:25.94
【チュートリアル】
Clojure Programming
URLリンク(en.wikibooks.org)
labrepl (おすすめ)
URLリンク(github.com)
4Clojure
URLリンク(www.4clojure.com)
Clojure - Functional Programming
URLリンク(java.ociweb.com)
Clojure Tutorial For the Non-Lisp Programmer | Moxley Stratton
URLリンク(www.moxleystratton.com)
Clojure - Functional Programming for the JVM
URLリンク(java.ociweb.com)
PCL -> Clojure (Practical Common Lisp のサンプルコードを Clojure に)
URLリンク(blog.thinkrelevance.com)

【コーディング規則】
URLリンク(en.wikibooks.org)
Library Coding Standards
URLリンク(dev.clojure.org)

4:デフォルトの名無しさん
11/10/13 18:42:49.55
【その他】
InfoQ: ClojureがSTMとLISPをJVMにもたらす
URLリンク(www.infoq.com)
InfoQ: Rich Hicky氏、Clojureの特徴と実装について語る
URLリンク(www.infoq.com)
Writing/Coding: Clojure Series: Table of Contents
URLリンク(writingcoding.blogspot.com)

【本】
Programming Clojure
URLリンク(www.pragprog.com)
URLリンク(www.amazon.co.jp) (日本語版)
The Joy of Clojure (本は電子ブックがついてくる 要 manning 登録)
URLリンク(joyofclojure.com)
URLリンク(www.amazon.co.jp)
URLリンク(www.infoq.com)
Practical Clojure
URLリンク(www.apress.com)
URLリンク(www.amazon.co.jp)
Clojure Programming
URLリンク(shop.oreilly.com)
URLリンク(www.amazon.co.jp)
Clojure in Action
URLリンク(www.manning.com)
URLリンク(www.amazon.co.jp)

【テンプレ終了】
テンプレ収集場所 URLリンク(tinyurl.com) (ID:guest Pass:cl)

5:デフォルトの名無しさん
11/10/13 19:12:09.10
京都大学霊長類研究所では、未知の感染症が蔓延し、
感染した研究員はどのスレッドにも同じコピペを
繰り返すといった症状が報告されています。

研究員によると思われる書き込みがあっても
近づかないようにしてください。

                  京都大学

6:デフォルトの名無しさん
11/10/13 20:53:34.46

開発サイトが1.4に書き換わってる

7:デフォルトの名無しさん
11/10/14 15:54:21.82
lispで書かれた実用的なソフトってなんかあるのか?

8:デフォルトの名無しさん
11/10/14 17:43:27.01
Emacsとか初代Yahoo!のWebsiteとか。

9:デフォルトの名無しさん
11/10/14 17:51:25.35
URLリンク(www.byflow.com) はClojureで作ってるらしいね
開発者ブログとか始めてくれないかな

10:デフォルトの名無しさん
11/10/14 18:21:38.05
人工知能のための超マイナー言語とおもっていたが、
結構面白いことできるんだな。

11:デフォルトの名無しさん
11/10/14 18:55:17.54
最初に発明された頃人工知能の研究がブームだったので自然にそれに
使われた例が初期には多いってだけなんだが

12:デフォルトの名無しさん
11/10/14 18:59:20.37
当時GCを持つ言語がLispぐらいしかなかったってのが大きい

人工知能みたいな大きな問題をGCがない言語でやりたいとは思わん

13:デフォルトの名無しさん
11/10/14 19:32:09.87
「Lispは人工知能の言語」は、今は「Cはカーネルの言語」よりも怪しい
Lispの後、1970年代にPrologが開発されたし
最近のAI系研究室は(Perl|Python|Ruby)を使ってる所もあるってたまに聞くし

14:デフォルトの名無しさん
11/10/14 19:34:20.58
>>7
Lispだと却下される案件でもClojureだとWarファイルで納品できるので通ったりする
実際2つほどプロダクトをリリースしてる。

今3つめの案件をClojureで書いてる

15:デフォルトの名無しさん
11/10/14 22:04:14.16
いいね。実運用での所感聞かせてよ。

16:デフォルトの名無しさん
11/10/14 22:15:03.81
eclipseでもemacsでもswank経由のREPLで即時実行テストができるのでコードが完成系になる為のサイクルがもの凄く短い
HTMLテンプレート展開はPHPとかのフロントエンドとデザイナ組に任せてバックエンドのロジックをringでガンガンつくっておいて、実サーバではTomcat等にWarで渡せる
なので実運用時のメンテコストも既存のservletと変わらないが開発サイクルが短いのとプログラマが嬉々としてコード書くのでチームのモチベーションが高い

最初上を説得するの大変だったんだけど、あっという間にプロダクトがリリースできるのを目の当たりにさせたら通った。
#ドカタが戦力になったというか


17:初心者
11/10/15 23:12:14.89
Clojureを勉強しようと思って、
Eclipseで counterclockwise(以下 CCW)をインストールしました。

新しいClojureプロジェクトを作ると、
自動的に、プロジェクトフォルダ直下に
clojure.jar, clojure-contrib.jar, clojure-contrib-src.jar, clojure-src.jar
が置かれていて、
すぐに、Clojureのプログラムが始められて便利でした。

それで、最近、1.3がリリースされたようなので、
1.3を使おうと思ったんですが、
CCWで作成されるプロジェクトは依然、1.2のままです。
(CCWは最新にアップデートしているつもりです。)

プロジェクト作成時に、Clojreの1.3 を選んだり、あるいは、プロジェクト作成後にClojure1.3
にする方法はありますか?

後者は、ホームページから、clojure.jar, clojure-src.jar くらい探してきて
置き換えれば十分でしょうか?? (1.3からはcontribがなくなっているようなので、削除して。)

ちょっとよくわからないので、教えてください
よろしくお願いします。

18:初心者
11/10/16 03:50:52.02
自己レスです。

要はEclipseの使い方でつまずいていたようです。
Clojureのサイトからダウンロードしてくると、clojure-1.3.jarなどが入ったファイルが落とせるので、
それを、Eclipseのプロジェクトの中に入れます。

それで、Project>Properties>JavaBuildPath
で、Librariesに clojure-1.3.jarを追加して、Orderで、srcディレクトリの上に追加。
もとの、clojure.jarとかclojure-contrib.jarなどは削除する。

という感じで、一見問題なく使えています。

sourcepath を設定していませんが、(デフォルトでは、clojure.jarはclojure-src.jarなどをsourceパスとして設定していましたが)
自分での作り方がわからないので、設定していません。

一応、問題なく使えています。
以上

19:デフォルトの名無しさん
11/10/17 11:51:28.16
eclipse/netbeans/inteliJで、mavenやleinningen、cakeのmaven経由で管理できるんだろうけど
IDEとの連携ってそれで機能するのかな

20:デフォルトの名無しさん
11/10/17 12:33:40.07
lein-eclispを入れればいい。

21:デフォルトの名無しさん
11/10/17 12:36:21.25
inteliJはla clojure+leiningen プラグインを入れる。eclispよりか
こっちのほうが出来がいいと思う。

22:デフォルトの名無しさん
11/10/17 12:43:11.47
前スレが埋まる前に新スレ使っちゃうのがクロージャ使い
ユーザーの民度が低い言語です

23:デフォルトの名無しさん
11/10/17 12:48:09.06
スレ違いだけど、>>16の開発者が嬉々としてって羨ましいな。
俺がちゃんとコスト対効果と有用性を提示できてないのが悪いんだけど、
「コードなんて若い奴らに書かせとけばいいだろw」と言われて凹んだわ。
そして若手からも「今Javaで出来てるんだから、それでいいじゃないですか」と。
ジョブズ並とは言わんが、もちっと説得力あるプレゼンしないとな。スレチごめんなさい。

24:デフォルトの名無しさん
11/10/17 12:51:04.51
>>23
うん、お前が悪い

25:デフォルトの名無しさん
11/10/17 12:59:37.82
チュートリアルみたいなのを作って、啓蒙するとか。

Clojureは、チュートリアル的なものが少ない。英語でも。

26:デフォルトの名無しさん
11/10/17 14:07:23.19
簡単なところなら、演習問題や実例は99problemsやProject Eulerを使えばいいしね。

27:デフォルトの名無しさん
11/10/17 18:09:50.83
>>25
>>3のlabreplはマジオススメ


28:デフォルトの名無しさん
11/10/17 21:20:08.61
>>16
>プログラマが嬉々としてコード書く
kwsk.....。

29:デフォルトの名無しさん
11/10/18 00:09:36.78
結局、JVMを捨てて.NETメインにするまではマイナー言語のままなんだよな。

30:デフォルトの名無しさん
11/10/18 01:43:20.82
JVM言語だと、haskellがまともに動くようにいじってたり競争が激しいが、
作者さんは、2003年にDotLisp(.net)、2007年にclojure(JVM)と移ったのであまり.netに手を出す気はないらしい。
なので、別の人がclojure-clrをポートしてる。

31:デフォルトの名無しさん
11/10/18 13:37:01.57
Clojure1.3です。
defvar ってよくわからないんですが、
どういう働き、使い方をするんでしょうか。

変数を初期値とドキュメント文字列で定義する、もののようなので、
下記のようにしていますが、エラーがでます。。

(defvar vartest 123 "document")
(println vartest (class vartest))

defvar が何かわからないというエラーなんですが。。
def と同じような働きをすると思って、使ってみたんですが。。

32:デフォルトの名無しさん
11/10/18 15:19:28.51
(defvar vartest 123 "document" )

(def ^{:doc "document"} vartest 123)
これをするのと一緒


33:31
11/10/18 21:03:13.70
defvar 使うと、
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: defvar in this context
というエラーが出てしまうんですよね。

インストールの仕方が悪いのでしょうか。。

34:31
11/10/18 21:10:07.39
URLリンク(github.com)
もしかして、1.3では、defvar はデフォルトで削除されている??

35:デフォルトの名無しさん
11/10/18 21:40:36.51
see URLリンク(clojuredocs.org)


36:デフォルトの名無しさん
11/10/19 09:28:09.80
defvarは大分前からcontribにあるし、1.3ではdefがdocstringを受け付ける

(def foo "A meaningless number." 123)

これはdefnやnsと同じdocstring→内容という順番に揃えられた

(ns bar
"A useless namespace."
(:require [clojure.string :as str]))

(defn baz
"Returns \"foo,bar,baz\" always."
[]
(str/join \, ["foo" "bar" "baz"]))

1.2で関数ではないvarにdocstringを付けるには、contribを使うなり、>>32のように書くなりすれば良い

37:デフォルトの名無しさん
11/10/19 09:39:30.11
s/docstring→内容/名前→docstring→内容/

38:31
11/10/19 22:45:49.36
なるほど。そういう流れだったんですね。

39:デフォルトの名無しさん
11/10/19 23:05:02.26
>>28
今時入ってくる新人ってREPL以前にMSXみたいなBASIC環境すらしらないんだ
で、コンピュータが対話環境で使えるときに感じる自分の能力の拡張みたいな感覚にアヘン吸ったみたいな快楽を覚えてしまって
ものすごい集中力でコード書きだして周りのほうがびっくり状態になってる。
実際ここ数年Unitテストとかで対話に近いテストサイクルでもモチベーションが少しだけ上がったんだけど
Realな対話環境がもたらす単体関数の即時テスト(たんにSlimeでevalするだけなんだけど)が面白くてしょうがないって言ってる。
だから16で「ドカタが」って最後に書いたんだけど、こいつらがそのまま会社に居着いてくれればうれしいけど、収入上がんないとこれ何人かは流れちゃうかもしれない。


40:デフォルトの名無しさん
11/10/19 23:42:45.18
アヘン吸わせると良いのか

41:デフォルトの名無しさん
11/10/20 00:00:15.66
>>39
それはぜひどこかの媒体で発表してもらいたいな。Clojure党支援につながる 笑

42:デフォルトの名無しさん
11/10/20 10:12:07.78
BASICを知らない新人が多いのは想像できるが
今時REPLを知らない新人が多いなんてことがあるのか

43:デフォルトの名無しさん
11/10/20 10:38:50.24
まだ「プログラミング教育はJavaでやってます()」って結構多いだろ

Windowsしか使ってないとテキスト端末環境を使うことにすら慣れない奴も多いし

44:デフォルトの名無しさん
11/10/20 19:07:49.41
まるでプログラミング教育をJavaでやるのがおかしいかのような書き方だな

45:デフォルトの名無しさん
11/10/20 19:51:51.16
>>44
初めて使う言語スレに移動すればこの手の話はいっぱい出てる。これを話しだすと
フレーム論争になるし、オフトピになってしまう。

46:デフォルトの名無しさん
11/10/20 19:55:40.69
>>41
ここに書いただけでもばれたらやばいので雑誌や論文誌でとかミリ


47:デフォルトの名無しさん
11/10/20 23:20:09.54
うん

48:デフォルトの名無しさん
11/10/21 00:02:17.41
煽りでもなさそうなのに「ドカタ」とか「Java()」みたいなことを平気で書いてしまうのは痛いな
プロダクトを2つリリースして今3つめって、見る人が見れば一発でバレるようなことを書いといて
バレたらやばいってのも意味が分からん

ちょっと頭の弱い人なのかな…
こういうのがいると言語自体の印象が悪くなるし、ホント迷惑だわ

49:デフォルトの名無しさん
11/10/21 00:26:02.75
2チャンの中ってほんとキチガイめいた人(キチガイかもしれない。)が
いて、行動の善悪の判断がずれてる人がいるから慎重になったほうがいい
ところ。彼らの思い込む正義のためなら何でもしてしまう危険な連中がい
るから。

JavaをしらんからJava()で煽りになるんかどうかすら俺は知らん。土方は
この板じゃ差別用語なのは知ってるが。

50:デフォルトの名無しさん
11/10/21 22:45:23.90
KCLの御大がご退官されるとのこと。


51:デフォルトの名無しさん
11/10/21 23:30:54.79
Smalltalkだったら失神するな

52:デフォルトの名無しさん
11/10/22 14:12:36.72
東大京大どっち?

53:デフォルトの名無しさん
11/10/22 17:18:47.63
lispスレに書き込むべきだったが誤爆したな。
京大のほう。

54:デフォルトの名無しさん
11/10/23 16:25:10.65
~ Clojureで改行はいつするのかとRubyist ~

Clojureでのコーディング規約というか、改行をどこで入れるのかとか、
説明したサイトありますか??

55:デフォルトの名無しさん
11/10/23 17:35:04.23
>>54
スレの1からのリンク集いおいてある。

56:デフォルトの名無しさん
11/10/24 12:44:11.48
FP Day 2011, Cambridge UK
URLリンク(www.fpday.net)
名前に対してこじんまりとしたイベントだけど、
キーノートにMSRのhaskellとF#の御仁が来て、
Hands-onとCaseStudyには追加でClojureコースがあったという。

57:デフォルトの名無しさん
11/10/25 19:18:36.65
Clojureで、 [ ]括弧を使うのは、
let, defn の仮引数部 ,with-open とかだけど、
これらに共通するのは何か??

なぜ、def では[ ] 括弧を使わないのだろうか。。

58:デフォルトの名無しさん
11/10/25 23:09:16.71
defを含むスペシャルフォームだと、let,fn,loop
URLリンク(clojure.org)

59:デフォルトの名無しさん
11/10/26 12:16:53.17
シンタックスの一部としてベクタを要求するフォームは主に二種類ある。
・引数を表すベクタ(例:fn、defn、defmacro)
・その式の「内側」で有効な束縛を作るベクタ(例:let、binding、dotimes、loop)

defはそのどちらでもない

60:デフォルトの名無しさん
11/10/26 12:25:13.19
あ、引数のベクタも書式は名前と値のペアではないが
「内側」で通用する束縛を作っている点で共通すると考えてもいいな

61:デフォルトの名無しさん
11/10/26 14:21:51.20
Lispの生みの親が逝ってしまった・・

62:デフォルトの名無しさん
11/10/26 16:00:36.34
クソ言語生み出した奴は死んで当然

63:デフォルトの名無しさん
11/10/26 17:40:00.11
>>62 死んで詫びろ今すぐ

64:デフォルトの名無しさん
11/10/26 18:42:02.83
ClojureのSTMは使い物にならない ? JUMPERZ.NET Blog
URLリンク(kanatoko.wordpress.com)

Clojure での並列プログラミングはシンプルな記述も出来ない、パフォーマンスも悪い、という事ですが。

Clojure はマルチスレッドプログラミングの複雑さを解決するとか聞いていたのに、話と違うような気が……

どう思いますか?


65:デフォルトの名無しさん
11/10/26 19:31:17.00
またそれか

66:デフォルトの名無しさん
11/10/26 21:09:31.58
あまり共有せずイミュータブルな構造に見合った設計すればいいんじゃないかな?

最近なイントロ用スライド
URLリンク(github.com)

67:デフォルトの名無しさん
11/10/26 21:11:49.07
URLリンク(github.com)
Richyの講演 simple made easyのビデオ

68:デフォルトの名無しさん
11/10/26 21:17:10.72
URLリンク(github.com)
URLリンク(github.com)
こういうのやってるぐらいだから、なんとかなんじゃないの?

69:デフォルトの名無しさん
11/10/26 21:31:15.21
>>64
匿名でブログことは余りコメントしたくないな。コード規約的に余り見たくないんだよな。

70:デフォルトの名無しさん
11/10/26 22:32:52.96
>コード規約的にあまり見たくない

日本人の方、いらっしゃいましたら翻訳をお願いします

71:デフォルトの名無しさん
11/10/26 23:47:21.13
_で始まる変数がキモイとかそういうことかしらね?

72:デフォルトの名無しさん
11/10/27 03:06:23.37
他人のコード見ると、コード規約を忘れてしまう、とエスパー。

73:デフォルトの名無しさん
11/10/27 09:11:32.09
> 匿名でブログこと

日本語でおk

74:デフォルトの名無しさん
11/10/27 10:11:06.01
ensureとかcommuteとか
URLリンク(www.slideshare.net)
URLリンク(www.slideshare.net)

変更を観測するadd-watchというのがあるのか
URLリンク(groups.google.com)
URLリンク(java.ociweb.com)

あとは、retry回数とかの統計も欲しい。

75:デフォルトの名無しさん
11/10/28 01:03:32.08
URLリンク(rob-rowe.blogspot.com)

少し使ってみた感じ、monoがターゲットじゃない(.netメインにする意味はwinでWPFやVSぐらい?)、ikvmとかでjvm向けの命令補完する仕組みがあるとちょっといいのになと思った。
なにに使えばいいのか分からん。
そういえば、dynamic導入するのかな。

76:デフォルトの名無しさん
11/10/28 13:38:25.12
Clojureと、elisp とで、クオートの意味合いは少し違いますか??

たとえば、.emacsの設定ファイルにある
(add-to-list 'foo-bar-alist '(name . value))
のは、

普通のClojureの関数だと、
(add-to-list foo-bar-alist '(name value))
こういう感じで、foo-bar-alistに、クオート必要ないですよね。
(もちろん、クオートが必要なようにadd-to-list関数を書くこともできると思いますが。。)

ClojureからLispに入っているので、
普通の人にはわかない疑問かもしれませんが、
皆さんの感覚を教えてください。

77:76
11/10/28 13:40:56.12
クオートというよりは、
あるいは、デフォルトの、
変数や、シンボルの扱いが違うのでしょうか?

その辺り教えてください。よろしくおねがいします。

78:電波いっぱい
11/10/28 20:25:16.28
言語やの違いとかではなくて、破壊的な変更をしたいときのやり方が違うだけ。
emacsのadd-to-listは破壊的な関数で、内容を書き換えたい変数そのものを渡すためにクォートしてる。clojureで同じことをするにはatomなんかをはさむからそうならない。


79:電波いっぱい
11/10/28 20:33:35.12
あ、言語の違いではあるな。クォートの違いではない。ごめん。

80:デフォルトの名無しさん
11/10/29 05:21:18.42
>>76
クオートは評価を遅らすという意味で違いはないでしょ。
確かにクオートとかシンボルはすごい混乱しやすい所。 俺も初心者の頃はreplでずっと考えを整理してた。
まず先頭が関数かマクロかをはっきり認識しておく。
関数なら引数は左から順に'評価'されていく。
評価とは以下のことだ。
(ここでめんどくさくなったのでやめる)

81:デフォルトの名無しさん
11/10/29 13:13:38.75
スレリンク(scienceplus板)

82:デフォルトの名無しさん
11/10/29 13:42:10.79
>>76-77
中途半端にいろいろ考えるよりも、
Lispにおける関数とマクロについて勉強してみたらいいんじゃないかな?
なぜ関数の引数にクオートが必要になる場合があるのか。
なぜマクロなんてものが必要になるのか。
クオート、関数、マクロ、に対する考え方は、elispもClojureも変わらないはず。

83:デフォルトの名無しさん
11/10/30 00:01:10.88
elispのadd-to-listでは、
foo-bar-listというシンボルが何を束縛するかを変更するから、
foo-bar-listをクオートしてシンボル自体をadd-to-listに渡す必要がある。

普通のClojureの関数?では、
シンボルが何を束縛するかを変更するのではなく、
シンボルが束縛してる物の状態を変えるから、
シンボル自体を渡す必要が無く、シンボルが束縛してる物を渡せば良い。
したがってシンボルをクオートする必要が無い。

84:デフォルトの名無しさん
11/10/30 03:00:44.69
lein-multi, clj-stacktrace, slingshot, lein-difftest, robert-bruce
URLリンク(technomancy.us)

85:デフォルトの名無しさん
11/10/30 03:41:12.09
1.3系って1.2の頃とcontribの扱いが違うのですげー戸惑っちゃうんだけど、感覚的に行き先がわかるようなドキュメント転がってないかな。


86:デフォルトの名無しさん
11/10/30 09:57:36.37
1.2でもばらばらのやつ使えるってあるけど、coreに取り込まれた奴はどうすればいいんだ。

>85 感覚的か分からんけど
概要や関数名インデックスで検索とか
API Overview -clojure-contrib v1.3 (in development)
URLリンク(clojure.github.com)
開発サイトのドキュメント(まとめ、新旧対応表)
URLリンク(dev.clojure.org)
URLリンク(dev.clojure.org)

87:デフォルトの名無しさん
11/10/30 10:59:52.87
>>86
おおー、この最後のリンクだわ欲しかったの
感謝感謝!


88:デフォルトの名無しさん
11/10/30 12:11:14.32
1.2でコアに入ってなくて、1.3で入ったcontrib由来のライブラリって何があったっけ

89:デフォルトの名無しさん
11/10/31 09:08:37.59
2週間で80レスか。22-3週でレスを消費するペース

90:デフォルトの名無しさん
11/11/01 13:23:41.36
URLリンク(www.cafepress.com)

91:デフォルトの名無しさん
11/11/01 14:13:43.12
LeiningenよりかClojureのロゴが入ってるマグカップが欲しいわ。

92:デフォルトの名無しさん
11/11/01 17:50:17.95
>>91
いいなそれ
Land Of Lispでもいいや

93:デフォルトの名無しさん
11/11/01 18:11:02.67
この際、Half-Lifeでもいいよ

94:デフォルトの名無しさん
11/11/01 19:33:03.52
>>93
λしか合ってねぇ

95:デフォルトの名無しさん
11/11/02 00:48:27.74
URLリンク(www.zazzle.co.jp)
そこのサイトもこちらのサイトも勝手に作れるのかな?
マグカップは無いようだ、、

96:デフォルトの名無しさん
11/11/06 06:51:00.51
先月22日に、ClojureCLRの(開発者ほぼひとりなので個人でなく)公式blogが始まってた。
いきなり10日間の利用調査をおこなって、
URLリンク(clojureclr.blogspot.com)
結果発表してる。
URLリンク(clojureclr.blogspot.com)

clojure(.core)1.3の99%機能実装してる
javaのweb,db環境に依存してる
開発環境に不安
CLRのジェネリックスのサポートがない
monoで動かない
調査中2人しか個人利用でも常時使ってない
など、いろいろ書いてあった。

97:名無しさん@お腹いっぱい。
11/11/06 10:04:05.57
GUIやDB操作のClojure独自の使用できないのかね

98:名無しさん@お腹いっぱい。
11/11/06 10:57:19.00
>>97
使用×
仕様

99:デフォルトの名無しさん
11/11/06 19:11:20.97
>>97
jdbcとかコネクションプールとか、チョロく使えすぎるのでだれもわざわざ書いたりしないんだよね

100:デフォルトの名無しさん
11/11/06 23:46:51.95
GUIだったらseesawとか。

101:デフォルトの名無しさん
11/11/09 10:13:06.73
を、非公式な1.3互換のclojure.contribだって
URLリンク(github.com)
いまのところ、clojarsなどには置いてないので、ローカルに置いて使うようだ。

102:デフォルトの名無しさん
11/11/09 23:06:18.43
clojure 1.3にすると1.3へ未対応なライブラリが一杯あって^dynamicせいや!と山ほど警告が出るのがいやだなぁ
clojarsのサイトみてもdependencyは実際読むまでわからんから困る(clojarqlが山ほど居てどれが対応版かわからんとか)


103:デフォルトの名無しさん
11/11/10 00:54:43.02
^{:dynamic true}なら1.2で構文エラーにならずに済むらしい


104:デフォルトの名無しさん
11/11/11 07:27:02.56
ループ内でpersistent hashをassoc,dissocして新しいの作ってばかりだとGCやら処理コストで遅いかとおもってたらjava.util.HashMapと殆ど速度かわらないのね。
ものすげー驚いたわ
現実的な部分だとSTMを高速に書き換えるスレッドが競合するようなアホな事しなければjavaでsynchronizeに神経使うよりも開発効率めちゃくちゃいいわ。




105:デフォルトの名無しさん
11/11/11 12:13:51.00
clojure/conjスライド
URLリンク(github.com)

ことしのツイートは大分増えた気がする
URLリンク(twitter.com)

106:デフォルトの名無しさん
11/11/12 02:10:22.64
>>104
haskellでもミュータブルなArray使って実用的な速度出したりしてたから、
実装を工夫してイミュータブルでGC減らしたりするのは、
関数型全体でも実装面で影響が有ったみたい。

107:デフォルトの名無しさん
11/11/13 00:30:59.40
>>16
二つのプロダクトは何人で開発していたの?
完成形になる速度は、どのくらい違うもん?
もっと熟練度が上がれば、どのくらいになりそう?

108:デフォルトの名無しさん
11/11/13 02:43:53.39
Evangelizing Clojure
URLリンク(rhebus.posterous.com)

・Know your enemy
Scala, Clojure and Groovy are in competition, but they are not enemies of each other. The real enemy is the status quo.

status quo - ラテン語で現状(というか現実?)
URLリンク(dictionary.goo.ne.jp)

マインドシェアって英語はWP7で聞くようになったな。


109:デフォルトの名無しさん
11/11/13 03:21:53.85
Scala,Clojure,Groovyは競走中じゃが、お互いに敵ちゃうよ。本当の敵じゃ
現状じゃよ。
*Clojureやるなんてデカイリスク抱えるやん。確かなのがいい
*ClojureはJavaよりええ選択やとおもうけど、Javaは産業の標準や
わしは、Clojureを選んでプロジェクトが失敗しよったら、より非難しそうや。
*Clojureを選んだら、よう知ってるClojure開発者をやとえるか知らん。

とこんなところがthe status quoの内容ですね。

110:デフォルトの名無しさん
11/11/13 09:49:42.45
2つめのこと
(Javaを使ってプロジェクトが失敗する時)より非難しそうや。


111:デフォルトの名無しさん
11/11/15 09:58:13.31
URLリンク(groups.google.com)
cakeとleiningenが統合するらしい。
これでlein replは最初は起動は普通だが2回目は速くなりそうだな。

112:デフォルトの名無しさん
11/11/15 11:40:27.98
>>110
昔、「IBMを選ぶ理由は、IBM以外を選んで失敗したら何言われるか判らないから」って話があった。

113:デフォルトの名無しさん
11/11/15 12:52:17.49
そういうどうしようもない底辺は相手にする価値がない

114:デフォルトの名無しさん
11/11/15 13:27:32.58
結局管理者の立場になると、自分の責任になってくることをなるべく減らす
ために、既存の権威というのか常識にあわせて、そちらに責任転嫁をするように
できるというのは魅力的なんだろう。
海外ですら(あのブログの人どこの人かしらんけど。)あの状態だから、より
保守的な日本ならその常識がもっと重要なんだろうね。

115:デフォルトの名無しさん
11/11/15 20:51:52.28
URLリンク(groups.google.com)
ライブラリ作ったら、clojure MLで発表しよう。
そこが、みんなの集まる場所(だとおもっているので)
RH

うろ翻訳。開発MLで呼びかけてるんだなー。大黒柱っぽくていいね。

116:デフォルトの名無しさん
11/11/16 05:35:56.30
なんでその内容をdevで周知してるんだろ。

117:デフォルトの名無しさん
11/11/16 07:29:02.90
clojureを購読してる人に「お前らもっと自分のコードアピールしろよ」ってことではなく
「clojure-devはcontributor向けのMLだから、こっちでアナウンスしても気付けない人がいるよ」ってことじゃね

118:デフォルトの名無しさん
11/11/16 14:05:38.06
そうだと思うけど、ツイートするだけじゃなくって言ってるのが一般向けに見えた。
それにdevでアナウンスしてる人なんて見当たらないし。

119:デフォルトの名無しさん
11/11/16 20:47:43.78
そこのあなた(ライブラリ作成者)に呼びかけるんだったら、(無いから開発サイトになってしまうが)公式ブログやtwitterに書いた方がいい内容だよね。
開発MLは閲覧自由だけど、core,contribの開発という目的にあわせてコントリビューター宣誓しないとメンバー登録出来ない。
逆説的なせいか、なんかこうしっくりこないんだよなー。

URLリンク(clojure.org)
URLリンク(dev.clojure.org)

120:デフォルトの名無しさん
11/11/16 23:32:47.34
遅ればせながら意訳してみた。

君はClojureライブラリの開発者かい? 何かリリースしたばかり?
メインのClojureグループでアナウンスした? もししてないならやった方が良い。
あっちは現在でも何千もの人々に情報提供できる主たる場所なんだ。ツイートも良いけど、Clojureグループも入れてやってよ。
よろしくね。
リッチより

121:デフォルトの名無しさん
11/11/18 09:10:53.52
URLリンク(www.manning.com)
正式に発売されたみたいね。
Clojure in Action is a hands-on tutorial for the working programmer who
has written code in a language like Java or Ruby, but has no prior
experience with Lisp.
とあるんで、すでに一つ言語を習得した人向けの本かな。
Clojure in Action は職業プログラマーのための実践的チュートリアルです。
JavaやRubyの言語でプログラムを組んでいる人向けで、Lispの経験はなくて
もいいよ。(使ってる言語:他の情報からだとOOPを扱った言語のことを指してるのかな。)
というようなこと。内容は多義に渡ってるのかな。基本から応用まで、実践例
を交えてるとのこと。manningは掲示板に登録したりしてメール広告をもらうよう
にしておくとクーポンは簡単に手に入る。


122:デフォルトの名無しさん
11/11/18 20:56:19.81
スレタイだけど、clojureならスレの番号はベクタで
[3]
とかにして
(プログラミング言語 clojure [3])
っていうのはどう?

123:デフォルトの名無しさん
11/11/18 21:25:21.20
>>122
なんか nilとか戻されそう


124:デフォルトの名無しさん
11/11/19 16:06:40.75
conterclockwiseで開発しようとしてるんですが、何度も再起動ってどうやってやるんですか?
どうも、起動するたびにREPLというのが起動してとても遅い気がします
簡単な計算ならLoad File in REPLで素早くREPL内で起動するようですが、Swingを使うと
Load file in REPLでウィンドウが現れなくなってしまうようです

125:124
11/11/19 16:33:45.32
うーん、REPLが起動していないと、エディタ内の補完も効かないみたいですね
しかもSwingアプリを終了させるとREPLも終了してるようで、
補完が効かなくなってしまう
しかも特定の補完の仕方をするとめちゃくちゃ遅いですね
intelliJ IDEAのLa Clojureはこうした問題が何もないので、
こっちを使うことにします。

126:デフォルトの名無しさん
11/11/19 16:41:22.11
intellJ IDEAのほうがいいと思うよ。leiningenプラグインもあるから
そちらも入れておけばいい。外部ライブラリを使うようになれば
こちらはかなり重要だ。
でも、一番いいのは、leiningen+slime+emacsだから。
ものによったら、eclipseに限らずSwing アプリを終了したときにREPLも落ちることはある。

127:124
11/11/19 16:53:43.92
>>126
親切にありがとうございます。leiningenってツールが良いんですね。
Emacsという手もありましたか。
検討してみます。

128:デフォルトの名無しさん
11/11/19 20:11:59.60
Swingアプリケーションを終了した時にREPLが終了するのって
setDefaultCloseOperationにEXIT_ON_CLOSE(ウィンドウを閉じたら終了する)を指定したとか
どこかでSystem.exitを呼んでるとかではなく?

129:デフォルトの名無しさん
11/11/19 20:16:21.89
あと、IDEは一連の作業でそう何度も再起動するようなものじゃないと思うが……
viやnanoならファイルを開く度に起動して用が済んだら閉じるけど

130:デフォルトの名無しさん
11/11/19 20:21:45.78
viで開発するならscreenつかってバックグラウンドでreplを動かさないと
効率が上がらん。

131:デフォルトの名無しさん
11/11/19 20:54:44.61
俺も時間取って書く時はバックグラウンドで走らせる

132:デフォルトの名無しさん
11/11/20 19:32:51.60
viよりemacsの方が良いのか

133:デフォルトの名無しさん
11/11/20 21:42:45.45
>>132
一種のIDEだし, なじめば, まぁ...
slimeなれたら離れられなくなるとおもう


134:デフォルトの名無しさん
11/11/20 22:25:04.20
clojure 1.3で、
(def a 1)は警告でないのに(def *a* 1)は警告が出る。
二つの使い分けってあるの?
あと警告文の「名前を変えろ」の意味がよくわからんけど*取れってこと?



135:デフォルトの名無しさん
11/11/20 23:13:09.48
vimも良くなってる。vim+lein(cake)+screenという組み合わせは、
かなり機動力が高いと思うよ。vimclojureかslimzかどちらかのvimプラグイン
を入れれば、シンタックスは対応できるから。

136:デフォルトの名無しさん
11/11/21 00:03:26.02
>>154
1.3から*で囲われたvarは再束縛できなくなった、んで ^dynamicつけないといかんぞって警告が出てくる
CommonLisp慣れしてると結構面食らう


137:デフォルトの名無しさん
11/11/21 01:49:11.33
monoにも、llvmのバイトコード吐く仕組みがあって、
URLリンク(www.mono-project.com)
URLリンク(www.mono-project.com)
この記事の通り下のSciMarkをmono-llvmで回したら通常の1.5倍ぐらいのスコアだった。
ただし起動時の初期化が長いので短いプログラムでは遅くなるかも。
URLリンク(www.cs.ucsb.edu)

ちなみに同じくubuntu11.10 amd64で、gcc -O2で2倍、-O3 i7-avx最適化で、2.5倍ぐらいだった。
openjdk7で2.1倍。


138:デフォルトの名無しさん
11/11/21 01:50:06.86
誤爆

139:デフォルトの名無しさん
11/11/21 01:54:58.65
*var-name*をclojure.jarでは定数に使ってるので、みんなも定数に使ってねって事だったかも。

140:デフォルトの名無しさん
11/11/21 03:11:36.80
>>136
あー、*で始まって*で終わる名前はdynamic専用の名前にすっからよろしく、ってことか。

>>139
定数・・・なのかな。定数は*なしで定義するのかなと思った・・・けど*clojure-version*が謎。

141:デフォルトの名無しさん
11/11/21 03:24:59.74
*つけるのはbindingで値を変える前提のVarだけにしとけって事。
みんなバラバラの意味で使って混乱するから強制にしたんじゃね。
逆に^dynamicついてないとbindingできなくなったし。
ついてないのを無理やり変えるならwith-redefsかalter-vat-rootかな。

142:デフォルトの名無しさん
11/11/21 04:03:30.08
URLリンク(clojuredocs.org)
変数だから、警告は名前変えてじゃなくて、dynamic付けろっていってくれた方がいいよね。

143:デフォルトの名無しさん
11/11/21 04:11:50.98
URLリンク(clojuredocs.org)
URLリンク(clojuredocs.org)
索引

144:デフォルトの名無しさん
11/11/21 10:02:15.44
>>142
二文目で

・(動的に再束縛することを意図しているなら):dynamicメタデータにtrueを付加する(indicate ^:dynamic)
・(慣習を知らずに、単に*で囲ってるvarをよく見かけるから付けたのなら)名前を変える(change the name)

のどちらかをやれ(Please either)と明記してるだろ?

145:デフォルトの名無しさん
11/11/21 10:30:56.37
それから、>>136は「*で囲んだシンボルだけがデフォルトで再束縛できない」という意味合いにも解釈できるから
>>139は「Clojureでは*で囲んだシンボルを定数に使っているんだろう」と解釈したんだろうけど
「すべてのvarが動的に再束縛できる」→「:dynamicがtrueなvarだけが動的に再束縛できる」に変わっただけで
*で囲んだvarだけ特別に動的な再束縛を禁止しているわけではない

>>136は、Common Lispのdefvarから類推すると、Clojureの"var"はすべて動的に再束縛できて当然だから面食らったって話……だよな?)

146:デフォルトの名無しさん
11/11/21 10:33:15.76
あ、ごめん
もしかして136と139は同じ人?

147:デフォルトの名無しさん
11/11/21 12:10:00.67
>>145
面食らった件はそう、他のライブラリでも*db*とかを再束縛してたりしたので1.3で結構面食らった
*付きじゃないと警告でなかったような気もしたのだけど気のせいかな?
>>146
136だけど139じゃないです


148:デフォルトの名無しさん
11/11/21 12:44:32.03
>>147
*で囲まれていなければ警告は出ないが、動的に再束縛できない点は変わらない
*で囲んだ時だけ警告されるのは、慣習と実際が食い違っているから

逆に、1.2まではこんなこともできた(:inlineでインライン化される場合は効かない)

(binding [println (fn [& args] nil)]
(println "hello, world")) ; 出力されない

149:デフォルトの名無しさん
11/11/21 20:34:13.12
>>148
動的束縛全面禁止になったのか、で、*はよく用いられていたから警告だすようになったって事でFAってことかな?


150:デフォルトの名無しさん
11/11/21 21:12:01.18
全面禁止じゃなくて、:dynamicがtrueなvarに限定された
よく使われているというか、Clojureでも動的に再束縛できる変数は*で囲む慣習がある
ただ、名前によって動的な再束縛の可否という振る舞いを変えるのではなく
移行時に警告で振る舞いの変更を知らせるようにした

151:デフォルトの名無しさん
11/11/22 09:28:11.55
まったくの初学者で、labreplはじめたんだけど、It's all dataとloopingの間に
深い深い溝があるような・・・みんな、軽々と乗り越えたん?
いきなりrecurだのベクター中の&だのif-letだの出てきてわけわからん状態で挫折しそう。

152:デフォルトの名無しさん
11/11/22 15:41:09.31
URLリンク(sites.google.com)
labreplやるにも、
ここら辺は必要なのかな?

&は残りの引数という意味らしい。

153:デフォルトの名無しさん
11/11/22 16:47:58.20
全くの初学者でよくそれを見つけたなw
今動かしてみたけど、結構良くできたチュートリアルだね。
でも確かにloopingの2番はいきなりdefn、loop、分配束縛、if-let出してきてそれ使えってのは無茶だな。
たっぷり例示してからやればいいのに。

154:デフォルトの名無しさん
11/11/22 17:45:00.44
テンプレでおすすめに入れてるから。

155:デフォルトの名無しさん
11/11/22 18:05:38.78
URLリンク(vimeo.com)
このビデオキャストイイね。advanced course だけど、プログラミングclojure
を読み終わって更に力を付けたいという人には向いてる。
ただし、英語の放送ですが。

156:デフォルトの名無しさん
11/11/22 18:55:25.38
おまえら予約した?

Amit Rathore "Clojure in Action"


157:デフォルトの名無しさん
11/11/22 20:26:31.69
>>156
ebook版なら先週くらいに買ったよ


158:デフォルトの名無しさん
11/11/22 21:09:21.64
>>152さん、ありがとうです。やっぱり難しいですよね。
labreplは>>154さんのいうとおり、テンプレのお勧め見て
試して見ました。・・・が、>>153さんの言われている単語すら
よくわからない状態で。精進します。

159:デフォルトの名無しさん
11/11/22 22:12:48.46
>>155
まだ2つしか見てないけどいいわこれ
教えてくれてありがと


160:デフォルトの名無しさん
11/11/22 22:59:16.34
joy of clojure買ったのに読んでなかったわ

161:デフォルトの名無しさん
11/11/22 23:55:04.58
URLリンク(media.pragprog.com)
どこ標準時か判らないけれど、11/25(金)だけ40%オフだそうで。
pragmatic bookshelf
URLリンク(pragprog.com)
プログラミングClojure第二版
翻訳されるなら英語版買わんでも、と思うがどうなんだろう。

162:デフォルトの名無しさん
11/11/23 01:16:19.86
in actionのmanningは感謝祭の前日50%引きセールだそうで。
西海岸は、22日の午前8時過ぎだから日本時間だと今日17時までかなあ。

163:157
11/11/23 04:03:33.67
くぅ、まだ100ページ(四分の一)しか読んでないのに半額セールとか涙出そうだ
ショボーン
木曜休みとってあるからこの連休で全部読むしか orz


164:デフォルトの名無しさん
11/11/23 04:33:38.69
感謝祭前後には毎年なにか割引があること覚えておかないとなあ。
apressの場合、去年は12中旬ぐらいに25%セールがあったけど今年はどうだろ。

165:デフォルトの名無しさん
11/11/23 14:44:07.82
clojureスレにきてるやつって
なにげに英語余裕で読み書きできそうなやつがそろってそうな
気がしてならない。

166:デフォルトの名無しさん
11/11/23 16:07:52.55
>>165
まだ裾野が狭いからね。日本語のリソースをもっと増やさないといけ
ないのはわかってんだが。手が回らない。

167:デフォルトの名無しさん
11/11/23 21:28:11.01
クックブックみたいのが出るといいと思うんだがねえ。
入門はあの翻訳本でいいとして。

168:デフォルトの名無しさん
11/11/23 22:22:12.21
> 入門はあの翻訳本でいいとして。
取り上げてる例に興味が持てなかったので未だに積んであるんだが


169:デフォルトの名無しさん
11/11/23 22:41:40.13
俺もLancetには興味なかったけど、あの本のLancetパートは
別に熱心に読まなくてもいいというか、章末の復習ついでに実装が進んでいく感じ
第二版は全体の構成が少し変わってるけど、Lancetパートはあるんだろうか

170:157
11/11/23 23:58:22.32
Leiningenを例にする本がでればいいのにとか重いながら、Clojure in Actionをこの2日で180ページまで読んだ
どんどん濃くなるのでうれしいが今年中に読み終われるかギリギリな感じ

>>165
高卒のおばかなプログラマの俺でも興味のあるものの為に辞書片手に読むようになったらここ2年ですごい読めるようになったよ。
なんで生徒時代あんなに英語赤点だったんだろうかってくらい(大学入試ムリなくらいなレベル)




171:デフォルトの名無しさん
11/11/24 02:41:49.52
第二版は、はじめの方でちょろっとlein使ってるぐらい。
実践の部分はclojure.test(.generative),clojure.java.jdbc,compojureの説明があって、
それを使ってゲームを作る流れ。(jdbcは使ってないかも)
パフォーマンスの説明は、いまのところ、メモ化やlongとuncheck使った四則演算の話が少しある。

172:デフォルトの名無しさん
11/11/24 18:49:15.23
Lancetのところはみなすっ飛ばしたわ。笑 キョーミなかったし。
それでもなんとでもなるよ。基本的なことはそれ抜きに書かれてるから。
私はLisp系の基本だと思ってる関数で関数を返すといった技法絡みは無いけどさ。

173:デフォルトの名無しさん
11/11/24 18:56:52.57
技術的なことは分からんが、leinが簡単過ぎて嬉しい。
Mavenとかantとか複雑過ぎて俺の脳みそには入らん。
自動化ツールを自動化しなきゃダメな時点でどうなんだと。
アホのeclipseのために専用のプロジェクト作らなくても、emacsでほいほい開発できるし単純に楽だわ。

174:デフォルトの名無しさん
11/11/24 21:24:18.01
>>173
激しく同意

175:デフォルトの名無しさん
11/11/24 23:43:11.28
質問です。
LinuxerのサンデープログラマLisperなんですがJava未学習者がclojureを
覚える強いメリットっありますか?
あとOSごとにソフトを作り込んだ方がヘビーなエンドユーザーは使いやすいと
思うんですが、実際の所はどうなんでしょうか?

176:デフォルトの名無しさん
11/11/25 00:46:13.24
こういうメリット云々ぬかす奴は嫌い。

177:デフォルトの名無しさん
11/11/25 00:47:09.55
JAVA嫌いなら出来ない おわり

178:デフォルトの名無しさん
11/11/25 01:07:46.30
俺ジャバは知らないけど、使ってるよ。若干困るところはjavaの機能を
使おうとする部分かな。ライブラリ知らないのは資料だけならネットに
いっぱいあるから問題なしかな。protocolところは混乱するかもしれな
いけど、固有の機能を使うGUIだってseesawのようなものも出てきてるので
そんなに問題はないかな。
迷信のように、Javaを知らなければ、Clojureを使えないと言ってる人は
いるようだけど、(検索などで見かけた。)あれは真っ赤な嘘か、発言者の
頭のスペックの問題と考えていいよ。

179:デフォルトの名無しさん
11/11/25 01:21:03.33
>>175
javaしらなくても十分やる価値があるよ
Lispよりも純粋関数型言語の思想の方が強く関与してるおかげで副作用なしの関数の学習に適してるから
Emacs+Slimeの様なインタラクティブ環境でそれができるのは希有な上に学習曲線が緩いClojureは一押しだったりする
他にも関数型でHaskellやML系とかJVMならScalaもいるがこれらよりは優しいと思う

まぁ本人が何したいのかにもよるんだけどね。


180:デフォルトの名無しさん
11/11/25 03:29:57.95
みんなLancet飛ばしててわろた。

181:デフォルトの名無しさん
11/11/25 03:50:23.70
ビルドツールが例ってのはちょっとややこしいよなぁ。
そもそもAntって何だっけ状態だったし。

182:デフォルトの名無しさん
11/11/25 04:20:46.34
leiningenは良くできてるよなー。
このビルドツールの使いやすさもclojure普及に一役かってると思う

183:デフォルトの名無しさん
11/11/25 06:22:55.93
>>178-179
純粋関数型言語を勉強する気が起きたらならそれに適した言語で勉強します。言語マニアでも
ないので無駄な勉強時間は割きたくありません。

ようするに強いメリットはないようですね。こちらのスレが伸びていたのは知っていたので
もっと明確な答えが返ってくると期待したのですが間違いでした。

回答、ありがとうございました。

184:デフォルトの名無しさん
11/11/25 07:00:39.64
>>182
一役どころじゃないよな。
プラグインを個々にインストールする仕組みになったからproject.cljも変更しないで済んで更に便利になったし。

185:デフォルトの名無しさん
11/11/25 08:48:20.69
>>183
web屋さんには強いメリットはあるけどね。

186:デフォルトの名無しさん
11/11/25 08:49:08.28
415 名前:デフォルトの名無しさん [sage] :2011/11/25(金) 06:41:33.57
>>410
各ディストリでそんなに環境依存ってあるもんなんですか?
>>395のリンクでもありますがCで触れるのは最後にチューニングできるのは強みのような気もするんですが。
Richちゃんのいつごろ書いた記事?
>>411
朝、起きて気づいた。こっちの方が書き込み多いのは驚いた。Clojureスレのヤツはウンコだな。
>>412
それならGaucheで良くね?
CLならsbcl, clisp。個人の日本語解説サイトもあるから日本語資料には困らんよ。
日本語資料では間に合わなくなったら辞書片手に読めば良い。以上。

Clojureスレのヤツはウンコだな。

187:デフォルトの名無しさん
11/11/25 09:15:58.30
最近は質問する奴の方が偉そうなの多くなったのかねぇ
>>183
後出し設定乙でありますとしか、何がしたいために知りたかったのかが伝わらない質問した自分を恥じなさいな


188:デフォルトの名無しさん
11/11/25 09:46:08.48
ClojureスレからCLスレに転載したかと思えば、CLスレからClojureスレに再び転載
お前は一体何がしたいんだ

189:デフォルトの名無しさん
11/11/25 10:20:59.99
煽れば教えて貰えると思ってるんだろ。
皆通る道だ。

190:デフォルトの名無しさん
11/11/25 12:22:51.15
lisp使いでこっち見てるなら、関連スレにもいるに決まってんだろ。
本当頭悪い奴だな。
頭悪いついでに、LISP総合スレは
Lisp Scheme Part33
スレリンク(tech板)

191:デフォルトの名無しさん
11/11/25 12:54:33.21
Herokuはいいとして、
GAEやbeanstalk,RUN@cloudなんかは、javaのインフラが使えること分からないとどう利用してるのかイメージつき難いのかな。

192:デフォルトの名無しさん
11/11/28 19:52:07.72
googleのえらいさんでPAIP/AIMAの著者とhyperspecの中の人の文章です。
URLリンク(www010.upp.so-net.ne.jp)
これはcommon lispのスタイルについて書いてる文章だけど、
基本的なことはclojureのプログラミングについてもつながってるので、
読んでない人がいたら一読をおすすめする。



193:デフォルトの名無しさん
11/11/29 00:07:18.76
翻訳頼むわ↓

194:デフォルトの名無しさん
11/11/29 00:21:56.62
URLリンク(blog.raynes.me)
>I had a lot of time to do these things because I’ve always been
> home-schooled.
>I always say that Haskell was my first language.
>I’m 17
>I also landed a book deal with No Starch Press. I’m currently
> writing a book called Meet Clojure for them.

17ってのも驚きだけど、Land of LispやLearn You A Haskellの堅苦しくない
出版からClojureの本を出すことになってるってのも驚き。
Learn You~は大学生が出したHaskellの本だが。
中学生でHaskellをやったんかなぁ。

195:デフォルトの名無しさん
11/11/29 00:23:26.41
URLリンク(meetclj.raynes.me) これがアナウンスしてる予定の本。
Land~もLearn~も好評だったからなぁ。

196:デフォルトの名無しさん
11/11/29 00:38:46.33
URLリンク(nostarch.com)
伝統(?)の黄色い表紙は、キッチリしてるんじゃないかな。
オーム社のマンガガイドの科学シリーズが翻訳されててベストセラーにいつもはいってる。
英訳で始めてオーム社でこんなの出してたんだというのを知った。

197:デフォルトの名無しさん
11/11/29 04:49:12.48
>>193
ハングルはアニョハセヨぐらいしか知らんよ


198:デフォルトの名無しさん
11/11/29 19:54:39.36
user=> (map doc '(list))
java.lang.Exception: Can't take value of a macro: #'clojure.core/doc (NO_SOURCE_FILE:179)
というエラーが出てしまうんですが、どうすれば欲しい結果を返すことができるんでしょうか? version1.3.0

user=> (doc list)
-------------------------
clojure.core/list
([& items])
Creates a new list containing the items.
nil
user=> (map + '(1 3))
(1 3)
user=> (type list)
clojure.lang.PersistentList$1
user=> (map type '(1 list))
(java.lang.Integer clojure.lang.Symbol)


199:デフォルトの名無しさん
11/11/29 20:26:53.31
これならとりあえず動いた。versionは1.2.1。
user> (map print-doc (list (var list)))
(-------------------------
clojure.core/list
([& items])
Creates a new list containing the items.
nil)

200:デフォルトの名無しさん
11/11/29 20:55:40.85
レス、ありがとうございます。
version 1.2.1で動作確認しました。
;;version 1.3.0
user=> (map print-doc (list (var list)))
CompilerException java.lang.RuntimeException: Unable to resolve symbol: print-doc in this context, compiling:(NO_SOURCE_PATH:22)

欲しい結果がちょっと抽象的でしたので具体的にします。sbclでやるとこんな感じです。
CL-USER> (mapcar #'(lambda (f) (documentation f 'function)) '(list setq defun))
("Return constructs and returns a list of its arguments." NIL
"Define a function at top level.")
あと"(defun &ENVIRONMENT ENV NAME ARGS &BODY BODY)"という情報も欲しいです。

で、最終的にはこんな感じにしたいです。
("-------------------------
clojure.core/list
([& items])
Creates a new list containing the items.
nil" "-------------------------
hogehoge ..." "-------------------------
fugehoge ..." ...)

201:デフォルトの名無しさん
11/11/29 21:04:47.37
clの場合 (describe シンボル名)

202:デフォルトの名無しさん
11/11/29 21:06:28.19
(mapcar #'(lambda(x)(describe x)) '(cons defun))

203:デフォルトの名無しさん
11/11/29 21:32:55.00
>>198はメッセージの通り、docというマクロ自体を引数として与えようと事によるエラー
Clojureのマクロは今の所それ自体の「値」を直接手に入れることができない

>>200は1.2では内部関数であるprint-docが外部にむき出しになっていたのが
1.3でちゃんと外部から直接呼べないようになったので動かなくなった

ところで、要するにdocの出力を文字列として受け取ればいいんだよな?
Clojureでは標準入出力を直接使う代わりに*in*や*out*という名のvarを使い、それらがデフォルトで標準入出力になってる
with-out-strは内側で*out*を動的にStringWriterへ束縛して、*out*に出力された文字列を返り値にする
なので、こうすれば望んだ結果が得られる

(map (fn [name] (with-out-str (doc name))) '(list))

204:デフォルトの名無しさん
11/11/29 21:45:56.51
あ、*in*などを使うのは強制ではないし、System/inなどをハードコードしてる場合もリダイレクトできるってわけじゃない
coreは勿論、大抵のClojureライブラリも*in*などを使ってるんだけど、出力先を指定できないJavaライブラリを使うときは注意

205:デフォルトの名無しさん
11/11/29 21:56:08.39
>>203
俺もそんな感じでいけるんじゃないかと思ったが
docが変数名そのものから展開してしまって思うようにいかなかったわ
そのコード例だと、(fn …)の返り値が全部#'clojure.core/nameのドキュメントになる

>>200
(defmacro docs [& xs]
(apply list 'list (for [x xs] `(with-out-str (doc ~x)))))
とマクロを定義して
(docs print println def defn)
で(doc …)の文字列のリスト取得できるようになる…と思う
可変長引数じゃなくてベクタやリストを渡したければ[& xs]を[xs]にでもしてくれ



206:デフォルトの名無しさん
11/11/29 21:57:50.54
(source doc)してみれ docのマクロは読める。

207:デフォルトの名無しさん
11/11/29 22:07:29.05
1.3で(macroexpand '(doc list))するとどうなるの?
1.2.1だと(clojure.core/print-doc (var list))になるんで>>199にしてみたんだが。

208:デフォルトの名無しさん
11/11/29 22:13:49.63
>>207
1.3だと((var clojure.repl/print-doc) (clojure.core/meta (var list)))になったよ

それじゃあと、(use '[clojure.repl :only (print-doc)])としてみたんだが
IllegalAccessError print-doc is not public clojure.core/refer (core.clj:3774)
というエラーが出た。

209:デフォルトの名無しさん
11/11/29 22:15:50.28
>>205
ああ、本当だ。間違ってたごめん
最初に#()で書いたら""が返ってきて「%というシンボルを探してるのか」と気付いてたのに大ボケかましてしまった

210:デフォルトの名無しさん
11/11/29 22:25:52.02
>>208
ならば、これでどうだ。もう本題から離れちゃってる気がするけどw
(map (var clojure.repl/print-doc) (list (clojure.core/meta (var list))))

211:デフォルトの名無しさん
11/11/29 22:28:04.52
>>207-208
1.3でprint-docはvarではなくメタデータを取るようになった
(source doc)すれば分かるけど、docにはいくつかの特別な名前の為の処理があるから、print-docだけではうまくいかない
useのエラーは上で書いた通り、内部関数のprint-docは1.3からは直接呼べない(:privateがtrue)が、シャープクォートを使えば迂回できる
(docの内部でシャープクォートを使ってるのも、展開先で呼び出せる必要があるから)

(#'clojure.repl/print-doc (meta (var list)))

212:デフォルトの名無しさん
11/11/29 22:39:18.85
>>203-208
みなさん、ありがとう。
とりあえず、長考するわ。

長考する前にデバック(on slime)についてのおすすめの英語サイトありますか?

213:デフォルトの名無しさん
11/11/29 22:41:11.81
>>211
なるほど。:privateみたいなのでアクセス制限できて、それを (var xxxx) = #'xxxx で回避できるのね。

214:デフォルトの名無しさん
11/11/30 05:32:02.34
docの結果は値としては返ってこないのか。
返ってくるのは結果をどこかへ出力する副作用をもった遅延シーケンスだから、
>>203みたいなことしないと出力を文字列として得ることができないと・・

215:デフォルトの名無しさん
11/11/30 05:58:24.60
>>214
最終形は>>205ね。まだコードの行数も少ないからgitで追っかけるかな。

216:デフォルトの名無しさん
11/11/30 16:33:31.53
結構面白い問題だから、公式のグループで聞いた方がいい。

217:デフォルトの名無しさん
11/11/30 18:05:27.24
求人伸び率最強はClojure…元々が少なかっただけだろうけど
URLリンク(yfrog.com)

218:デフォルトの名無しさん
11/12/02 01:45:33.47
金持ちが居たら受けて感想でも教えてくれ。$325だってよ。
URLリンク(codelesson.com)

219:デフォルトの名無しさん
11/12/02 22:57:23.02
clojureで作った関数をjavaから呼び出す方法ってありますか?
出来上がった.classファイルを解析するしかない?

220:デフォルトの名無しさん
11/12/02 23:26:49.80
Clojureの関数はCallableとRunnableを実装してるので
それらを実装した他のクラスと同じ感覚で呼び出せる
望むならjava.util.concurrentのタスクスケジューラなどに渡すこともできる

221:デフォルトの名無しさん
11/12/03 01:16:22.04
>>219
URLリンク(clojure.org)

222:デフォルトの名無しさん
11/12/03 16:45:38.26
>>220
>>221
ありがとう。
英語苦手だからとりあえず:gen-classって付けてみたけど、
欲しい関数はどこにあるかわからなかった。
ゆっくり読みながら試してみます。

とりあえず"hello"ってStringを返すだけのdefnを
javaから呼べるようにすることからはじめてみます。

223:デフォルトの名無しさん
11/12/03 18:30:08.22
>>222
最近MLで見たよ、その話。書いておいた。
Java から Clojure の関数を呼び出す
URLリンク(rd.clojure-users.org)

あと、Google Group の メンバーステータスを
「各メッセージが投稿されるたびに受け取る」にしておくのおすすめ。
メールがうざくないなら。

224:デフォルトの名無しさん
11/12/03 18:57:06.14
おいら、java側コードを道具としてつかっちゃうからjava側からclojureの関数呼び出すとかいう発想自体無かった
どんなときに有用なん?(出来ないのは困るってのはあるけど)


225:デフォルトの名無しさん
11/12/03 19:23:12.22
Javaアプリケーションのスクリプト環境として使う時?
GIMPのScript-Fuみたいな感じ

226:デフォルトの名無しさん
11/12/03 22:04:38.82
Clojureで作成したライブラリをJVMで使いたいときは、下記の機能知ってると、細かいところまで用意できるけど、
まず上に出てきた、コンパイル時の-Dclojure.conpile.path=classesと実行時の -cp classes:…、ソースの(:gen-class)とdefn -main[&args]で、javaのメイン関数的な呼び出しさえ出来れば良いんじゃないかと。(かleinのコマンドと設定)

227:デフォルトの名無しさん
11/12/03 22:05:26.14
Java Interop
URLリンク(clojure.org)
のSupport for Java in Clojure Library Functionsの項

Clojure で適切な型定義を選択 するためのフローチャート
URLリンク(cemerick.com)

228:デフォルトの名無しさん
11/12/04 09:51:34.33
>>227
わかりやすくて感動した!

229:デフォルトの名無しさん
11/12/04 10:12:52.20
>>227
壁紙にした!


230:デフォルトの名無しさん
11/12/04 16:28:18.48
Clojureの勉強のつもりで、EvernoteのAPIを使ってみようと。
んで、

(import '[com.evernote.edam.userstore UserStore$Client])

って叩いたら、
IncompatibleClassChangeError Implementing class java.lang.ClassLoader.defineClass1 (ClassLoader.java:-2)
とか怒られるんですよね-。
他のインナークラスは大抵importできるのに。implementsされてたらアカンいう事?

色々調べたけど、英語がそんなに得意でないこともあってもう限界。
だれか解決方法ご存知の人教えて下さい。

231:デフォルトの名無しさん
11/12/04 16:28:33.22
Clojureの勉強のつもりで、EvernoteのAPIを使ってみようと。
んで、

(import '[com.evernote.edam.userstore UserStore$Client])

って叩いたら、
IncompatibleClassChangeError Implementing class java.lang.ClassLoader.defineClass1 (ClassLoader.java:-2)
とか怒られるんですよね-。
他のインナークラスは大抵importできるのに。implementsされてたらアカンいう事?

色々調べたけど、英語がそんなに得意でないこともあってもう限界。
だれか解決方法ご存知の人教えて下さい。

232:デフォルトの名無しさん
11/12/04 16:42:30.39
大切なことなので2階言いました。

233:デフォルトの名無しさん
11/12/04 17:38:59.42
ミスっただけです

234:デフォルトの名無しさん
11/12/04 18:02:20.53
>>231
そのAPIを使ったことが無いので、ちょっと試してみたけど
そのコード自体は問題なく通ったよ

user=> (import '[com.evernote.edam.userstore UserStore$Client])
com.evernote.edam.userstore.UserStore$Client
user=>

自分がやった方法は
leiningenを使って、プロジェクト作ってlein depsした後
lib/以下にevernote-api-1.19/java/lib/に入ってあった
* evernote-api-1.19.jar
* libthrift.jar
の2つを置くだけ

そのエラーの原因は、メソッドやクラスの関係にズレが生じて
整合性がとれなくなるときに起きるエラーのようだよ

例示すると
"interface Aが定義された.classと、それをimplementsしたclass Bが定義された.classがあるとして
Aをabstract classとして定義し直して再コンパイルしたがclass Bのほうは古いまま"
のような場合に起きるらしい

>>231がどういう環境を使ってるかは良くわからないので
これでは解決にはならないかもしれないが、良ければ参考にしてくれ

235:デフォルトの名無しさん
11/12/04 18:37:59.57
>>234

おおお、ありがとう!
なんかかんやと出したり引いたり弄くっているうちにズレたのかも。

未知のバグだったら手も足も出んなぁ思っていたから、
そうじゃないと判っただけでもとても助かりましたです。

236:デフォルトの名無しさん
11/12/06 00:38:49.33
URLリンク(www.infoq.com)
JSR-310がJoda Timeそのままでは無いようなのだけど、
JVM言語はどうするんだろう。
すでにJSR-310の勝手バックポートがあるみたいだし、
ちょうどclojure1.4になにかしら用意したいという話から意見募集してるみたいだけど。
URLリンク(groups.google.com)

237:デフォルトの名無しさん
11/12/06 11:12:10.34
勝手→リファレンス
あと、記事のdate4jはjsr-310と無関係

238:デフォルトの名無しさん
11/12/08 04:46:02.38
よろしくお願いします。
リスト操作・lambdaの扱いが慣れていないlisper見習いなんですが、clojureを効率よく
勉強するにはclojureでの再実装を意識しながらsbcl or cclで実装してからcloujureで再
実装した方が基礎を固める意味で良いでしょうか?
それとも動くはずなのにエラーに苦しみながら何度も調べながらclojureで実装した方が
したっぽいが良いでしょうか?

clojureに慣れたらわざわざ他のclで実装する必要もなくなると思いますが。

239:デフォルトの名無しさん
11/12/08 08:45:00.24
動かないのなら、「動くはず」はただの思い込みだよ、ClojureでもCLでも
Clojureを学ぶのが目的なら最初からClojureをやればいいし
どのLisp方言を学ぶか選んでる最中ならCLと比較しながらやればいい

あと、念のために言うけど、Clojureの頭にCLの二文字が付いてはいるけど
SBCLやCCLのCL (Common Lisp)とは特に関係ない、別の言語だからね

240:デフォルトの名無しさん
11/12/08 12:07:36.94
驚き最小の法則()

241:デフォルトの名無しさん
11/12/08 12:42:22.08
Clojureは他のLisp方言に比べたらちょっと個性的だと思う。(破壊的処理
のところがね。副作用の部分をモナドで囲むようなHaskellのようなわけ方を
してる。もっともJava固有のコレクションや配列を直接扱うときはこの保護
機構を使わなくても書き換え可能)

242:デフォルトの名無しさん
11/12/08 12:55:58.35
>>239
Clojure is not CL.は知りませんでした。
後出しですがemacs lispも勉強したいのでCLベースで基礎を固めた方が良いのかな。
>>241
ちょっと個性的ですよね。記法を覚えていないとか、慣れの問題があるんでしょうけど。

243:デフォルトの名無しさん
11/12/08 13:46:12.60
Clojureは可変な値ではなく、refなどの可変な参照が指し示す値を変える事で可変な状態を扱う、って考え方だから
同じように「囲んで」いるように見えても、モナドとは考え方の背景が違うけどな
printlnみたいにむき出しにしてる部分も多いし、Clojureではそれも悪くはない

モナドが欲しい時はalgo.monadsを試すといい

244:デフォルトの名無しさん
11/12/08 16:01:06.27
>>242
JVM で動く CL 実装は ABCL 。
一応書いとくと、elisp も CL とは違うよ。

245:デフォルトの名無しさん
11/12/08 16:30:56.69
>>243
当然背景も考え方も違うよ。

246:デフォルトの名無しさん
11/12/08 16:53:57.78
>>238
ClojureはCommonLispとはかなり性格が違うので一緒にやると混乱するよ
EmacsLispも学びたいって言う事から察するとLisp族初めたばかりだと思うからいくつか助言するとしたら
1.Clojureから先に覚えれば、破壊操作が楽な他のLisp族へは移行が優しい
2.通常の言語で高度なプログラムが書けるならCommonLsipからやる方が優しい
3.興味や学術方面から入るならSchemeがオススメ

の3つの選択肢があるのでどれか一つから始めるといいよ。
どれから始めてもカッコが気にならなくなったらいつでも他のLisp族にうつれるから気にしなくて良いよ、ただし3つのどれも同時に始めるとLisp族が嫌いになると思うのでできれば一つに集中してほしい


247:デフォルトの名無しさん
11/12/08 18:50:09.35
>>244
I know "Emacs lisp is not CL".

Why clojure?
Clojureが流行っているのは大量書き込みに難があると噂だけど並列処理ができるから?
>>246
(1)重要な要素ではないです。(3)Schemeでcar, cdrを覚えました。そして、本格的にプログラミング
しようと思って、速くて下品そうなCLに移って来ました。CLはEmacs lispと多少コードの互換性がある
ので再利用できるのもCLを選びました。(2)高度なブログラムを書けないけど、CLが体に馴染んで来ました。
カッコがないとむしろ気持ち悪いくらいです。
自分の判断としては(2)のコースで必要があればClojureで再実装なのかな。今、そこまで実装したいと
いう気持ちはありませんが、簡易なBlogシステムとか、Web関連でちょっとした遊びがしたいですね。

248:デフォルトの名無しさん
11/12/09 01:38:27.41
既にCL使ってるのか、
それなら、CLでもweb frameworkあるよ。
比較するならclojureだとjavaのservletを使ったSaaSにデプロイするのという手段がとれるので楽だと思うけど。(Herokuなど)
あと、CLとClojure比較するのに参考になる話題ではないけれど、
java以外のJVM言語のなかでは言語の組み込みなデータ構造と機構だけで、
デーモン上にて大量のオブジェクトを扱った場合でも比較的ヒープの使い方がうまいらしい。
(1,2年前の話。良く分かってないけど、2GB以上ヒープメモリつかっても、GC周りの地獄になりにくい?)


249:デフォルトの名無しさん
11/12/09 08:25:12.93
ヒープの使用効率は永続的なデータ構造(persistent data structure)の影響かな
今年のClojure/conjで発表した人だと、Phil Bagwellが永続的なデータ構造の論文をいくつも発表している

250:デフォルトの名無しさん
11/12/09 08:50:14.37
>>248
Clojureであってもヒープを大量に消費すればfull GCが走って遅くなる
ただ、可能な限りデータ構造を共有する(不変性のおかげで、書き換えられる心配がないからコピーしなくてもいい)ので、例えば

(def a [1 2 3])
(def b (conj a 4))
(def c (conj b 5))

と書いても[1 2 3]と[1 2 3 4]と[1 2 3 4 5]をヒープに置く必要はなく
[1 2 3]と[<aの内容を参照> 4]と[<bの内容を参照> 5]を持っていればいい
これが>>249の「永続的なデータ構造」で、ヒープの効率向上に貢献する

実際の仕組みはもう少し複雑なので、正確に知りたい人はこれを読むといい
URLリンク(blog.higher-order.net)

251:デフォルトの名無しさん
11/12/09 10:04:41.70
>>250
これってCommonLispで明示的に書いてできないもんなの?

252:デフォルトの名無しさん
11/12/09 11:31:41.32
>>251
もちろん永続的データ構造を実装すればできる

253:デフォルトの名無しさん
11/12/09 11:46:21.54
Common Lispで永続的なデータ構造を実装した例
URLリンク(d.hatena.ne.jp)
ここで参照されてる"Ideal Hash Trees"はPhil Bagwellの論文

254:デフォルトの名無しさん
11/12/10 11:21:11.16
>>253
(loop FOR i FROM 0 TO 9 COLLECT i)という書き方が興味深かった。(loop For i From 0 To 9 Collect i)と
いう書き方ってコストじゃないからこういう書き方の方が良いのかな。

255:デフォルトの名無しさん
11/12/13 16:32:44.59
Amazonからお支払番号きた。
買う/買ったやついる?

1 Clojure in Action ¥3,652

256:デフォルトの名無しさん
11/12/13 19:46:51.46
買ったやつの大半はmanningからDL購入してると思われる。

257:デフォルトの名無しさん
11/12/13 20:43:49.40
>>255
こーてへんけど、本にはクーポンがついてて電子ブックは登録すれば
無料でもらえると思うよ。

258:デフォルトの名無しさん
11/12/13 23:06:58.99
>>255
e-book版ならだいぶまえに買ったよ


259:デフォルトの名無しさん
11/12/14 00:28:06.36
こーたり

260:デフォルトの名無しさん
11/12/15 20:22:03.70
やっと発売か

261:デフォルトの名無しさん
11/12/16 11:28:08.78
全体的な構成を変えたclojure1.3
出たタイミングだから、
いままでのバージョンアップの時より
なぜだというツイートが多かったりするね。

今後の本はどうするんだろう。
来年1月予定 450p
URLリンク(shop.oreilly.com)
来年2月 250p
URLリンク(pragprog.com)

262:デフォルトの名無しさん
11/12/16 17:23:19.39
どうするって何が?
Programming Clojureの2nd Editionは以前から1.3ベースって宣言してるし
オライリーのClojure Programmingも作者的に1.3非対応にはしなさそうだけど

263:デフォルトの名無しさん
11/12/16 17:51:33.97
牛のブライアンに直接聞いてみたらなんか返ってくるかも 笑
彼日本語(漢字)勉強してるみたいだから。

264:デフォルトの名無しさん
11/12/16 18:40:18.52
誰か、凸れ

265:デフォルトの名無しさん
11/12/17 20:22:59.00
ライブラリさがすのってここでいい?
URLリンク(clojure-libraries.appspot.com)
他にいいとこある?

266:デフォルトの名無しさん
11/12/17 20:25:08.39
>>265
URLリンク(clojars.org)
で苦労して探してたけどそこいいね


267:デフォルトの名無しさん
11/12/25 17:06:08.30
もちろんクリスマスはclojureを書いて過ごしたよね?俺だけじゃないよね?

268:デフォルトの名無しさん
11/12/25 17:43:08.92
>>267
イヴの夜は寒くて教会に行くのサボって、当日は顔を出して、ベイクセールで
募金したぐらい。あとはClojure : CL : Elisp : conf = 3 : 3 : 2 : 2で
オナっていたぜ。

269:!omikuji !dama
12/01/02 01:58:29.88
本年がClojure祭りでありますように

270:デフォルトの名無しさん
12/01/02 09:47:55.24
>>268
今の教会って、「イブ、とは前日の事ではない」と教えないのか。
ウリストじゃないよね?

271:デフォルトの名無しさん
12/01/02 10:39:59.70
そもそも午前零時に日付が変わる、という意識が一般化したのが近世ないし近代。
それ以前の慣習については、日の出または日没が日の区切りである可能性がある、
というのがごく一般的な話。

272:デフォルトの名無しさん
12/01/02 10:51:00.76
クリスマスに Compojure が1.0.0になってたのな

273:デフォルトの名無しさん
12/01/04 12:04:37.90
真夜中に一日の区切りを持って来る事については、天文学者が猛反対した、という話も。

274:デフォルトの名無しさん
12/01/04 17:49:53.49
連中は、今でも正午を区切りにしようとか画策してる秘密結社だからな。

275:デフォルトの名無しさん
12/01/05 14:50:53.81
30時間制っちゅうのがあって、朝6時に切り替えって発想は星方面にはあるよ。

276:デフォルトの名無しさん
12/01/05 15:23:45.59
ClojureでAndroidとかやってみたけど、当たり前だけど文法が変わっただけで、やることは手続き型だった。
適材適所って大事ね。

277:デフォルトの名無しさん
12/01/06 01:13:54.18
>>276
ラップして楽するようにすると面白いっすよ
つかAndroidでswankできてもうなんかモニョモニョしちゃうくらいもだえたぜ


278:デフォルトの名無しさん
12/01/06 03:32:20.41
梱包じゃ

279:デフォルトの名無しさん
12/01/06 10:58:55.34
苦労じゃ

280:デフォルトの名無しさん
12/01/06 12:07:59.48
>>277
なんか例えばこんな時に…みたいなのってある?
AndroidというとUI部品への値の読み書きがほとんどで、Clojureが活躍する領域が思い浮かばない。

281:デフォルトの名無しさん
12/01/08 07:04:35.90
contribっていつ1.3が出るのかと待っていたが、別々のライブラリに分かれたのか。
URLリンク(dev.clojure.org)
いろいろ減ったような?
みんな1.3に移行してる?

282:デフォルトの名無しさん
12/01/08 09:24:29.29
>>281
活発にメンテナンスされてなくて、メンテナーに立候補する人もいなかったライブラリと
既にclojure.jarに取り込まれてメンテナンスされているライブラリは移行してない
古いcontribもorg.clojure.contrib/standaloneかどこかで一応引っ張ってこれるはずだけど保証は出来ない

移行してないけどこれがないと困るってライブラリがあったら
IRCやMLで訊けば代替を教えてくれるし、メンテナーに立候補する手もある
実際、1.3リリース後に移行したライブラリもある

俺は今の所基本1.3でたまに1.4の様子を見てる

283:デフォルトの名無しさん
12/01/09 01:44:03.19
なるほど

284:デフォルトの名無しさん
12/01/12 22:22:46.37
swing utilsは代替がないね、


285:デフォルトの名無しさん
12/01/13 07:21:23.54
GUIFTWやSeesawを使えば良いんじゃね
GUIライブラリじゃなくてswing-utilsそのものが使いたいのなら、移行しないのか尋ねてくるといい

286:デフォルトの名無しさん
12/01/13 20:25:49.85
JavaしらんClojure使いだが。ちとJavaのことを知りたいなと思ってみたけど
本がわんさかあって、何がええやらよくわからんです。
初めてのRuby見たいな、他の言語習得者向きの本って無いんですかね?
洋書の安いのがあれば一番いいかも。
Head First Javaはamazon.comで売れてるみたいだし、検討中なんですがね。

287:デフォルトの名無しさん
12/01/13 20:54:44.82
PerfectJavaがおすすめ。網羅的に場広く解説さるてる。

288:デフォルトの名無しさん
12/01/13 22:36:12.43
>>287
ありがとう。今度本屋で確認してみます。:)

289:デフォルトの名無しさん
12/01/18 10:38:05.77
swank-clojure が動かない。
debian で
clojure 1.2.1
leiningen 1.6.2
をインストールして、

$ lein plugin install swank-clojure 1.3.4

~/.lein/bin/swank-clojure の
CLASSPATH="/home/なんとか/..." を "$HOME/" に(多分これはバグ)変更。


290:289
12/01/18 10:38:34.35
$ ./.lein/bin/swank-clojure
Exception in thread "main" java.lang.IllegalArgumentException: Wrong number of args (0) passed to: swank$-main (NO_SOURCE_FILE:0)
at clojure.lang.Compiler.eval(Compiler.java:5440)
at clojure.lang.Compiler.eval(Compiler.java:5391)
at clojure.core$eval.invoke(core.clj:2382)
at clojure.main$eval_opt.invoke(main.clj:235)
at clojure.main$initialize.invoke(main.clj:254)
at clojure.main$script_opt.invoke(main.clj:270)
at clojure.main$main.doInvoke(main.clj:354)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at clojure.lang.Var.invoke(Var.java:373)
at clojure.lang.AFn.applyToHelper(AFn.java:167)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.main.main(main.java:37)
Caused by: java.lang.IllegalArgumentException: Wrong number of args (0) passed to: swank$-main
at clojure.lang.AFn.throwArity(AFn.java:437)
at clojure.lang.RestFn.invoke(RestFn.java:399)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invoke(core.clj:540)
at user$eval1637.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
... 11 more


291:デフォルトの名無しさん
12/01/18 13:56:10.59
>>290
$ lein swank
じゃねーの?


292:289
12/01/18 22:17:50.98
>>291
URLリンク(github.com)
ここ見てやっていたのだけれど、さっきできた。
$ lein new myproject
して、Emacs 上で myproject に移動後 M-x clojure-jack-in するだけではだめ。
myproject に空の core.clj を作ってから M-x clojure-jack-in でできた。

project.clj の書き方も分からないので、
問題の切り分けのためにスタンドアローンのサーバを立ち上げようとしたけれど、
(それは今もできないけれど)まあいいや。

293:デフォルトの名無しさん
12/01/19 07:02:32.08
>290 のところは、>291 ではなくキャンセルして、最近おすすめのclojure-jack-in使ったんだよね?

あと、.emacs.elあたりにreqire 'clojure-modeがあると、拡張子がcljならclojure-modeを呼び出す状態になってる。
さらに、clojure-modeならswank-clojure関連でclojure-jack-inが呼び出せるようになってる。
みたいな感じをイメージを想像出来るといいね。

clojureある程度やってみたら、
少しemacsとjavaのことも勉強すると周辺環境の理解が深まるかも

294:デフォルトの名無しさん
12/01/19 22:02:50.63
>>293
流れとしては
1. プロジェクトを作らないとサーバが起動できないらしい
2. 作ったけど、 M-x clojure-jack-in で起動できない
3. project.clj かプロジェクト下の他のファイルが悪いのかも、でも何が悪いのか分からない
4. プロジェクトを作らない方法もあるから、そっちを試そう
5. 4 も駄目だ
6. $ lein new myproject すると Look over project.clj and start coding in myproject /core.clj
とでていたので、 myproject /core.clj を作ってから M-x clojure-jack-in するとできた

という感じ。
Emacs + slime で Common Lisp は以前から使っていたけれど、
JAVA は久しぶりにインストールしたよ。

295:デフォルトの名無しさん
12/01/29 08:41:16.28
scalaよりは名前カッコいいしLISPerの後押しもあるしで
そこそこ流行りそうだな

296:デフォルトの名無しさん
12/01/29 09:30:34.90
少なくとも日本ではScalaの方がずっと多く本出てるし
Lisperと言ってもそれぞれ好きな方言があるだろうからなぁ……
俺はどちらでもないから分からないけど、多分CLerやSchemerは
「Clojure(に〇〇があれば|が〇〇だったら)もっと良かった」って点をいくつか挙げるだろうし

297:デフォルトの名無しさん
12/01/29 14:11:22.03
>>296
javaから来たらscalaの方が覚えるのは楽だと思う
lispしってりゃclojureの方がreplで楽ができるから俺はclojureの方が学習コスト低かったけど


298:デフォルトの名無しさん
12/01/29 20:48:28.62
Tiobeの最新ランキング見ると Groovy > Scala > Clojureらしいね。
Lisp(CL?)が13位でRubyの次にランクインしていたのには驚いたな。

URLリンク(www.tiobe.com)

299:デフォルトの名無しさん
12/01/31 08:57:49.42
本当にScala流行るかわからんし少なくともすぐ流行るとも思えないから
Java使いが取り敢えずで新しいことやりたいならClojureという選択肢もありなのかな

300:デフォルトの名無しさん
12/01/31 09:23:04.95
>>299
むしろアリだと思うよ、Lava使いがLisp族を覚えるのにこれほど適した言語は無いし
覚えて損することも無い

301:デフォルトの名無しさん
12/02/01 04:40:16.59
scala は一時的なもんだろうな。一部引き始めてるから、大きなうねりには
ならんだろう。
なによりコミュニティが北斗の拳だし・・・。

302:デフォルトの名無しさん
12/02/01 10:31:25.95
Clojureは j の点の部分を四葉か三葉のクローバー、下をクローバーの
茎に見立てたデザインにすればきっと格好良くなる

303:デフォルトの名無しさん
12/02/02 10:35:09.95
>>301
北斗の拳?

304:デフォルトの名無しさん
12/02/02 12:26:39.16
>>301
「おまえは既に死んでいる」と言う事かな?


305:デフォルトの名無しさん
12/02/02 15:31:09.29
モヒカンがヒャッハーみたいな
世紀末でカオスな状態になってる
ってことだろ多分

306:デフォルトの名無しさん
12/02/02 19:36:14.88
うん。殺伐ってこと

307:デフォルトの名無しさん
12/02/02 22:20:58.87
へえ。そんなに殺伐としてるのか。

308:デフォルトの名無しさん
12/02/02 22:30:44.55
水嶋の真似をしようとした連中が、scala初心者に対して学術風味なご高説を垂れてるらしいな。
で、中にはご高説同士で「当然論文はご覧になってますよね?」的なノリの人格批判でうぼぁー。

って聞いた。

309:デフォルトの名無しさん
12/02/03 00:11:29.21
北斗の拳って言うからてっきり「今日より明日なんじゃ…」って言いながら非互換変更入れたり
自分のライブラリが標準ライブラリに採択されたら「神はわれわれを選んだのだ!」って叫んだりしてるのかと

310:デフォルトの名無しさん
12/02/04 09:35:57.89
名指しで他のコミュニティのことはとやかく言わないようにしよう。
誰も得しない。

311:デフォルトの名無しさん
12/02/04 18:33:47.97
URLリンク(clojurewest.org)
clojure/west 講演一覧
講演したことある主要clojure開発者のtwitterアカウントの8割ぐらいいってそう。


312:デフォルトの名無しさん
12/02/04 18:39:36.54
osxにて、HomeBrewのcake.rbがなくなって、
brew install cakeでは、いけなくなっていた。
gemからはいけた。

古いHomeBrewのcake.rbでは、-HEADオプションつければ入るが、結局動かなかった。
たぶん、gem install cake使ったhomebrewのcake.rb書けばいいんだろうけど。

313:デフォルトの名無しさん
12/02/07 22:09:58.98
emacsのcompilation-error-regexp-alist
に良い指定の方法ないかな?、自分がやるとスタックトレースに出てくる方までひっかかっちゃって


314:デフォルトの名無しさん
12/02/10 19:28:22.44
emacs使った開発をしようとしていますが、
regionを関数に抽出したりするなどの、リファクタリングや
括弧の数が合わなければ色を変えて、教えてくれるなどの機能は、どんなプラグインを入れれば良いでしょうか。

ベタなコードをkill/yankで別関数に抜き出すと、括弧の数が合わなくなったりして、
よく無駄にハマる時間ができてしまいます。

あと今はparedit, clojure-mode, slimeをいれていますが、その他clojure開発でオススメがありましたら教えていただけると嬉しいです。

315:デフォルトの名無しさん
12/02/10 20:22:33.58
paredit使ってるなら括弧の数合わなくなることはあんまないでしょ。
あー、キルヤンクの時ね。C-Spaceとかで手動で範囲指定するとあわなくなるけど、
C-kやM-C-@とかで括弧単位でコピペするのが楽だね。
swank-clojure使ってるならC-c C-k すれば大体のエラー箇所は教えてくれるよ。
括弧の数合わないとか定義されてない変数使ってるとか。

316:デフォルトの名無しさん
12/02/10 22:28:15.46
>>314
URLリンク(www.emacswiki.org)
括弧関係だとこんなのもある
ちょっと目に来るのでつかわなくなってしまったけど


317:デフォルトの名無しさん
12/02/11 01:25:15.07
Clojure でのツリー・ビジター
Java の Visitor パターンを関数型 zipper で更新する
Alex Miller, Senior Engineer, Revelytix
URLリンク(www.ibm.com)

もっと日本語版もある技術サイトに載って、興味もってくれる人が増えるといいな

318:デフォルトの名無しさん
12/02/11 05:06:32.53
後方互換性にとらわれないとはいっても、
プログラミングClojure第一版のコードすら結構動かないものがあるというのはどうかと。
仕様が固まってくるまでどれくらいの時間がかかるのかな。

319:デフォルトの名無しさん
12/02/11 07:09:41.76
いま固まりました

320:デフォルトの名無しさん
12/02/11 08:25:05.41
1.3では、大幅変更があったからなぁ。
高速化はどんどん期待したいけど、仕様変更だけは、4,5年くらい
変更なしでも動くような事のほうが使いやすいよね。

321:デフォルトの名無しさん
12/02/11 09:01:56.88
プログラミングClojure第一版は1.0(日本語版は訳者による開発中の1.1に基づいた脚注あり)だな
コアに取り込まれたcontribライブラリを使ってたり(例、c.c.duck-stream→c.c.io→clojure.java.io)
typeやprotocolにまったく触れてなかったり、proxyはあるけどreifyはなかったりと
1.1~1.2の変化も書かれてないから、1.2でもちょっと古いコードになるな
原著第二版は2012-03-06発売予定か

322:デフォルトの名無しさん
12/02/11 14:08:31.04
JVMに縛られてる限り駄目だわこの言語

323:デフォルトの名無しさん
12/02/11 14:46:55.26
釣りにつられて スルーができるのか?みなさん

324:デフォルトの名無しさん
12/02/11 15:36:06.63
>>322
一度でいいからRichが書いてる事読んでから言えよ
JVMにこだわっているのじゃなくPlatformからの独立について語ってるって知るべき.


325:デフォルトの名無しさん
12/02/11 15:36:54.73
俺は後方互換性なんてあんまり考えないで欲しい。
より良い言語になるなら。

326:デフォルトの名無しさん
12/02/11 16:04:56.06
言語が良くなってもライブラリが付いてこないからな。
黒板言語と呼ばれて良ければそれでもいいんだろうが…。

327:デフォルトの名無しさん
12/02/11 23:56:07.41
>>326
javaライブラリの利用はさほどむつかしくないから、そうとはならないと思うが。

328:デフォルトの名無しさん
12/02/12 00:23:16.62
しばらくclojureを追っかけてなかったけど、contribの事どうなったの?
動向を追いかけてる人いるの?

329:デフォルトの名無しさん
12/02/12 02:19:34.16
clojure1.4.0-beta1、1.3から1.4でなにが変わったかあまりよく分からないが・・・
URLリンク(groups.google.com)


330:デフォルトの名無しさん
12/02/12 02:37:03.91
contribのことは、ここらへんにまとまってる。
URLリンク(dev.clojure.org)
URLリンク(dev.clojure.org)

next release (現在は1.4)
URLリンク(dev.clojure.org)


331:デフォルトの名無しさん
12/02/12 05:31:03.26
instant literal とかいうのが入ったね。
使いどころがよくわからんが。

332:デフォルトの名無しさん
12/02/12 06:33:42.28
何それ

333:デフォルトの名無しさん
12/02/12 07:58:07.39
変更点はgithubのcommitsをブラウザで見るか、ワーキングツリーが手元にあるならgit logでとりあえず見られる

>>332
URLリンク(dev.clojure.org)
URLリンク(dev.clojure.org)
URLリンク(github.com)

334:デフォルトの名無しさん
12/02/12 09:13:52.03
>>330
さんくす。 大分整備が進んでるね。

335:デフォルトの名無しさん
12/02/12 12:24:55.66
clojarsのリポジトリとかがClojureのバージョン別に検索しやすくなってくれないと正直leiningenやcakeで困るわー


336:デフォルトの名無しさん
12/02/12 15:29:40.80
ライブラリの最新バージョンとかいちいち調べるのすごいめんどい。

337:デフォルトの名無しさん
12/02/12 16:17:15.41
URLリンク(github.com)

338:デフォルトの名無しさん
12/02/12 16:34:33.72
Clojureとライブラリのバージョン対応の問題は1.3.0以降急激に増加しているので、
なんとかmaven系の設定ファイルで管理してほしいところではある。

339:デフォルトの名無しさん
12/02/12 16:38:15.07
clj-httpがメンテナーが変わって、clojure, contribみたいにCIツール使ってて、こっちは、githubから使えるものを使ってた。
ビルド失敗マークが付いていてなにか大きな変更があるのかとおもったら、lein2へ移植中となっていた。
チュートリアル URLリンク(mmcgrana.github.com)
現在のmaster URLリンク(github.com)
CI URLリンク(travis-ci.org)

leiningenのmasterブランチでは、2.0.0を準備中で結構変わるみたいだね。
URLリンク(github.com)
URLリンク(github.com)

340:デフォルトの名無しさん
12/02/12 16:47:28.82
URLリンク(github.com)
複数のclojureバージョン対応project.cljは、lein multiでなんとか作れるけど自動でバージョンチェックしてはくれないからな・・・

341:デフォルトの名無しさん
12/02/12 16:55:10.64
1.3リリース以降*db*関係でSQL系ライブラリが大混乱
これなんとかならんかなぁ
1.3の数値primitive指定使ったチューニング凄いんだけどDBでclojureql使いたいと思うとvarのdynamic指定関係でライブラリが選択しにくい(というかclojureのメインバージョンに引きずられる依存関係の解決ができない)


342:デフォルトの名無しさん
12/02/12 18:37:43.83
気付いたらパッチを送ってくれると大勢が助かる

343:デフォルトの名無しさん
12/02/13 22:13:47.17
URLリンク(disclojure.org)
pycljとかlein-scalacとか何じゃろう?


344:デフォルトの名無しさん
12/02/13 22:44:35.73
>>315,316
遅くなりましたがありがとうございます。
RainbowDelimetersはこちらの黒背景だとそこまで目にうるさくないし、
明らかに足りないところは赤で分かりやすいのでちょうどいい感じです。

またお伺いしたいことがあるのですが、swank-clojureでエラーが消えません。
再現方法は
1. 適当にlein newでプロジェクトを作ります。
2. core.cljで (defn xxx [] (+ 1 2)) というコードを書きます。
3. clojure-jack-inでswankを起動します。ここでrepl上で (xxx)を呼ぶと、当然3が返ってきます。
4. ここで間違ってreplで (xx) と呼ぶと、Unable to resolve symbol: xx in this contextが返ってきます。
5. 以降、repl上でどんなコードを入力しても、Unable to resolve symbol: xx in this contextが返るようになります。
  (xxx)を呼ぶと、別bufferにエラーが表示され、replには 3 が返ってきます。
 C-c C-kをしてもダメで、emacsを再起動すると(というかswankを再起動?)、また正常になります。

emacsは23.4.1でclojure-modeは1.11.5(Marmaladeで落としました)、OSはMac OS 10.7.3です。
エラー情報をクリアするようなコマンドはありますでしょうか。

345:デフォルトの名無しさん
12/02/14 00:23:54.01
アメリカではClojureの本が最近、結構出版されてるな

346:デフォルトの名無しさん
12/02/14 00:43:02.80
>345
Clojure In Action
Joy of Clojure
Clojure Programming
の他にもでたん?


347:デフォルトの名無しさん
12/02/14 10:30:57.26
The little clojure
The reasoned clojure
The seasoned clojure
Land of Clojure
。。。妄想でどうぞ。

348:デフォルトの名無しさん
12/02/14 17:44:50.72
>>347
Land of Lispは買ったんだがなぁ、あのビデオクリップDVDでだしてくんねぇかな


349:デフォルトの名無しさん
12/02/14 21:58:15.04
URLリンク(pragprog.com)
3/6予定にはなってるが、どうだろう?

350:デフォルトの名無しさん
12/02/14 22:06:20.81
URLリンク(www.manning.com)
Marzのbigdataも、どれぐらいclojureの記述があるのかな。
DSLとして取り上げるのはclojureだとおもうが、目次からは推測出来るところがない。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch