1read 100read
2013年01月プログラム69: 【Lisp】プログラミング言語 Clojure #2【JVM】 (659) TOP カテ一覧 スレ一覧 2ch元 削除依頼
サウンドプログラミング5 (697)
Embarcadero RAD Studio/Delphi/C++Builder その3 (779)
懐かしのMS-DOSプログラミング (385)
C言語なら俺に聞け(入門編)Part 111 (1001)
WindowsDDK各種についてのスレ (750)
HSPプログラムコンテスト2011【part 2】 (452)

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


1 :2011/10/13 〜 最終レス :2013/01/15
JVM上で動作するLisp方言「Clojure」のスレ。
Clojure - home
http://clojure.org/
http://www.try-clojure.org/
前スレ:
【Lisp】プログラミング言語 Clojure【JVM】
http://hibari.2ch.net/test/read.cgi/tech/1255533519/

2 :
【リファレンス】
API Overview - Clojure v1.3 (stable)
ttp://clojure.github.com/clojure/
Clojure-contrib API Reference
ttp://richhickey.github.com/clojure-contrib/index.html
ClojureDocs
ttp://clojuredocs.org/
Clojure Examples Wiki
ttp://clojure-examples.appspot.com/
逆引きClojure (日本語)
ttp://rd.clojure-users.org/
Rosetta Code
ttp://rosettacode.org/wiki/Main_Page
clojure-euler
ttp://clojure-euler.wikispaces.com/
【ブログ・ML・質問箱】
Clojure
ttp://groups.google.com/forum/#!forum/clojure
Clojure Dev
ttp://groups.google.com/forum/#!forum/clojure-dev
planet clojure
ttp://planet.clojure.in/
stackoverflow.com tag:clojure
ttp://stackoverflow.com/questions/tagged/clojure
github.com clojure
ttp://github.com/languages/Clojure
Clojure-jp (日本語)
ttp://groups.google.com/forum/#!forum/clojure-ja

3 :
【チュートリアル】
Clojure Programming
ttp://en.wikibooks.org/wiki/Clojure_Programming
labrepl (おすすめ)
ttp://github.com/relevance/labrepl
4Clojure
ttp://www.4clojure.com/
Clojure - Functional Programming
ttp://java.ociweb.com/mark/clojure/article.html
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
PCL -> Clojure (Practical Common Lisp のサンプルコードを Clojure に)
ttp://blog.thinkrelevance.com/2008/9/16/pcl-clojure
【コーディング規則】
ttp://en.wikibooks.org/wiki/Learning_Clojure/Coding_Conventions
Library Coding Standards
ttp://dev.clojure.org/display/design/Library+Coding+Standards

4 :
【その他】
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
【本】
Programming Clojure
ttp://www.pragprog.com/titles/shcloj/programming-clojure
ttp://www.amazon.co.jp/dp/4274067890 (日本語版)
The Joy of Clojure (本は電子ブックがついてくる 要 manning 登録)
ttp://joyofclojure.com/
ttp://www.amazon.co.jp/dp/1935182641
ttp://www.infoq.com/jp/articles/the-joy-of-clojure
Practical Clojure
ttp://www.apress.com/9781430272311
ttp://www.amazon.co.jp/dp/1430272317
Clojure Programming
ttp://shop.oreilly.com/product/0636920013754.do
ttp://www.amazon.co.jp/dp/1449394701
Clojure in Action
ttp://www.manning.com/rathore
ttp://www.amazon.co.jp/dp/1935182595
【テンプレ終了】
テンプレ収集場所 http://tinyurl.com/clojure-2ch (ID:guest Pass:cl)

5 :
京都大学霊長類研究所では、未知の感染症が蔓延し、
感染した研究員はどのスレッドにも同じコピペを
繰り返すといった症状が報告されています。
研究員によると思われる書き込みがあっても
近づかないようにしてください。
                  京都大学

6 :

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

7 :
lispで書かれた実用的なソフトってなんかあるのか?

8 :
Emacsとか初代Yahoo!のWebsiteとか。

9 :
http://www.byflow.com/ はClojureで作ってるらしいね
開発者ブログとか始めてくれないかな

10 :
人工知能のための超マイナー言語とおもっていたが、
結構面白いことできるんだな。

11 :
最初に発明された頃人工知能の研究がブームだったので自然にそれに
使われた例が初期には多いってだけなんだが

12 :
当時GCを持つ言語がLispぐらいしかなかったってのが大きい
人工知能みたいな大きな問題をGCがない言語でやりたいとは思わん

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

14 :
>>7
Lispだと却下される案件でもClojureだとWarファイルで納品できるので通ったりする
実際2つほどプロダクトをリリースしてる。
今3つめの案件をClojureで書いてる

15 :
いいね。実運用での所感聞かせてよ。

16 :
eclipseでもemacsでもswank経由のREPLで即時実行テストができるのでコードが完成系になる為のサイクルがもの凄く短い
HTMLテンプレート展開はPHPとかのフロントエンドとデザイナ組に任せてバックエンドのロジックをringでガンガンつくっておいて、実サーバではTomcat等にWarで渡せる
なので実運用時のメンテコストも既存のservletと変わらないが開発サイクルが短いのとプログラマが嬉々としてコード書くのでチームのモチベーションが高い
最初上を説得するの大変だったんだけど、あっという間にプロダクトがリリースできるのを目の当たりにさせたら通った。
#ドカタが戦力になったというか

17 :
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 :
自己レスです。
要は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 :
eclipse/netbeans/inteliJで、mavenやleinningen、cakeのmaven経由で管理できるんだろうけど
IDEとの連携ってそれで機能するのかな

20 :
lein-eclispを入れればいい。

21 :
inteliJはla clojure+leiningen プラグインを入れる。eclispよりか
こっちのほうが出来がいいと思う。

22 :
前スレが埋まる前に新スレ使っちゃうのがクロージャ使い
ユーザーの民度が低い言語です

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

24 :
>>23
うん、お前が悪い

25 :
チュートリアルみたいなのを作って、啓蒙するとか。
Clojureは、チュートリアル的なものが少ない。英語でも。

26 :
簡単なところなら、演習問題や実例は99problemsやProject Eulerを使えばいいしね。

27 :
>>25
>>3のlabreplはマジオススメ

28 :
>>16
>プログラマが嬉々としてコード書く
kwsk.....。

29 :
結局、JVMを捨てて.NETメインにするまではマイナー言語のままなんだよな。

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

31 :
Clojure1.3です。
defvar ってよくわからないんですが、
どういう働き、使い方をするんでしょうか。
変数を初期値とドキュメント文字列で定義する、もののようなので、
下記のようにしていますが、エラーがでます。。
(defvar vartest 123 "document")
(println vartest (class vartest))
defvar が何かわからないというエラーなんですが。。
def と同じような働きをすると思って、使ってみたんですが。。

32 :
(defvar vartest 123 "document" )

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

33 :
defvar 使うと、
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: defvar in this context
というエラーが出てしまうんですよね。
インストールの仕方が悪いのでしょうか。。

34 :
https://github.com/getwoven/clj-time/pull/13
もしかして、1.3では、defvar はデフォルトで削除されている??

35 :
see http://clojuredocs.org/clojure_contrib/clojure.contrib.def/defvar

36 :
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 :
s/docstring→内容/名前→docstring→内容/

38 :
なるほど。そういう流れだったんですね。

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

40 :
アヘン吸わせると良いのか

41 :
>>39
それはぜひどこかの媒体で発表してもらいたいな。Clojure党支援につながる 笑

42 :
BASICを知らない新人が多いのは想像できるが
今時REPLを知らない新人が多いなんてことがあるのか

43 :
まだ「プログラミング教育はJavaでやってます()」って結構多いだろ
Windowsしか使ってないとテキスト端末環境を使うことにすら慣れない奴も多いし

44 :
まるでプログラミング教育をJavaでやるのがおかしいかのような書き方だな

45 :
>>44
初めて使う言語スレに移動すればこの手の話はいっぱい出てる。これを話しだすと
フレーム論争になるし、オフトピになってしまう。

46 :
>>41
ここに書いただけでもばれたらやばいので雑誌や論文誌でとかミリ

47 :
うん

48 :
煽りでもなさそうなのに「ドカタ」とか「Java()」みたいなことを平気で書いてしまうのは痛いな
プロダクトを2つリリースして今3つめって、見る人が見れば一発でバレるようなことを書いといて
バレたらやばいってのも意味が分からん
ちょっと頭の弱い人なのかな…
こういうのがいると言語自体の印象が悪くなるし、ホント迷惑だわ

49 :
2チャンの中ってほんとキチガイめいた人(キチガイかもしれない。)が
いて、行動の善悪の判断がずれてる人がいるから慎重になったほうがいい
ところ。彼らの思い込む正義のためなら何でもしてしまう危険な連中がい
るから。
JavaをしらんからJava()で煽りになるんかどうかすら俺は知らん。土方は
この板じゃ差別用語なのは知ってるが。

50 :
KCLの御大がご退官されるとのこと。

51 :
Smalltalkだったら失神するな

52 :
東大京大どっち?

53 :
lispスレに書き込むべきだったが誤爆したな。
京大のほう。

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

55 :
>>54
スレの1からのリンク集いおいてある。

56 :
FP Day 2011, Cambridge UK
http://www.fpday.net/fpday2011/programme.php
名前に対してこじんまりとしたイベントだけど、
キーノートにMSRのhaskellとF#の御仁が来て、
Hands-onとCaseStudyには追加でClojureコースがあったという。

57 :
Clojureで、 [ ]括弧を使うのは、
let, defn の仮引数部 ,with-open とかだけど、
これらに共通するのは何か??
なぜ、def では[ ] 括弧を使わないのだろうか。。

58 :
defを含むスペシャルフォームだと、let,fn,loop
http://clojure.org/special_forms

59 :
シンタックスの一部としてベクタを要求するフォームは主に二種類ある。
・引数を表すベクタ(例:fn、defn、defmacro)
・その式の「内側」で有効な束縛を作るベクタ(例:let、binding、dotimes、loop)
defはそのどちらでもない

60 :
あ、引数のベクタも書式は名前と値のペアではないが
「内側」で通用する束縛を作っている点で共通すると考えてもいいな

61 :
Lispの生みの親が逝ってしまった・・

62 :
クソ言語生み出した奴は死んで当然

63 :
>>62 死んで詫びろ今すぐ

64 :
ClojureのSTMは使い物にならない ? JUMPERZ.NET Blog
ttp://kanatoko.wordpress.com/2011/05/06/clojure_stm_too_slow/
Clojure での並列プログラミングはシンプルな記述も出来ない、パフォーマンスも悪い、という事ですが。
Clojure はマルチスレッドプログラミングの複雑さを解決するとか聞いていたのに、話と違うような気が……
どう思いますか?

65 :
またそれか

66 :
あまり共有せずイミュータブルな構造に見合った設計すればいいんじゃないかな?
最近なイントロ用スライド
https://github.com/strangeloop/2011-slides/raw/master/Sierra-ClojureIntro.pdf

67 :
https://github.com/strangeloop/2011-slides/blob/master/README.md
Richyの講演 simple made easyのビデオ

68 :
https://github.com/strangeloop/2011-slides/raw/master/Marz-Storm.pdf
http://github.com/strangeloop/2011-slides/raw/master/Tellman-EventDrivenProgrammingInClojure.pdf
こういうのやってるぐらいだから、なんとかなんじゃないの?

69 :
>>64
匿名でブログことは余りコメントしたくないな。コード規約的に余り見たくないんだよな。

70 :
>コード規約的にあまり見たくない
日本人の方、いらっしゃいましたら翻訳をお願いします

71 :
_で始まる変数がキモイとかそういうことかしらね?

72 :
他人のコード見ると、コード規約を忘れてしまう、とエスパー。

73 :
> 匿名でブログこと
日本語でおk

74 :
ensureとかcommuteとか
http://www.slideshare.net/kakuda/clojure-3844723
http://www.slideshare.net/marblejenka/clojurestm
変更を観測するadd-watchというのがあるのか
http://groups.google.com/group/akka-user/browse_thread/thread/ff909a4cd9f6159c
http://java.ociweb.com/mark/stm/STM_1up.pdf
あとは、retry回数とかの統計も欲しい。

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

76 :
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 :
クオートというよりは、
あるいは、デフォルトの、
変数や、シンボルの扱いが違うのでしょうか?
その辺り教えてください。よろしくおねがいします。

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

79 :
あ、言語の違いではあるな。クォートの違いではない。ごめん。

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

81 :
http://toki.2ch.net/test/read.cgi/scienceplus/1319679294/

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

83 :
elispのadd-to-listでは、
foo-bar-listというシンボルが何を束縛するかを変更するから、
foo-bar-listをクオートしてシンボル自体をadd-to-listに渡す必要がある。
普通のClojureの関数?では、
シンボルが何を束縛するかを変更するのではなく、
シンボルが束縛してる物の状態を変えるから、
シンボル自体を渡す必要が無く、シンボルが束縛してる物を渡せば良い。
したがってシンボルをクオートする必要が無い。

84 :
lein-multi, clj-stacktrace, slingshot, lein-difftest, robert-bruce
http://technomancy.us/154

85 :
1.3系って1.2の頃とcontribの扱いが違うのですげー戸惑っちゃうんだけど、感覚的に行き先がわかるようなドキュメント転がってないかな。

86 :
1.2でもばらばらのやつ使えるってあるけど、coreに取り込まれた奴はどうすればいいんだ。
>85 感覚的か分からんけど
概要や関数名インデックスで検索とか
API Overview -clojure-contrib v1.3 (in development)
http://clojure.github.com/clojure-contrib/branch-master/index.html
開発サイトのドキュメント(まとめ、新旧対応表)
http://dev.clojure.org/display/doc/Clojure+Contrib
http://dev.clojure.org/display/design/Where+Did+Clojure.Contrib+Go

87 :
>>86
おおー、この最後のリンクだわ欲しかったの
感謝感謝!

88 :
1.2でコアに入ってなくて、1.3で入ったcontrib由来のライブラリって何があったっけ

89 :
2週間で80レスか。22−3週でレスを消費するペース

90 :
http://www.cafepress.com/technomancy?utm_medium=cp_social&utm_source=addthis&utm_campaign=CafepressShop#.TqoexsC5DuE.twitter

91 :
LeiningenよりかClojureのロゴが入ってるマグカップが欲しいわ。

92 :
>>91
いいなそれ
Land Of Lispでもいいや

93 :
この際、Half-Lifeでもいいよ

94 :
>>93
λしか合ってねぇ

95 :
http://www.zazzle.co.jp/clojure?st=date_created&ps=15#products
そこのサイトもこちらのサイトも勝手に作れるのかな?
マグカップは無いようだ、、

96 :
先月22日に、ClojureCLRの(開発者ほぼひとりなので個人でなく)公式blogが始まってた。
いきなり10日間の利用調査をおこなって、
http://clojureclr.blogspot.com/2011/10/2011-clojureclr-survey-is-open.html
結果発表してる。
http://clojureclr.blogspot.com/2011/11/results-of-2011-clojureclr-survey.html
clojure(.core)1.3の99%機能実装してる
javaのweb,db環境に依存してる
開発環境に不安
CLRのジェネリックスのサポートがない
monoで動かない
調査中2人しか個人利用でも常時使ってない
など、いろいろ書いてあった。

97 :
GUIやDB操作のClojure独自の使用できないのかね

98 :
>>97
使用×
仕様

99 :
>>97
jdbcとかコネクションプールとか、チョロく使えすぎるのでだれもわざわざ書いたりしないんだよね

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【SL4】Windows Phone 7 アプリ開発スレ Part4【XNA】 (274)
Ruby 初心者スレッド Part 50 (947)
main以外★mallocの後にfree不要と言うバカいるの? (457)
C#で仕事ある? (816)
C、C++の最適化について語るスレ 3 (833)
★初心者以前の質問に雪崩のように答えるスレ★ (400)
--log9.info------------------
ベーマガ総合スレ (902)
Wizardryについて語ろう 83 (607)
有野課長に挑戦してもらいたいゲーム (694)
ネオジオNEOGEO総合スレ (636)
X68000 (947)
PC-8801系ゲーあれこれ Part44 (459)
□■□■パネルでポン■□■□[!]で9個消し (813)
スーパーメトロイド (206)
FC天地を喰らうを語るスレ8 (264)
【SBO】ブラックオニキス総合スレッド【FC】 (431)
マニアックマンション (389)
今日買ったレトロゲームソフトを報告するスレPart6 (979)
ヨッシーアイランド 4ワールド (631)
エルナークの財宝 (754)
ガイアポリス-黄金鷹の剣- 第2の鍵 (829)
【総合】ボンバーマンスレッド5 (266)
--log55.com------------------
★2ch.scは何故失敗したのか
★クロール批判要望スレ
★削ジェンヌに文句ある人集合
★迷惑行為報告担当 - 小さな親切募集中 2
★2ch.scへの要望スレ Part3
★かっこう観測所
★スレ立て人キャップ
★2ch.scニュース系板観測所