2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

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

1 :デフォルトの名無しさん: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/

2 :デフォルトの名無しさん:2013/09/28(土) 11:12:57.06
【リファレンス】
API Overview - Clojure v1.5 (stable)
ttp://clojure.github.io/clojure/
Clojure Libraries (Clojure Contrib, Leiningen, ...)
ttp://clojure.org/libraries
API Overview - clojure-contrib v1.2 (stable) ※廃止
ttp://clojure.github.io/clojure-contrib/
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/

3 :デフォルトの名無しさん:2013/09/28(土) 11:13:29.98
【ブログ・ML・質問箱】
Clojure
ttp://groups.google.com/forum/#!forum/clojure
Clojure Dev
ttp://groups.google.com/forum/#!forum/clojure-dev
Clojure Confluence wiki
http://dev.clojure.org/
Clojure JIRA tickets and patches
http://dev.clojure.org/jira

planet clojure
ttp://planet.clojure.in/
stackoverflow.com tag:clojure
ttp://stackoverflow.com/questions/tagged/clojure
Reddit(clojure)
ttp://www.reddit.com/r/clojure
github.com clojure
ttp://github.com/languages/Clojure
Clojure-jp (日本語)
ttp://groups.google.com/forum/#!forum/clojure-ja

4 :デフォルトの名無しさん:2013/09/28(土) 11:22:49.04
【チュートリアル】
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
Full Disclojure (中級者向け;英語動画)
ttp://vimeo.com/channels/fulldisclojure

【コーディング規則】
Library Coding Standards
ttp://dev.clojure.org/display/community/Library+Coding+Standards
コミュニティベースのClojureスタイルガイド(bbatsov/clojure-style-guideの日本語訳)
ttps://github.com/totakke/clojure-style-guide

5 :デフォルトの名無しさん:2013/09/28(土) 11:35:03.40
【その他】
Clojureをつくったわけ
ttp://www.geidai.ac.jp/~marui/clojure/rationale/
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
InfoQ: Clojureに関するコンテンツ
http://www.infoq.com/jp/clojure/
InfoQ: All of Rich Hickey's Content
http://www.infoq.com/author/Rich-Hickey
RailsConf 2012 基調講演 Simplicity Matters 翻訳書き起し
ttp://eed3si9n.com/node/141

6 :デフォルトの名無しさん:2013/09/28(土) 11:59:03.50
【本】
ttp://www.amazon.co.jp/s?field-keywords=clojure
Programming Clojure (2nd edition)
ttp://blog.practical-scheme.net/shiro/20130417-programming-clojure-2nd (日本語版)
ttp://pragprog.com/book/shcloj2/programming-clojure
The Joy of Clojure, Second Edition
ttp://www.manning.com/fogus2/
ttp://www.joyofclojure.com/2nd
ttp://www.infoq.com/jp/articles/the-joy-of-clojure
Clojure Programming
ttp://www.clojurebook.com
Clojure in Action, Second Edition
ttp://www.manning.com/rathore2/
英語版は、オフィシャルで40-50%ディスカウントクーポンや紙買った後に5-10ドルでebook追加できるサービスなど一部あり

【テンプレ終了】

7 :デフォルトの名無しさん:2013/09/28(土) 12:00:38.53
テンプレ収集場所
http://wiki.fdiary.net/lisp/?%A5%C6%A5%F3%A5%D7%A5%EC+%28Clojure+%A5%B9%A5%EC%29
(ID:guest Pass:cl)

8 :デフォルトの名無しさん:2013/09/29(日) 16:29:28.68
>>1
そしてなぜ前スレが1000行く前に落ちてんだ

9 :デフォルトの名無しさん:2013/09/30(月) 18:10:34.01
http://2013.8-p.info/japanese/09-28-languages.html
facebookが内部で形付きのphp拡張作ってるって。
typedscript含めて動的言語の型検査がトレンドになってきてる?

typed clojureは0.2で、使える代物になってるので、circleciでは実践投入しているらしい。
http://blog.circleci.com/supporting-typed-clojure/

10 :デフォルトの名無しさん:2013/09/30(月) 18:11:07.14
typed clojureは、別に宣言する形なので、
慣れの問題だろうけど、本文中に埋め込んでる方が簡潔にみえる。
http://m.imgur.com/hUGIXwq
lisp族でもshenは埋め込んでたが、
racket, clojureで埋め込まなかったのは、構文の自由度に影響でるから?

11 :デフォルトの名無しさん:2013/09/30(月) 18:32:34.79
>>8
980超えると一定時間経過で自動的に落ちるとかなんとか

12 :デフォルトの名無しさん:2013/10/01(火) 15:29:09.20
Clojure Cupが昨日終了して、さっき一般投票が始まったみたいだけど、誰か参加した人っている?

http://clojurecup.com/apps.html

13 :デフォルトの名無しさん:2013/10/01(火) 20:55:20.02
おいしい本は、ライブラリのカタログとしてかなり範囲が広いし、ライブラリが複数ある用途についてはしっかり一番オススメ出来るやつを選んで載せてある。
本屋でパッと見るだけでも全体通して同じだから雰囲気わかると思うよ。
参考文献がないのはなんかのお約束なんだろうか?

lolなところは、
入門書ではないが、leiningenのインストールのところはうまく初心者向けにかいてあるのに、javaのインストールには一言も触れてない点
関数脳って副題、内容関係なく編集者がつけた点
でした。

14 :デフォルトの名無しさん:2013/10/01(火) 21:08:13.26
>>12
このチームは日本からの参加者みたい
http://clojurecup.com/app.html?app=focusoncoding

15 :デフォルトの名無しさん:2013/10/02(水) 01:33:24.25
>>13
javaというか、jreだけでOKだよね?

16 :デフォルトの名無しさん:2013/10/02(水) 23:32:43.22
>>14
宣伝乙

17 :デフォルトの名無しさん:2013/10/03(木) 00:32:32.27
まあしかし、Rails Rumbleとかに比べてClojure Cupは全く盛り上がってないよなあ。そもそも母数が少ないから当たり前だが。

18 :デフォルトの名無しさん:2013/10/03(木) 01:27:11.66
おいしいやつけっこう評価いいっぽいな。買うかな。

19 :デフォルトの名無しさん:2013/10/03(木) 01:54:41.31
RunaとClimateが買収されたらしく、盛り上がってる。
どちらも、ネット上でClojureの人材募集してたのを見かけたことがあるけど、
コアな人材を集める気のあるところの方が、
買収する側にとっても独立したRD部署とするにはマッチするのかもしれないね。

20 :デフォルトの名無しさん:2013/10/03(木) 01:54:42.31
おいしい本は外部ライブラリ使った応用を紹介してるだけだから、文法的なことを期待して買うと塩漬けすることになる

21 :デフォルトの名無しさん:2013/10/03(木) 01:58:06.93
こういう話なのかね。
http://blog.livedoor.jp/lionfan/lite/archives/52682119.html

22 :デフォルトの名無しさん:2013/10/03(木) 02:04:01.34
おいしい本は、カタログ本なんでまず眺めてみたらいいと思うよ。
書店いくの面倒だったら、サンプルと草稿あるし。
http://gihyo.jp/book/2013/978-4-7741-5991-1
https://github.com/hellonico/niclojure/tree/master/textja

23 :デフォルトの名無しさん:2013/10/03(木) 02:07:51.84
https://github.com/icylisper/jark
https://github.com/flatland/drip
コマンドライン上で先にjava立ち上げておくツールは、
普段したのやつ使ってるけど、おいしい本では、上のやつが紹介されてた。

24 :デフォルトの名無しさん:2013/10/03(木) 02:42:39.87
どの本にも repl を終了するコマンドが書いてない件

(System/exit 0) で代用してるけど、いいのだろうか

25 :デフォルトの名無しさん:2013/10/03(木) 04:38:08.70
>>24
http://stackoverflow.com/questions/4981584/how-to-exit-the-repl

26 :デフォルトの名無しさん:2013/10/03(木) 08:12:26.22
Clojure Cupのエントリー数は42か。
まあ初回だしこんなもんなのかな

27 :デフォルトの名無しさん:2013/10/04(金) 02:21:37.58
make-arrayで配列作ってたんだけど、状態変更不可だと聞いてたから、配列の値を変更するたびに新しい配列を作り直すのかと思ったら、中身はjavaの配列で普通に代入してる件

28 :デフォルトの名無しさん:2013/10/04(金) 02:32:30.29
>>27
イミュータブルなデータ構造使いましょう

29 :デフォルトの名無しさん:2013/10/04(金) 02:39:58.02
状態変更不可だと聞いたの聞き間違いだね
ClojureにはJavaオブジェクトとかrefとかアトムとか
変更可能なものがいろいろ用意されてる

30 :デフォルトの名無しさん:2013/10/04(金) 09:00:25.55
http://clojure.org/java_interop
ここで扱う構造は、java直接なので代入可能。

基本的なデータ構造がイミュータブルな関数型言語でも、
http://en.m.wikipedia.org/wiki/Hash_array_mapped_trie
上の高速なHash使って、実用的な速度というので注目を集めたのがClojureだった。

なので、もともとHaskellでも代入可能なデータ構造が用意されてたりするし、使ったりする。
http://www.haskell.org/haskellwiki/Arrays
http://d.hatena.ne.jp/kazu-yamamoto/touch/20120706/1341546985

31 :デフォルトの名無しさん:2013/10/04(金) 09:03:07.00
http://hackage.haskell.org/package/unordered-containers
これもclojureにインスパイアされて作ってたはず。

32 :デフォルトの名無しさん:2013/10/04(金) 23:28:39.24
http://logaan.github.io/clojure/core.typed/2013/10/02/core.typed-game-of-life.html
clojureから、typed clojureにしてみて、scalaとhaskellに移植して比較してみたらしい。
typed clojureが一番長いけど、納得いかないものではない、という感想になってた。

33 :デフォルトの名無しさん:2013/10/05(土) 00:53:56.11
cup戦の投票結果発表してたよ。

34 :デフォルトの名無しさん:2013/10/05(土) 01:16:50.23
http://en.m.wikipedia.org/wiki/Ctrie
https://github.com/axel22/Ctries
https://github.com/danlentz/cl-ctrie
https://github.com/mcschroeder/ctrie
並行Trieは、scalaのチームが考えたのか。
clとhaskellの実装があるようだ。
名前からするとhash mapとstmが複数コアで速くなりそうに見えるけど、どうなんだろう。

35 :デフォルトの名無しさん:2013/10/05(土) 02:23:43.17
clojure-py やってみようと思ったけど
開発止まってるこれはもう開発の余地がないほど完成してるってとってもいいのかな

36 :デフォルトの名無しさん:2013/10/05(土) 09:30:26.26
https://groups.google.com/forum/m/#!topic/clojure-py-dev/ZyfAbg0UCpY

The project is totally unactive right now, but it is in a reasonably usable state (you can start python2 clojure.py and get a working REPL).

前動かした時は、基本的なものは動くようにみえた。

ただ、javaのapi叩いてるようなライブラリは動かない。(主に、ioまわり)

37 :デフォルトの名無しさん:2013/10/05(土) 16:49:02.23
Getting Pushy: pushing data from server to browser
https://thestrangeloop.com/sessions/getting-pushy-pushing-data-from-server-to-browser
> Join David Pollak, Lift’s founder, as he walks through Lift’s design decision
> and then see those same design decisions applied
> to a Clojure/ClojureScript/AngularJS side project that David has been working on.

core.async登場にあわせて、Liftっぽいフレームワーク作り始めてるのか。

38 :デフォルトの名無しさん:2013/10/05(土) 17:20:31.97
Schema for Declarative Data Validation in Clojure
https://thestrangeloop.com/sessions/schema-for-declarative-data-validation-in-clojure
ちょっと話題になってるデータバリデーションライブラリ
これもスライドないのかな?

セッション一覧
https://thestrangeloop.com/sessions
スライド一覧
https://github.com/strangeloop/StrangeLoop2013/tree/master/slides/sessions

39 :デフォルトの名無しさん:2013/10/06(日) 06:06:04.49
setterという変数の内部の値を書きかえる関数があるとき、
(let [] (setter x) x)

(do (setter x) x)
で結果が違うんですけど、これは仕様でしょうか?

letの方はxが変更されなくて、doの方はxの中身が変更されます

40 :デフォルトの名無しさん:2013/10/06(日) 12:12:08.07
http://clojure.org/special_forms#Special%20Forms--(let%20[bindings*%20]%20exprs*)
http://clojure.org/special_forms#Special%20Forms--(do%20exprs*)
基本的に副作用ある場合は逐次実行される様にdo系の逐次実行マクロで囲む必要があるという認識。

http://d.hatena.ne.jp/ryoasai/touch/20110604/1307201476
http://d.hatena.ne.jp/awacio/touch/20121009/1349796084
基本は、副作用考慮しない実行順序によらない並列評価になると思うので
let使う場合も、(let [bindings*] (do (expr*)))にする必要がある(と思ってる)。

41 :デフォルトの名無しさん:2013/10/06(日) 12:55:16.43
逐次実行の外部計算ライブラリ利用したプログラムでベンチとった時に、cpuが100%(=1論理コア)以上使われてた。
検証せずに、とりあえず並列評価された可能性が高いってことにしておいた。

別件だけど、reducerでメモリまわりも節約出来るようだし、java1.6以降対応だから初めから使うようにしたいんだが、
javaのagentが立ち上がるので、明示的にjavaをexitするところの作法ってないのかな?
http://tnoda-clojure.tumblr.com/post/60197800824/reducers
http://tnoda-clojure.tumblr.com/post/59364812844/dispelling-tis-fud-about-clojure-part-one
http://tnoda-clojure.tumblr.com/post/59416260402/dispelling-tis-fud-about-clojure-part-two

42 :デフォルトの名無しさん:2013/10/06(日) 16:41:26.61
exitする前にshutdown-agents呼んどく、という話ではない?
ttp://clojuredocs.org/clojure_core/clojure.core/shutdown-agents

43 :デフォルトの名無しさん:2013/10/06(日) 18:08:18.49
ひょっとして、 do でも実行順序が保証されてなくないですか?

user=> (map (fn [x] (do (println "print " x) x )) (range 0 40))
(中略)
print 31
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
30 print 32
print 33
print 34
print 35
print 36
print 37
print 38
print 39
31 32 33 34 35 36 37 38 39)

44 :デフォルトの名無しさん:2013/10/06(日) 19:19:42.62
scheme の場合
gosh> (map (lambda (x) (begin (print "print " x) x)) (list-ec (:range v 100) v))
(中略)
print 95
print 96
print 97
print 98
print 99
(0 1 2 3 4 中略 91 92 93 94 95 96 97 98 99)

common lisp の場合
CL-USER> (mapcar (lambda (x) (progn (print x) x)) (range 100))
(中略)
97
98
99
(0 1 2 3 中略 97 98 99)

clojure は変数の不変性を前提に変な遅延評価と最適化してるような気がする

45 :デフォルトの名無しさん:2013/10/06(日) 19:39:25.70
mapが返すのは遅延リストだから、
(do s1 s2 s3)
s1 が s2 より前に実行されることが保証されているだけで、 s1 と s2 の間に他の処理をしないことは保証されていない
s1 s2 が s3 の内部の値を書き換える操作の場合は s3 の内部状態が書き換わることは保証されない

46 :デフォルトの名無しさん:2013/10/06(日) 20:28:02.08
遅延評価まじでウザいな
なんでこんな欠陥を導入したんだよ

47 :デフォルトの名無しさん:2013/10/06(日) 20:47:17.05
破壊的副作用に頼ったコードを書かなければどうということはない
・・・と言いたいところだけど、java呼び出しで書かざるを得ない時は結構ある
毎日clojureさわってる内はちゃんとdoallとかdorunとか呼ぶようにするけど、
ひさしぶりにさわると忘れてる事が

48 :デフォルトの名無しさん:2013/10/06(日) 21:24:51.01
データ構造を作った後に値を埋めていくタイプのコンストラクタはどうやって作るのだろうか…

49 :デフォルトの名無しさん:2013/10/06(日) 21:25:48.60
遅延評価ではなく遅延シーケンスな

50 :デフォルトの名無しさん:2013/10/06(日) 22:44:50.69
>>46
遅延シーケンスを否定するならClojureを使う意味はほぼ無いよ
まさしくClojureの主要機能

51 :デフォルトの名無しさん:2013/10/07(月) 03:31:05.01
順序問題はloop使うとちょっと逃げられる

52 :電波いっぱい:2013/10/07(月) 17:49:52.39
>>48
doto を使うということではなくて?

53 :デフォルトの名無しさん:2013/10/07(月) 23:35:18.05
do一族
http://clojure.github.io/clojure/clojure.core-api.html#clojure.core/doall
http://julianlaffey.wordpress.com/2013/04/25/untangling-clojures-do-functions-do-doall-dorun-doseq-dosync-dotimes-doto/

54 :デフォルトの名無しさん:2013/10/12(土) 00:43:25.74
遅延なんて、カスと認定されて20年以上前に主要プログラミング言語から追放された昨日なのに
どうして関数型を名乗る言語で復活してしまったのか
カスなのに

55 :デフォルトの名無しさん:2013/10/12(土) 02:47:32.00
>>54
54の頭が20年前で止まってるから。

56 :デフォルトの名無しさん:2013/10/12(土) 02:55:10.84
そもそも追放されてなくね

57 :デフォルトの名無しさん:2013/10/12(土) 03:57:57.56
>>54
リストxs が f1 f2 f3 ... で構成されてて、
各fi が xs の部分集合から計算されるとき、
各fi の計算順序を無視して xs の定義を記述できる

ので便利

58 :デフォルトの名無しさん:2013/10/12(土) 09:16:54.87
副作用を制限する関数型言語の特性と遅延処理の相性がいいからねえ

59 :デフォルトの名無しさん:2013/10/12(土) 09:27:51.29
netflixの紹介は遊んでるな
https://speakerdeck.com/daveray/clojure-at-netflix

60 :デフォルトの名無しさん:2013/10/12(土) 17:45:21.27
その作者、seesaw作ってた人か
当時は学生っぽく見えたけど、どうだったんだろう。

61 :デフォルトの名無しさん:2013/10/14(月) 11:35:08.95
>>59
マクロの項目吹いたwwwww

62 :デフォルトの名無しさん:2013/10/15(火) 05:16:59.58
それマクロスちゃうヴァルキリーやで
っていう突っ込み欲しいんだろうか

63 :デフォルトの名無しさん:2013/10/15(火) 23:04:25.26
netflix社内では、アニメ見放題なんだろうか。

最近見かけるようになった機械学習のSaaSっぽいやつのひとつ
https://bigml.com/features
バックエンドが99%clojureらしい。
http://blog.bigml.com/2013/06/21/clojure-based-machine-learning/

64 :デフォルトの名無しさん:2013/10/17(木) 12:57:58.69
割とマジでコレが日本で流行らん理由がわからん。
PHPなんかよりよっぽどWeb関係作りやすいし安定してるのに。

65 :デフォルトの名無しさん:2013/10/17(木) 14:16:47.21
流行らない理由「Lispだから」説
twitterでもネタで書かれてたけど
本当にこれありそうだよな

66 :デフォルトの名無しさん:2013/10/17(木) 14:25:53.41
Pythonみたいなのが流行りつつあるのを見ると
やはりみんな括弧が嫌いなのかね

自分もエディタのサポートが無い環境なら
括弧の類が少ない言語を選ぶ気がするよ

67 :デフォルトの名無しさん:2013/10/17(木) 15:28:06.39
Lisp系の文法フリーな文化に慣れると
他の言語に手を出す気が失せる

68 :デフォルトの名無しさん:2013/10/17(木) 15:59:06.29
>>66
今の時代エディタのサポートなしとか余程の変態か初心者しかやらないし

python流行ってるのは米軍とかgoogleが支援してるからも大きい
つまりclojureにもいいパトロンがつけば

69 :デフォルトの名無しさん:2013/10/17(木) 17:06:09.50
外野からすると単にカッコがというよりものっぺりしたコードの見た目に抵抗がある

70 :デフォルトの名無しさん:2013/10/17(木) 18:06:07.41
>>64
生のJavaScript書くのが辛いという理由で、Haxeみたいなのが人気が出てるのを見ると、
「コンパイラがエラーを指摘してくれる安心感」に魅力を感じる人が多いんだな、と思う。
Lispは発想を自由にコーディング出来るが、言い換えると開発者によって練度のバラつきが
大きく影響する--->人月で契約するプロジェクトマネージャーへの受けの問題だろう。

71 :デフォルトの名無しさん:2013/10/17(木) 22:00:11.12
マクロ書けなかったらClojure使う意味なんかないしなぁ

72 :デフォルトの名無しさん:2013/10/18(金) 13:15:25.70
>>70
JavaScriptもClojureのREPLみたいに使えればそんなに書くの嫌いじゃ無いんだが開発環境がとてもショボイのが嫌いだ
ってなわけでWeb環境はclojure+clojure scriptが楽だったりする。
プロトタイプはこれで作ってプレゼンする感じ
でも実際の運営までにはPHPとかに変換しないと運営から文句来る orz

73 :デフォルトの名無しさん:2013/10/18(金) 16:00:03.29
これはClojure->PHPのトランスレータのフラグ。

74 :デフォルトの名無しさん:2013/10/19(土) 10:07:41.65
Twitter見てるとアニオタに人気の言語なのかね

75 :デフォルトの名無しさん:2013/10/19(土) 13:41:00.30
>>74
PythonとRubyがアップを始めたようです

76 :デフォルトの名無しさん:2013/10/19(土) 20:10:23.28
Haskell「所詮スポーツマンじゃの」

77 :デフォルトの名無しさん:2013/10/19(土) 21:31:27.19
今勉強中なんだけど、
セットとかマップって単にリストとか連想リストではいかんのだろうか。
そんなに効率が変わるようにも思えないし

78 :デフォルトの名無しさん:2013/10/20(日) 00:36:22.11
普段はScala + Playをsbt + IDEAでコーディングしてるんだけど、
Clojureでウェブアプリ作ろうと思ったらどんな組み合わせでやるものなの?
デプロイ先とかも簡単に見つかるのかどうかも気になります。

79 :デフォルトの名無しさん:2013/10/20(日) 01:42:32.78
Ring: RubyでいうRackのようなミドルウェア
Compojure: RubyでいうSinatraのようなWebアプリ記述用DSL

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

参考URL ttp://d.hatena.ne.jp/oknknic/20130704/1372950152

80 :デフォルトの名無しさん: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など無料から使えるとこで使える。

81 :デフォルトの名無しさん: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的なところがあるツールは、今のところないと思う。

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

JVMの有無だけじゃないのかなデプロイの可否

83 :デフォルトの名無しさん:2013/10/22(火) 01:07:49.94
ふっふっふ
社内で勉強会開始
emacsenが半数を占めていたのでCCWじゃなくnrepl-jack-inでclojure学習でだいぶいけそう

84 :デフォルトの名無しさん:2013/10/22(火) 02:58:45.16
メモ帳+コマンドプロンプト の俺は異端か…

85 :デフォルトの名無しさん:2013/10/22(火) 03:51:38.44
Lispでエディタ補助なしって拷問に近い
LightTableがオシャレ

86 :デフォルトの名無しさん:2013/10/22(火) 04:10:29.72
メモ帳でLisp書くのとかどんな罰ゲームだよwww

87 :デフォルトの名無しさん:2013/10/22(火) 05:31:08.88
>>84
器用だな
不便感じないの?

88 :デフォルトの名無しさん:2013/10/22(火) 07:49:10.16
>>79
>>80
>>81
>>82
ありがとう。いろいろ選択肢はあるんですね。
少しずつ勉強してみます。

89 :デフォルトの名無しさん:2013/10/22(火) 18:48:42.63
>>84
xyzzyいいよー^^

90 :デフォルトの名無しさん:2013/10/22(火) 23:16:26.44
メモ帳+コマンドプロンプトになれると、USBメモリにclojure1.xx.x..jarとコマンドプロンプトのショートカットだけ入れてればどこでもプログラミングできる

91 :デフォルトの名無しさん:2013/10/23(水) 02:58:00.41
xyzzyにclojure-modeあるのか?

92 :デフォルトの名無しさん:2013/10/23(水) 14:58:22.80
>>90
いっそのことlanternaとか使ったテキストエディタもとろもつくっちまったほうがよくね?(lanterna日本語とおらないのがアレ過ぎるけど)

93 :デフォルトの名無しさん:2013/10/25(金) 03:44:18.58
もはやメモ帳でコーディングする方が楽という領域に入ったが、
メモ帳閉じた後に自動インデント整形してソースを出力しなおしてくれるツールがあるとうれしい

clojure.jarにくっつけてくれ、とだれが英語でリクエストしておいてください

94 :デフォルトの名無しさん:2013/10/25(金) 05:16:19.00
http://www.infoq.com/jp/news/2013/10/core-typed
形システムについての日本語記事

95 :デフォルトの名無しさん:2013/10/26(土) 01:55:15.87
>>93
vimとclojure.vim入れて、全行を「=」コマンドで整形して保存するだけのスクリプトを書いて実行
もしくはemacsで(ry

コードの整形は流石にpretty-printでは無理か

96 :デフォルトの名無しさん:2013/10/26(土) 19:43:26.42
leiningen使ってたら他の処理系のビルドが大変めんどくさくなってきて困る
なんだかdameningenになった気分だ

97 :デフォルトの名無しさん:2013/10/26(土) 20:08:56.78
githubのランキングが変わってた。
だいぶ前なのかもしれないけど。

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

googleのリポジトリもあるんだね。

98 :デフォルトの名無しさん:2013/10/26(土) 20:19:48.05
>>96
最近の、ビルドの最中までオンライン前提な風潮はどうにかならないのだろうか…

99 :デフォルトの名無しさん:2013/10/27(日) 17:15:30.86
>>98
つlein -o

100 :デフォルトの名無しさん:2013/10/28(月) 01:28:01.73
nrepl.elで
(.start (Thread. #(println "anal")))
とかすると、出力がreplではなく*nrepl-server*バッファに表示されてしまう問題はいつ解決されるんだろうか

101 :デフォルトの名無しさん:2013/10/28(月) 21:17:40.45
https://github.com/ayamada/clan
http://doc.tir.ne.jp/devel/clan
作者が日本人だから日本語のドキュメントが充実してていいな

102 :デフォルトの名無しさん: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>

103 :デフォルトの名無しさん:2013/11/02(土) 18:46:32.47
>>102
そっか、それで良いのかありがとう
pcallsとかならbindingしなくてもちゃんとreplに出力されるみたいだから内部で同じようなことやってるのかな
それでも例外は*nrepl-server*に出てしまうけど

104 :デフォルトの名無しさん:2013/11/03(日) 08:59:14.28
>>103
例外は補足してバッファにpopupさせる設定ができるから
nrepl-popup-.*
な変数を c-h vでチェックしてみるのがよさげ

;;; 最新版にしたらritzが動かないのでbreak-on-exception効かなくなってちょっとこまった >> nrepl

105 :デフォルトの名無しさん:2013/11/05(火) 21:51:04.56
http://cemerick.com/2013/11/05/2013-state-of-clojure-clojurescript-survey/
Clojure国勢調査2013
去年まではもう少し早い時期にやってた気が。

106 :デフォルトの名無しさん: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/

たくさん図のはいった本になるんだろうか

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

これで勉強して Compojure で何か書いてみたいなあ

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

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

qsocksソースコード
http://codepad.org/uyuG7Ovg

109 :デフォルトの名無しさん:2013/11/12(火) 00:19:25.31
知らばく見てなかったけど、もちろんJVMとは決別したよな。

110 :デフォルトの名無しさん:2013/11/12(火) 00:32:31.14
もうブラウザに移行しまうま。
来年ぐらいに構文解析的な用途では十分なCinCもできそう。
llvm、python、.net実装は利用者増えてない。

111 :デフォルトの名無しさん:2013/11/12(火) 00:33:43.41
JJUGで発表あったような、、、

112 :デフォルトの名無しさん:2013/11/20(水) 08:19:00.09
http://www.sankeibiz.jp/smp/business/news/131119/prl1311191038019-s.htm
clojure cupに出てたのこのチームだったそうで。

113 :デフォルトの名無しさん:2013/11/20(水) 16:55:40.22
もっとこういうClojureの採用事例が増えてくれるとうれしい

114 :デフォルトの名無しさん:2013/11/23(土) 01:29:58.21
lispってemacsユーザーのオモチャっていうイメージがある

115 :デフォルトの名無しさん:2013/11/23(土) 03:14:20.49
そもそもclojureはlispなのだろうか…

116 :デフォルトの名無しさん:2013/11/23(土) 07:37:57.01
let over lambdaの作者がvimmer過ぎて、読んだらemacs云々はのイメージが薄れた。

117 :デフォルトの名無しさん:2013/11/23(土) 10:29:47.83
>>114
逆ジャね?
emacsがLispユーザのおもちゃじゃね?

118 :デフォルトの名無しさん:2013/11/24(日) 01:18:40.32
SICPとemacsがプログラミング入門に最適だった
今でも、そこからスタートするのが良い素養を持てるはず
C#,PHPがやることなんて、せいぜいlatexの延長か何か

119 :デフォルトの名無しさん:2013/11/24(日) 16:43:40.55
SICPはschemeメインだから、SICPから入ると、loopを多用するlisp的なイデオムに拒否反応が出る

120 :デフォルトの名無しさん:2013/11/24(日) 18:43:19.94
lein使おうと思ってダウンロードしてlein replしたら
https://leiningen.s3.amazonaws.com/downloads/leiningen-2.4.0-SNAPSHOT-standalone.jar
をダウンロードしようとして失敗する。

121 :デフォルトの名無しさん:2013/11/26(火) 23:46:08.50
2.4.0-SNAPSHOTがないっぽい。
たしか、2.3.4にしたら動いた。
leiningen-2.3.4-standalone.jar

122 :デフォルトの名無しさん: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向けな別プロジェクトがあるらしい。

123 :デフォルトの名無しさん:2013/11/27(水) 00:02:25.56
export LEIN_VERSION="2.4.0-SNAPSHOT"
ここを"2.3.4"ね。
たまたま、普段使わないwindowsにいれようと思ってひっかかったので、
404 not found じゃなくて、403 Forbiddenだし、
過去の報告みてダウンローダーがおかしいのかと思ったんだけど、
取り敢えずファイルが公開されてないようだ。

124 :デフォルトの名無しさん:2013/11/27(水) 00:04:04.94
hylasと微妙にカブる

125 :デフォルトの名無しさん:2013/11/28(木) 23:21:29.33
incanterをRの代わりの使おうしたけど
incanterは色々足りない感じがして残念

126 :デフォルトの名無しさん:2013/11/28(木) 23:51:11.37
資産を生かしたいなら、Rのラッパーがjavaやclojureにあればすむのかな?

127 :デフォルトの名無しさん:2013/11/29(金) 02:46:50.26
>>125
Incanter は現在もしっかりと開発されてるんだよな
数人がコツコツ作ってる印象だけど
物足りない感じるならなら開発に参加すべき

128 :デフォルトの名無しさん:2013/11/29(金) 13:56:26.40
JVM上で動くRやサーバーで動くRもあるらしいので組み合わせてみては
https://code.google.com/p/renjin/
http://rforge.net/Rserve/

129 :デフォルトの名無しさん:2013/11/29(金) 20:41:34.26
もうそれ素直にRやったほうがいいと思うの

130 :デフォルトの名無しさん:2013/12/03(火) 13:16:22.87
Common LispやSchemeとの関数の対照表はありませんか?
まずmemberやfindに対応するものからしてわからない……

131 :デフォルトの名無しさん:2013/12/03(火) 20:08:14.78
define defun defnとか、set系とか、eq系とか、mapとmapcarとか、高階関数の引数で#'が必要かどうかとか
もうあきらめてる

132 :デフォルトの名無しさん:2013/12/03(火) 23:33:26.00
http://hyperpolyglot.org/lisp

133 :デフォルトの名無しさん: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/

134 :デフォルトの名無しさん:2013/12/12(木) 00:14:11.72
jarkをraspberry piとbeaglebone blackで使えるようにしてほしい。
つまりarmアーキテクチャで動くjarkがほしい。
rpiもbbbもjvmとかreplとかの起動が信じられないほど遅くてclojureを使うモチベーションが
打ち砕かれてるのが現状だけど
jarkが動くようになれば未来がガラリとかわる。

135 :デフォルトの名無しさん:2013/12/12(木) 01:01:07.13
CPUは18ヶ月で2倍だっけ?
atomのBayTrailなら普通に動くので、
あと二年ぐらいで、1万前後の組み込みボードでarmかatomがそこそこ動くようになってると思う。

136 :デフォルトの名無しさん:2013/12/17(火) 14:54:34.68
Incanter 最近動きないと思っていたけどこつこつと開発は進んでいたんだな

137 :デフォルトの名無しさん:2014/01/03(金) 18:29:49.53
同じような処理をするならリストかベクタどっちが早いの

138 :デフォルトの名無しさん:2014/01/03(金) 19:21:41.87
>>137
その同じような処理がどんな処理かによる

139 :デフォルトの名無しさん:2014/01/04(土) 01:48:06.47
>>138
要素ごとに関数を適応する場合と
(+ n n+1 n+2)みたいな計算を全リストごとに計算をする

140 :デフォルトの名無しさん:2014/01/04(土) 02:00:47.86
処理そのものの速さよりも、結果を他のコレクションに変換するときのコストを気にする方がいいような…

141 :デフォルトの名無しさん:2014/01/04(土) 02:40:32.32
>>139,140
1.5からmapvとかあるからvectorでもseqでも変換コストはかかんねぇような気がする

142 :デフォルトの名無しさん:2014/01/04(土) 02:41:55.72
あ、まちがい、出来上がった結果のvecやらseqやらをさらに遣って後から伸びる方法によるのか。(頭に足すかケツに足すか)

143 :デフォルトの名無しさん:2014/01/04(土) 18:25:37.79
>>141
mapv初めて知った
>>140
リストをベクタにしたりとか変換しないようにしとけば特に問題ないんだな

144 :デフォルトの名無しさん:2014/01/09(木) 16:16:29.71
LightTableがOSSになったぞ

145 :デフォルトの名無しさん:2014/01/09(木) 16:58:50.78
>>144
見てきた
cljsとはおもわなんだ
ちょっとびっくり

146 :デフォルトの名無しさん:2014/01/25(土) 03:02:37.00
おいしいclojure読んだけど、外部のライブラリを導入するときに、インストールまで全部オンラインでやること前提になってるけど、今はそれが普通なのだろうか
必要なアーカイブをダウンロードして、あとはオフラインでやるというスタイルはもう終わりですか

147 :デフォルトの名無しさん:2014/01/25(土) 13:52:56.12
>>146
できなくはないけど、面倒くさい。

148 :デフォルトの名無しさん: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プラグインというのがある。

149 :デフォルトの名無しさん:2014/01/25(土) 16:42:03.33
4clojureがちょくちょくつまる
reverseなしでreverseするには空リストにintoとか
普通すらすらわかるん?

150 :デフォルトの名無しさん:2014/01/25(土) 16:53:06.44
>>148
普通にローカルの~/.m2/repositoryへ突っ込む手段はあるから問題ないんじゃ?
ソースひっぱってきてmvn installでも lein installでも使える
バイナリのjarだけを突っ込む方法はしらん;-p (~/.m2/repositoryをクローンで?)

151 :デフォルトの名無しさん:2014/01/25(土) 21:21:53.70
>>150
バイナリのjarだけつっこみたい時は、lein localrepoをつかう
ttps://github.com/kumarshantanu/lein-localrepo

152 :デフォルトの名無しさん:2014/01/25(土) 23:42:38.80
起動時間なんとかしてくれー

153 :デフォルトの名無しさん:2014/01/26(日) 11:44:45.81
jvmの起動時間て
なんであんなに遅いの?
どうにかならないもんなの?

154 :デフォルトの名無しさん: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で落ちて動かない。

155 :デフォルトの名無しさん:2014/01/26(日) 23:53:17.89
要望にあったものではないだろうが、こんなのが
https://github.com/takeoutweight/clojure-scheme
ClojureScriptのscheme版に改造したものらしい
cljs系は面倒だけど、メンテナンスはしやすいかも。

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

こういうのって、OpenCLみたなHPC向けのコード吐けるものなら便利そう

156 :電波いっぱい:2014/01/27(月) 23:40:51.24
>>149

そういうのに多く触れて来た人ならスラスラ解けるでしょうけど、そうで無い人の方が多いでしょう。
でも、そういう問題を解いて、他の人がどのように解いているのかということを知るのが4clojureの目的だよね。

157 :デフォルトの名無しさん:2014/01/28(火) 10:27:48.13
>>156
なるほど、解いた後他人のsolutionを見ることに意味があるのか

158 :デフォルトの名無しさん:2014/01/30(木) 00:07:51.81
すみません

leiningen を reple で起動したときに、jar をどっかからダウンロードしてると思うんですけど、そのjarっていったいどこに保存されてるのでしょうか?
Windows7 です

159 :デフォルトの名無しさん:2014/01/30(木) 05:22:55.78
lein classpath とか打てば書いてあるんじゃね?

160 :デフォルトの名無しさん:2014/01/30(木) 11:22:48.47
>>158
c:/Users/<アカウント名>/.m2
ここがmavenのリポジトリの在処
lein depsでひらってくると.m2以下に突っ込まれる

161 :デフォルトの名無しさん:2014/01/31(金) 22:17:30.83
大学生協に1冊だけあったおいしい本がなくなってやがる
こんなマイナー本をピンポイントで
中身確認したかったのにorz

162 :デフォルトの名無しさん:2014/02/01(土) 00:04:22.94
おいしい本は、読者がネットに常時接続してることを前提にしている点に違和感がある

163 :デフォルトの名無しさん:2014/02/01(土) 00:30:20.21
ずっと繋がないといけない処理があったりするの?

lein使うのやめてほしいとかそいうの?

164 :デフォルトの名無しさん:2014/02/01(土) 00:34:29.85
>>163
私の開発環境は完全にオフラインだから
leinだと、USBメモリにjarファイルコピーしても、どこに配置すればいいのか分からん

165 :デフォルトの名無しさん: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をどっかからもってくるというて手もあるが。

166 :デフォルトの名無しさん:2014/02/01(土) 22:53:02.10
ふと思ったんだけどClojureってClojureで実装されてんの?

167 :デフォルトの名無しさん:2014/02/01(土) 23:15:13.68
バイトコードにコンパイルするのに、sdkのjavac が必要ないことだけは分かってる

168 :デフォルトの名無しさん:2014/02/01(土) 23:18:43.09
>>167
.javaなruntimeクラスとかどうやってコンパイルしてるん?

169 :デフォルトの名無しさん:2014/02/02(日) 12:57:22.64
ローカルの ~/.m2 リポジトリをUSBメモリやモバイルPCに入れて、
オフラインで lein 使用できないかな?

170 :デフォルトの名無しさん:2014/02/02(日) 13:49:18.44
>>169
$HOMEを書き換えれば使えるんじゃね?

171 :デフォルトの名無しさん:2014/02/02(日) 23:31:31.18
Clojureは今のところJavaで実装されてる。ClojureのコンパイラをClojureで書き直すプロジェクトはClojure Contribの1つとして既に走ってるよ。

172 :デフォルトの名無しさん:2014/02/03(月) 23:57:20.87
Java言語習得済み人に聞きたいんだけどメソッドの大文字小文字の命名規則ってある?
kとKの違いでプログラミングClojureのSnakeゲーム時間めっちゃとられた

173 :デフォルトの名無しさん:2014/02/04(火) 00:30:48.62
メソッド名は小文字から始まって、単語の区切りの先頭を大文字で
なので単語はアンダーバーで区切らず、そのまま連結する

というのが基本で、○○法とかの固有名詞の場合はそのときそのときで

今は日本語のメソッド名も使えるらしいが、その場合のルールは不明

174 :デフォルトの名無しさん:2014/02/04(火) 01:04:01.73
ClojureScriptでhello world書いたら1MB弱あるjsファイル吐かれて驚いたんだけどこれが普通なの?
一応pretty print切ったら600KB少しにはなった

175 :デフォルトの名無しさん:2014/02/04(火) 04:30:37.09
>>174
google closure compilerがゴリゴリ削るはずなんだけど
:optimizations が :none とか :whitespace になってたりしない?

176 :デフォルトの名無しさん:2014/02/04(火) 10:53:27.86
>>173
なるほど、そういうことか
そうやってクラス名とメソッド名を区別するわけか
thx

177 :デフォルトの名無しさん:2014/02/05(水) 06:09:12.77
haskel caml ml scala 使いのおれがclojureにうつるので今現在のおすすめ本ほしえてくれ
主要な本、英語か日本語で 特徴つけてくれたらうれしい

178 :デフォルトの名無しさん:2014/02/05(水) 06:55:56.35
日本語書籍
オーム社
プログラミング Clojure 第二版(PDF版アリ)
Clojureの基本解説書、これよんだ後はclojarsとgithub探訪で事足りるような?

技術評論社
おいしいClojure
フレームワークやライブラリの紹介集なので必要かどうかは微妙だが名前が類推できないものとかをちょろっと知るには便利

英語書籍(基本ebook)
Joy of Clojure
入門書 Programming Clojureとどちらか片方あればOK

Clojure in Action
入門書+α +αの所が良い感じ TDD, Data storage, web, DSLとか

Clojure Programming
これは読んでないのでしらない

179 :デフォルトの名無しさん:2014/02/05(水) 20:27:20.90
Very thanks

やっぱ日本語と英語じゃ理解の速度も深さもちがうから
日本語書籍 オーム社 プログラミング Clojure 第二版(PDF版アリ)
を週末に買いに行くわ

ただ、projectの組み方とか、開発環境の細かい使い方セッティングの仕方とか
かいてあるのもほしい、eclipse for java みたいなののつかいかた
lein とかの使い方、webあされば分かるんだろうけど、
まとまってるのがいい本とかで、その方が達成もあるし。

180 :電波いっぱい:2014/02/05(水) 23:26:58.73
>>179

使い方方面であれば、これはいいと思う。
http://pragprog.com/book/dswdcloj/web-development-with-clojure

webベースのいくつかのシステムを1から作り上げていく過程を解説するという流れで進んでいく。
clojureのバージョンも最新の1.5.1対応。
leiningenの説明もあり。
ideはLightTable。


さておき、Joy of Clojureは入門書では無いと思う。一通り身についた頃に読むと、clojureらしい書き方っていうのがわかる本。

181 :デフォルトの名無しさん:2014/02/06(木) 00:57:12.73
joy of clojureは本自体にそんなことが書いてあるもんなぁ

182 :デフォルトの名無しさん:2014/02/07(金) 00:45:16.62
プログラミングClojureの5,6章はJavaの前提知識がないと辛いものがあるな
7章はめっちゃすんなり読めるのに

183 :デフォルトの名無しさん:2014/02/07(金) 00:51:17.32
>>175
optimizationsをadvancedに変えたら素のJS並に減ったわ
でもこれJSのライブラリと相性悪いみたいなんで萎えた・・・

184 :デフォルトの名無しさん:2014/02/07(金) 08:52:33.77
http://otabat.hatenablog.com/entry/20121123/1353674855
細かい指定方法があった

185 :デフォルトの名無しさん:2014/02/07(金) 11:19:08.24
それを読んだので萎えた

186 :デフォルトの名無しさん:2014/02/08(土) 16:01:14.48
>>180 thanks 日本語の本読んでから見てみる

187 :デフォルトの名無しさん:2014/02/09(日) 22:02:16.24
日本語の書評があったので、転載

1. Web Development with Clojure
Clojure で Web アプリ開発する方法を調べようとして,ググり疲れた人向けです.

本書では Compojure/Ring の組み合わせについて, 一通りサンプル Web アプリケーションが動くまでを解説しています.そのほか (続く)

2. Clojure High Performance Programming
この本はおすすめなので,絶賛します.
この本の大部分は (遅くならない)普通の Clojure プログラムの書き方 の説明に費されています.

そこで,この本は次のような人におすすめです.
初級〜中級レベルの Clojure プログラマをこれから目指す入門者
(続く)


3. Clojure for Domain-specific Languages

これは、英語の書評があったけど、DSLが40ページで、残りが入門書とのこと。
あまりお勧めされてはいなかった。

似たような分野だと、
実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ

Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM
がある。

そういえば、clojureの書籍での入門順は何ヶ所で見た気がする。こことか
http://www.bigjason.com/blog/a-path-to-clojure

188 :デフォルトの名無しさん:2014/02/10(月) 19:49:57.63
nilと()って分けてみたはいいけどあまりうまくなかったという感じがしない?
利便性に振った結果か、結局色んな所で同一視してるし……

189 :デフォルトの名無しさん:2014/02/10(月) 23:07:26.60
nilとfalseを分けたschemeが嫌いな人には向いてると思う>>Clojure

190 :デフォルトの名無しさん:2014/02/11(火) 00:23:41.32
というか、嫌なら、適当なシンボルを偽に割り当てればいいのではなかろうか

191 :デフォルトの名無しさん:2014/02/14(金) 20:03:15.49
プログラミングClojure第二版の10.4の

lein noir new clojurebreaker

って

lein new noir clojurebreaker

の間違いじゃね?

192 :デフォルトの名無しさん:2014/02/15(土) 08:03:30.33
kindleマーケットで100円の本買ってClojureの勉強はじめた
Android上で動くワンペインアウトラインプロセッサ作りたい

193 :デフォルトの名無しさん:2014/02/15(土) 15:29:39.97
あのkindle本、追体験出来るように書かれてるので独習にいいよね。

194 :デフォルトの名無しさん:2014/02/15(土) 23:15:27.33
seesawで表示させるとUbuntuだとテキストめっちゃ汚いんだけどWindowsだとどうなんだろ

195 :デフォルトの名無しさん:2014/02/16(日) 03:54:07.02
>>194
font設定しないと駄目じゃね?

196 :デフォルトの名無しさん:2014/02/16(日) 04:24:20.25
>>194
Javaのメソッドで直接アンチエイリアスの設定をしないと綺麗にならないよ。

197 :デフォルトの名無しさん:2014/02/16(日) 04:37:24.76
間違えた。"(anti-alias g)"でいけたわ。

198 :デフォルトの名無しさん:2014/02/16(日) 14:18:22.71
clojure-1.6.0がbetaになったらしい
https://groups.google.com/forum/m/#!topic/clojure/tseJgAi3HC4
細かい拡張とバグフィックス
あとはパフォーマンス的には、hashとstmとprotocol呼び出しの効率あがったみたい。

199 :デフォルトの名無しさん:2014/02/16(日) 18:04:34.54
>>198
hashはそんなに重いと感じたことないけどprotocolはすげーありがたい。
stmは粒度気にしてればパフォーマンスあんまり気にならなかったけど、レースコンディションの激しいものでもOKってわけじゃないよね?

200 :デフォルトの名無しさん:2014/02/16(日) 18:21:14.27
>>195
>>196
フォント設定したらそこそこ綺麗になった
thx

201 :デフォルトの名無しさん:2014/02/16(日) 23:16:52.08
>>199
単純に使ってないシステムコール(時計)を消去しただけみたい。

202 :デフォルトの名無しさん:2014/02/16(日) 23:39:30.74
もともとトランザクショナルメモリは、GILやジャイアントロックのようなロックを並列処理出来るようにしたり、書き込みが一箇所に集中しない時に使って楽するものみたいだし、
カウンターみたいなのは、合成(reduce)していく設計になるんじゃないかと思った。

203 :デフォルトの名無しさん:2014/02/16(日) 23:52:52.21
http://tnoda-clojure.tumblr.com/post/60197800824/reducers
最近知ったんだけど、reducers使うと効率いいらしい。

204 :デフォルトの名無しさん:2014/02/17(月) 00:36:36.78
>>203
カリー化ってClojureに実装されてなくね?

205 :デフォルトの名無しさん:2014/02/17(月) 05:27:34.71
>>203
勉強になった

206 :デフォルトの名無しさん:2014/02/17(月) 12:29:59.97
Quilって使ってる人居る?

207 :デフォルトの名無しさん:2014/02/17(月) 22:19:18.20
なんか怖いが第一印象

208 :デフォルトの名無しさん:2014/02/21(金) 00:37:52.59
Quilはけっこう便利
これなら手軽にClojureでゲームが作れたりするんじゃないだろうか
ただgithubのドキュメントがまさにイギリス人の英文って感じなのがあれだけど

209 :デフォルトの名無しさん:2014/02/22(土) 20:26:54.41
test

210 :デフォルトの名無しさん:2014/02/22(土) 20:46:56.31
あれ、まだ?

211 :電波いっぱい:2014/02/23(日) 22:40:30.45
あれって?

212 :デフォルトの名無しさん:2014/02/24(月) 05:52:59.34
かそりんぐ

213 :デフォルトの名無しさん:2014/02/24(月) 12:28:29.24
ID

214 :デフォルトの名無しさん:2014/02/24(月) 23:13:01.99
(every? sequential? [x y])
と書くのだるいから
(sequential? x y)
と書きたいって感じで標準の関数を拡張していくのはよくあること?

あと、R風のベクトル処理できるライブラリとかないかな?Incanterに入ってるのかな?

215 :デフォルトの名無しさん:2014/02/25(火) 22:21:14.29
>>214
ベクトル処理ならmapとReduceあるし
incanterで手軽にlapack使える

216 :デフォルトの名無しさん:2014/02/25(火) 23:53:07.13
Incaterにminusとかplusとかあったみたいね。
(plus 2 [1 2 3]) ;[3 4 5]
単純な演算にmapとか使うのめんどいからさ〜

217 :デフォルトの名無しさん:2014/02/26(水) 06:38:58.46
練習
;;;(plus 2 (1 2 3 )) → (3 4 5)
(defun plus (x lst)
(let ((ptr lst))
(while ptr
(rplaca ptr (+ x (car ptr)))
(setrq ptr (cdr ptr)))
lst))

218 :デフォルトの名無しさん:2014/03/01(土) 08:20:36.25
プログラミングclojure 2版 100page

次のコードが「ほとんどcurry」になるのがなぜかわからん

(defn faux-curry [&amp; args] (apply partial partial args))

ちなみに

(def add-3 ((faux-curry +) 3))
(add-3 7)
-> 10

となる
(ほとんどカリー化のほとんどは すべての引数が固定されたときも定数を返さないから)

219 :デフォルトの名無しさん:2014/03/01(土) 12:05:28.50
カリー化は関数を関数のチェーンに変換することで
部分適用は引数を固定することだから、かな?

220 :デフォルトの名無しさん:2014/03/01(土) 12:32:42.15
「ほとんどカリー化」というか2引数関数のカリー化だな
3引数ならpartial3回いる

221 :デフォルトの名無しさん:2014/03/01(土) 19:37:35.00
compじゃカリー化だめなん?

222 :デフォルトの名無しさん:2014/03/02(日) 10:34:04.97
org.clojure/tools.* とかの最新版ってどうやってさがしてくるん?

223 :デフォルトの名無しさん:2014/03/02(日) 21:48:58.61
apply partial partial とか絶対見たくない

224 :デフォルトの名無しさん:2014/03/02(日) 21:52:38.43
>>222

lein search tools.nrepl

とか?

225 :デフォルトの名無しさん:2014/03/03(月) 00:57:13.85
マクロを利用する関数を書きたい場合って結構あると思うんだけど、
その場合は関数じゃうまくいかなくてマクロを書かざるを得ないな

226 :電波いっぱい:2014/03/03(月) 13:30:21.16
>>225
そんなこと無いと思うけど、具体的にはどんな場合?

227 :デフォルトの名無しさん:2014/03/03(月) 19:10:02.21
関数内でよく使われるマクロはそうでもないけど
トップレベルで使われることを想定してるimportとか
with-outとかwith-precisionとかbindingを利用しているマクロを
さらに拡張しようとした場合に関数だとダメっぽいなあ

228 :デフォルトの名無しさん:2014/03/03(月) 19:41:45.36
(key val key val)のシーケンスからhash-mapに変換する関数はあるけどその逆はないのかな?
引数リストで{:as options}とかした後、そのoptionsをもとのシーケンスに戻したいんだけど
interleave keys vals で元に戻すしかないか

229 :デフォルトの名無しさん:2014/03/03(月) 20:35:19.57
>>224
おおー、ありがと。
lein searchをずっとローカルリポジトリ検索かと思ってた orz

230 :電波いっぱい:2014/03/04(火) 07:01:56.15
>>227
そういうことであれば、そうかもしれないけど、そんなことをするのって、めったにないと思う。

231 :電波いっぱい:2014/03/04(火) 07:06:01.80
>>228
(flatten (seq m))でどうかなぁ。mapになった時点で順番は失われてしまうから、元のシーケンスにはならないけど。

ところで、そんなことが必要になるシチュエーションが思い浮かばないんだけど、どういう時?

232 :デフォルトの名無しさん:2014/03/04(火) 07:52:05.70
>>231
flattenだとvalueがシーケンスの時にうまくいかないと思う
clojure.java.io/readerとか同じようにオプションをとる関数に引き渡していく際に欲しい

233 :デフォルトの名無しさん:2014/03/04(火) 21:07:58.40
LightTableのオススメの設定とかってある?

まだコレくらいしか設定してないけど
#user.keymap
"ctrl-pageup" [:window.zoom-in]
"ctrl-pagedown" [:window.zoom-out]
"alt-c" [:clear-console]
"f3" [:find.next]
"shift-f3" [:find.prev]
"ctrl-/" [:toggle-comment-selection]
"ctrl-w" [:editor.watch.watch-selection]
"ctrl-shift-w" [:editor.watch.unwatch]

f3とかpageupとかも普通に使えるのに驚いた
:toggle-comment-selectionは必須だな。もっと早く知りたかった

Windowsだとalt-wがメニューに吸われるのがだるいなあ・・・

234 :デフォルトの名無しさん:2014/03/04(火) 23:15:28.80
>>228
(mapcat seq mm) とかではだめかな?

235 :デフォルトの名無しさん:2014/03/05(水) 01:16:01.38
>>234
なるほどね。それでいけるね。
apply concatでも大丈夫そう

236 :デフォルトの名無しさん:2014/03/06(木) 02:40:32.58
repl で 
(set! x 4)

とかとしてもエラーにならないxってどうやって定義するの?
(def x 0)
(def ^:dynamic 0)
とかでも
IllegalStateException Can't change/establish root binding of: x with set clojure.lang.Var.set

でエラーになる

237 :デフォルトの名無しさん:2014/03/06(木) 02:57:00.72
clojure.core.clj のソースをみても

(def ^:dynamic *print-level* nil)
とかで定義しているのに、なんで自分で定義したら上のエラーが出るんだ?

238 :デフォルトの名無しさん:2014/03/06(木) 03:20:29.28
>>236
thread localの(bindingした)varに対してset!できる
(def ^{:dynamic true} *TESTVAR* 1)
(binding [*TESTVAR* 2]
*TESTVAR*)
=> 2
(def ^{:dynamic true} *TESTVAR* 1)
(binding [*TESTVAR* 2]
(set! *TESTVAR* 3)
*TESTVAR*)
=> 3

そうでないなら(REPLからとか)
(alter-var-root #'YOUR-VAR-NAME (constantly NEW-VALUE))
みたいにしないと駄目

239 :デフォルトの名無しさん:2014/03/06(木) 04:26:07.41
>>238 なるほどね。Thanks!

でもなんで *print-level*は

(def ^:dynamic *print-level* nil)
で定義されているのに

replで
(set! *print-level* 5)
-> 5
とかできるんだろう

240 :デフォルトの名無しさん:2014/03/06(木) 08:46:49.52
(defn myint []
(let [x (read)]
(binding [mem mem]
(if (< x 0)
(println "good-by")
(do
(set! mem (+ mem x))
(println mem)
(myint))))))

のでつかえばいいんだな

241 :デフォルトの名無しさん:2014/03/06(木) 17:03:49.35
>>239
clojure.mainの中でwith-bindingマクロつかってREPLのループ中でbindingされているから
emacsでnrepl-jack-inとかcider-jack-inして使っているなら clojure.mainをM-.してソースみてみると良いよ
あるいは直接clojureのソースのmain.cljみてみるよろし。(repl関数ね)

242 :デフォルトの名無しさん:2014/03/06(木) 17:27:55.81
sublimeでClojure書いてるひといる?
デフォルトのインデントが糞なのでlispindentって拡張使ってるけど、時々固まるんだよなぁ。

243 :デフォルトの名無しさん:2014/03/06(木) 17:43:10.65
ClojureはLightTableかなぁ
RubyはSublime使うけど

244 :デフォルトの名無しさん:2014/03/06(木) 17:49:45.45
sublime良いエディタだけどclojure使うときはemacsかぬ

245 :電波いっぱい:2014/03/06(木) 22:20:13.89
>>239
被った。
Dynamicのvarをset!できるのは、別スレッドでbindされている場合のみで、
replで*print-length*などをset!できるのは、replが別スレッドで動いていて、
起動時にそれらのvarがbindされているからです。

どこでそのようなことが行なわれているかについては、
https://groups.google.com/d/msg/clojure/ufoDL6eNL3U/czncX8bNNSsJ
にあります。このスレはまったく同じ質問についてのスレなので、他のメッセー
ジも参考になるかと。


ところで、そのdynamicなvarはどのような目的でつかいます?
どこに書いてあったかわすれたけど、set!はclojuerの流儀としてはほとんど
使われなくて、どうしても変更可能な値を管理したい場合はatomなどを使いま
す。

246 :デフォルトの名無しさん:2014/03/07(金) 00:49:09.11
>>245
別スレッドでなくてもset!できますよ

247 :デフォルトの名無しさん:2014/03/09(日) 13:11:05.66
with-meta使えるなあ
付加情報渡すのに便利だわ

248 :デフォルトの名無しさん:2014/03/09(日) 13:20:08.43
塹壕から迫撃砲しよ

249 :デフォルトの名無しさん:2014/03/09(日) 15:55:17.19
シーケンスを引数にとる関数だらけのClojrueではオブジェクト的な構造は使いづらいが
メタ情報を使ってオブジェクト的な構造を表現して渡すのも場合によってはありだな

250 :デフォルトの名無しさん:2014/03/09(日) 20:03:01.27
(get [:a :b :c] 1)は:bなのに
(get '(:a :b :c) 1)はnilになるのな
こんなところではまった。nthを使うべきだった

251 :デフォルトの名無しさん:2014/03/09(日) 23:40:32.71
関数getについて単に無知なんだろ

252 :デフォルトの名無しさん:2014/03/09(日) 23:50:43.49
どういう意味?
リストが暗黙的にマップとして扱われないのはなぜ?

253 :デフォルトの名無しさん:2014/03/10(月) 03:08:58.76
>>252
getはリストとかマップとかは関係なく非線形探索可能なデータに対して使います。(マップ、ベクタ、セット、文字列、配列)
そのようなデータを使う時、nilや指定した値を返すのが便利だから作ったのでしょう。

254 :デフォルトの名無しさん:2014/03/10(月) 19:56:48.85
この例に限らずnilが返ったり、nilを与えたときにどう動作するか
明確にドキュメントに書いてないことが多くて試してみないといけないのがちょっとめんどい

255 :デフォルトの名無しさん:2014/03/11(火) 20:46:55.74
へ?
ベクターは添字でアクセスできるが
リストにそれを求めるのは変だろ
nilが帰ってくるあたりまえ
リストは可変長配列ではないのだから

256 :デフォルトの名無しさん:2014/03/12(水) 20:09:52.24 ID:th2nKpvg
nthではアクセスできるじゃん
hash-mapのvalueにだけ関数を適用して変換できるmap関数のようなものないのかなあ
自作するしかないか

257 :デフォルトの名無しさん:2014/03/12(水) 21:22:44.77 ID:th2nKpvg
coreとcntrib以外にベースになるライブラリってない?
ディレクトリ内を正規表現かglobで検索できる関数が欲しい・・・

258 :デフォルトの名無しさん:2014/03/12(水) 21:32:43.30 ID:w2TVy3P1
glob検索必要って事はWindowsかいね?
普段使いだとUnixとかLinuxとかMacOSだとコマンドラインのレベルでワイルドカード展開しちゃうから必要性感じないのだけど

259 :デフォルトの名無しさん:2014/03/13(木) 00:03:00.15 ID:+EH3xZU4
Android上のclojure起動時間は、ART(KitKatから入ったAOT使うJVMのRuntime)では縮まらない模様だ。
現状のART使ってみたらreplが起動で落ちてしまうので全く使えないのかと思ってたけど、一部動くみたい。
http://nicholaskariniemi.github.io/2014/03/12/clojure-android-startup-benchmarks.html

260 :電波いっぱい:2014/03/13(木) 00:25:56.65 ID:63sq92O1
>>257
Javaのファイル検索にglobがあるからそれをつかっては?

261 :電波いっぱい:2014/03/13(木) 00:36:12.30 ID:63sq92O1
>>256
リストとベクタは順序のある要素の並びだからnthでアクセス
マップはキーと値の関連の集まりだからgetでアクセス。ベクタのインデックスをキーとしてgetが使えるのはオマケ。

マップの全ての値に同じ操作をする必要性かあまり思いつかないけど、reduceを使うときれいにできると思う。

262 :デフォルトの名無しさん:2014/03/13(木) 08:14:17.30 ID:MKpH1D3w
>>256
マップの特定のキーを持つ値に対してであれば、update-inを使いましょう。
全ての値だったらcoreにはないけど、clojure.algo.generic.functor/fmapがあります。

263 :デフォルトの名無しさん:2014/03/13(木) 10:00:28.26 ID:+EH3xZU4
>259 のひとつ前にスタートアップが遅い理由を計測した記事があった
http://nicholaskariniemi.github.io/2014/02/25/clojure-bootstrapping.html
varとmetadataのロードで80%ぐらいかかってるとある

二年前にもAndroidで使おうとしてる人たちが調べてた
http://blog.practical-scheme.net/shiro?20120711-design-decision
http://martinsprogrammingblog.blogspot.de/2012/02/why-is-clojure-so-slow.html
https://raw.github.com/relevance/clojure-conj/master/2011-slides/daniel-solano-gómez-clojure-and-android.pdf
http://clojureclr.blogspot.jp/2011/12/using-ngen-to-improve-clojureclr.html

JVMのlispといってもsbclやkawaの起動は早かったと思う
なのでhello worldベンチするなら一緒にやってあげると、lispではなくclojureの特徴とわかるはず

264 :デフォルトの名無しさん:2014/03/18(火) 14:59:31.28 ID:Tn1P3965
Kormaで並列にMySQLへ接続してると
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure
ってのが出て死ぬ。まだ深追いしてないけど、逐次なら動く。
mysqlのログに一切何も出てないのが謎。

pmapで馬鹿並列にしてるから、何かコネクションの再利用方法とか
設定する必要があるのかな?

265 :デフォルトの名無しさん:2014/03/18(火) 22:33:42.28 ID:AVGKCT5w
max_connection関連かな?わからんけど
TIME_WAITがいっぱいになってたりして

266 :デフォルトの名無しさん:2014/03/19(水) 15:30:04.40 ID:oXIqqE+e
mysqlの問題かもしれんし、もう少し調べます。
スレ汚しすまそ

267 :デフォルトの名無しさん:2014/03/19(水) 20:21:00.17 ID:lJfJcBCq
リソースが取り戻せず、スレッドプールの上限、もしくはmysqlの上限になってるのか。
mysql側は、show processlist;とかで見てみるとか。

スレッド数よりプールが少なくて待たずにおちてるとか、
ライブラリのバグかもしれないし、なんとも言えない。

268 :デフォルトの名無しさん:2014/03/19(水) 20:24:24.96 ID:lJfJcBCq
https://github.com/myfreeweb/clj-bonecp-url/blob/master/README.md
poolさん

269 :デフォルトの名無しさん:2014/03/19(水) 23:00:39.65 ID:egBAL9X9
>>267
直感的にはプール数とスレッド数の関係のような気がする・・・
ありがとうございます

270 :デフォルトの名無しさん:2014/03/20(木) 00:56:12.08 ID:RyuQttGh
http://nicholaskariniemi.github.io/2014/03/19/solving-clojure-boot-time.html
Androidでも速くclojure起動出来るようにする手法を検討してた。

271 :デフォルトの名無しさん:2014/03/22(土) 01:46:11.71 ID:H6xXr1wF
java8がラムダ式導入とか遅延評価とか来たが
Clojure の遅延評価とか高速化されんのかな

272 :デフォルトの名無しさん:2014/03/22(土) 09:17:38.80 ID:QkVVAvLB
言語コアとして遅延評価が入ったわけじゃないから関係ないだろうな
高速化なら7のときのinvokedynamicのほうが恩恵ありそう

273 :sage:2014/03/22(土) 22:40:10.10 ID:kQXftENJ
invokedynamicは議論になってたけど、Android含めた互換性の問題で今のところは見送られています。
Lambdaでinvokedynamicが使われているのを考えると、これも同様に見送りになるのでは。

274 :デフォルトの名無しさん:2014/03/23(日) 12:42:58.40 ID:SAz6Yfrw
>>269
デスクトップ環境では、ちょっとしたスクリプトを繰り返し使いたいなら、drip、java -client or -XX:+TieredCompilationがつかえるので、
http://eigenhombre.com/clojure/2012/11/16/lightning-fast-startup-times-for-clojure-programs/
http://www.slideshare.net/nekop/20130830-java-dragracetuning

現時点では、繰り返し起動するような開発手法とGUIアプリ、特にモバイルアプリ独自の悩みになって来てるとおもう。
http://gal.dolber.com/post/78110050703/reduce-startup
https://github.com/galdolber/clojurefast

275 :デフォルトの名無しさん:2014/03/23(日) 14:34:28.66 ID:60hyhDZ1
clojure CLRってWinRT端末でもうごくん?

276 :デフォルトの名無しさん:2014/03/26(水) 20:24:51.33 ID:6aJM0KWZ
Clojure1.6がリリースされた

277 :デフォルトの名無しさん:2014/03/27(木) 01:05:30.61 ID:SdqpiaKJ
今回は、何事もなく。
1.5のときは、大変だったみたいだけど。

clojureのwebスタックのセキュリティ周りが足りてないらしく(一般的なフレームワークが、ここ5年ぐらい叩かれて対応してきた部分)、ある意味コミットするチャンスかも。
https://hackworth.be/2014/03/26/clojure-web-security-is-worse-than-you-think/

278 :デフォルトの名無しさん:2014/03/27(木) 23:51:56.02 ID:SdqpiaKJ
http://www.clojurewest.org/schedule
clojure/west2014のスポンサーが、小売の研究所や天候予測、農家の集計とか、EC専業や金融でないのが面白い感じ。
ウォルマートにも研究所があるのか。

279 :デフォルトの名無しさん:2014/03/29(土) 14:52:41.94 ID:LoHVEupa
Processingのjarを使ってclojureでグラフィックを書いています。
高負荷の作画をした際に初めて分かったのですが、Javaで書いた同じプログラムよりclojureの方が大分遅くなります。
推測では原因はjavaメソッドの呼び出しで、lineやrectなどの作画メソッドを1フレームに数千回は呼んでいます。この呼び出し数を下げるとパフォーマンス悪化が和らいできます。
なんとかJavaで書いたプログラムと同等のパフォーマンスを出したいのですが、javaメソッド呼び出し部分を工夫する余地がないように思います。(.line applet x1 y1 x2 y2)
どなたかアドバイスを頂けませんでしょうか?

280 :デフォルトの名無しさん:2014/03/29(土) 14:55:33.55 ID:46qVoWdl
javaで書いてしまいましょう

281 :デフォルトの名無しさん:2014/03/29(土) 14:58:17.67 ID:yiV3q/LE
>>279
つQuil

282 :デフォルトの名無しさん:2014/03/29(土) 15:30:04.24 ID:LoHVEupa
quilは使っていました。しかしquilのサポートするprocessingのバージョンが古いままなので、直接processingを使うことにした次第です。

quilでも同じコードを書いて試してみたのですが、
processing.jarを使う <(若干早い) quil <(全然はやい) Java
でした。
万策尽きました、がっくし

283 :デフォルトの名無しさん:2014/03/29(土) 15:32:21.00 ID:NMmPcx+b
だから、javaで書け

284 :デフォルトの名無しさん:2014/03/29(土) 16:03:50.55 ID:qrJfmm9g
リフレクションが使われていないかは確かめた?
型ヒントでリフレクション使われないようにすると50倍くらいは差が出るよ

285 :デフォルトの名無しさん:2014/03/29(土) 16:28:07.03 ID:LoHVEupa
>>284
(def applet (new PApplet)) となってたのを
(def ^PApplet applet (new PApplet)) としたら
死ぬほど早くなりました。
つまらないことお聞きして失礼しました(てへぺろ

これでclojureでのコーディングが続けられてウレシイです

286 :デフォルトの名無しさん:2014/03/29(土) 16:56:57.64 ID:yiV3q/LE
型ヒントってそんなに違うものなのか
ちなみに作ってるのってゲーム?

287 :デフォルトの名無しさん:2014/03/29(土) 17:11:41.63 ID:BM6Xgp1r
Clojureのチューニングポイントはいろいろあるけど、Javaと比べて実行時間1.2倍くらいまでなら容易に達成できます。
そこまで達成できないのであれば、まだまだチューニングの余地ありと考えましょう。

ちなみに、普通にJavaで書くよりもClojureの方が高速になる特異な事例もあります。

288 :デフォルトの名無しさん:2014/03/29(土) 17:13:30.01 ID:LoHVEupa
>>286
Clojureの練習を兼ねてジェネラティブ・デザインを少々
Android用Processing.jar + Clojure でゲームにしたいですがハードル高そう

289 :デフォルトの名無しさん:2014/03/29(土) 17:31:16.72 ID:XODOKiZ8
おお、凄いな

290 :デフォルトの名無しさん:2014/03/29(土) 19:36:12.68 ID:yiV3q/LE
デザイン系か
Androidだったらleindroid+Quilじゃ駄目なん?

291 :デフォルトの名無しさん:2014/03/29(土) 19:48:47.96 ID:YpOewtNN
clojureが速いという例では無いが、(Elasped secが実行時間、CPU secの合計で、CPU Secだとだいぶ遅い)
下のページのjavaとの比較表でダガーマークがついてるやつは、javaが1coreでclojureがマルチコア使ってて、

http://benchmarksgame.alioth.debian.org/u64q/clojure.php
† possible mismatch - one-core program compared to multi-core program.

ソースみるとclojure側も並列化意識してないCっぽいプログラムのベタ移植たけど、勝手にマルチコア使ってくれてるものが幾つかある。

292 :デフォルトの名無しさん:2014/03/30(日) 10:24:46.95 ID:csT97O8F
Javaの呼び出しが入っちゃったら並列化可能かどうかの解析なんか結局不可能だからなあ
現実的じゃないよ

293 :デフォルトの名無しさん:2014/03/30(日) 13:54:21.15 ID:UMO+OpiR
並列化は正確には並列実行を保証するものではなくて、並列表現できるという意味だしな…

294 :デフォルトの名無しさん:2014/03/30(日) 14:17:58.22 ID:8SJ6u3a3
>>293
破壊的代入を自動検知して不変性侵犯の有無を元に最適化とかできるようなシステムがあればいいのにと思う事も無いではない。

言語レベル(記述レベルで保証させる)だとHaskellみたいにちょっと堅苦しい事になるのが嫌いなんだよなー

295 :デフォルトの名無しさん:2014/04/01(火) 02:28:32.89 ID:oW/UHGTB
androidもlein-droidも触るの初めてでしたが、lein-droidとprocessing-android でやっと hello world ができました。丸一日かかってしまいました。
lein-droidはjava classのコンパイル時にclojureソースでimportしたJavaクラスのスタティック初期化部が実行されてしまい、それがandroidライブラリのスタブにまで到達した場合、コンパイルエラーになる問題に苦戦させられました。これどうにかならないかな〜

296 :デフォルトの名無しさん:2014/04/01(火) 03:28:08.64 ID:6I3F3lks
lein javacでrecompileしたclassってreplからreloadできないん?

297 :デフォルトの名無しさん:2014/04/01(火) 03:46:20.15 ID:zuSItmXn
社内利用とかじゃなくて、実案件でclojure使う例ってあるの?

298 :デフォルトの名無しさん:2014/04/01(火) 03:52:07.22 ID:6I3F3lks
ごめん296だけど探し方が悪かったみたい。
ttps://github.com/zcaudate/vinyasa
こんなの見つけた、leiningenのプラグインでreplからjavacしてreimportさせる仕組みを実装したものを見つけた。

299 :デフォルトの名無しさん:2014/04/01(火) 03:53:43.56 ID:6I3F3lks
>>297
日本だと少ないけど自分はリリースしたものあるよ。(もうサービス終わっちゃったけど orz)
あとはニャンパスの人が仕事で使ってるってblogで言ってるね。

300 :デフォルトの名無しさん:2014/04/01(火) 08:35:04.77 ID:oFy+THWF
>>297
ニャンパスではありませんが、ClojureとClojureScript使った複数のサービスリリース経験ありますよ(運用中のもあります)

301 :デフォルトの名無しさん:2014/04/01(火) 13:39:10.84 ID:xLiVzV5o
>>297
Googleから独立したベンチャーのbyflow?みたいなところが使ってなかったっけ?

302 :デフォルトの名無しさん:2014/04/01(火) 20:29:08.25 ID:LNeUvpk1
clojureで書くだけのメリットがあるコードって何なんだろ

303 :デフォルトの名無しさん:2014/04/01(火) 23:09:04.50 ID:TpH+LQDd
オブジェクト志向向けじゃない問題なのにjava資産を使いたい場合。
まぁ普通に使ってもjavaより断然短く書けるよね。

304 :デフォルトの名無しさん:2014/04/01(火) 23:27:35.57 ID:uZRloOCu
scalaと差別化した回答にして欲しいところ

305 :デフォルトの名無しさん:2014/04/01(火) 23:53:22.93 ID:xLiVzV5o
Lispの文法でJava資産を使いたいとき、とか?
あとLeiningenがあるのも

306 :デフォルトの名無しさん:2014/04/02(水) 02:05:33.83 ID:34P1vxkc
>>304
・scalaのreplは遅くてイライラする
・scalaのreplは複数ファイルをロードするとき、一つを読んだら他のファイルもロードしなくてはならないのが面倒
・scalaは、コンパイルが通るコードもreplに通らないことがある(例: class定義の{の前後の改行位置)

どっちもプロトタイプ向けにしか使わないと思うので、文法よりもこれが決定的

文法で言うなら、scalaは、継承やジェネリックのルールが覚えられないほど細かいのが欠点

307 :デフォルトの名無しさん:2014/04/02(水) 08:55:56.47 ID:eMainclp
文法を間違えないの他に何もメリットが思い浮かばない

308 :デフォルトの名無しさん:2014/04/03(木) 03:49:09.83 ID:MeCz6RkU
あまり使い込んでないから言えないけど、マクロとか?
いや、そこまで積極的に使うものでもないか

309 :デフォルトの名無しさん:2014/04/03(木) 19:37:09.15 ID:B/aZWfqA
Scala複雑すぎるし無駄にしょっちゅうライブラリ弄りすぎ

310 :デフォルトの名無しさん:2014/04/03(木) 20:01:04.53 ID:3wZs6sQe
Scalaあんまり触ったこと無いけど、なんていうのかな、機能同士が直交してないっていうのかな。○○と××を一緒に使うと問題があるのでこの場合は例外的に△△しますみたいなケースが多くて頭がパンクする

311 :デフォルトの名無しさん:2014/04/03(木) 20:36:13.58 ID:KbAl46jm
>>302
速度クリティカルな数値計算でゴリゴリやらない奴なら何でもいいんじゃなかろうかと思う今日この頃。

312 :デフォルトの名無しさん:2014/04/04(金) 01:21:36.48 ID:4493K1P2
雑用スクリプト作ったり、プレゼン用にプロトタイプを30分で作るための言語という認識しかない

313 :デフォルトの名無しさん:2014/04/04(金) 10:49:26.57 ID:9/ypcDw3
>>312
その認識は間違い

314 :デフォルトの名無しさん:2014/04/04(金) 13:24:05.74 ID:/wbzo9Gd
>>312
それならRubyとかPythonの方が良くね?

315 :デフォルトの名無しさん:2014/04/04(金) 23:52:33.16 ID:HRToJQcJ
>>314
Javaが楽に使えるから、過去のservlet資産を組み合わせて短時間で見栄えのいいプロトタイプを作るのに重宝してる
携帯用もできるから手放せない

事務の雑用スクリプトは、もうその人の癖の領域だから、文法とかはもう関係ないかと

316 :デフォルトの名無しさん:2014/04/05(土) 00:17:58.87 ID:yO4qa4lc
REPLが重宝するという話だと、
データ解析とかHadoopの処理をサンプリングしてREPLで組んじゃう話は聞くな。
DB系でコンソールで解析しちゃったり、
コマンドライン上で、パイプコマンドでapacheログ解析しちゃう系のイメージ

317 :デフォルトの名無しさん:2014/04/05(土) 00:30:37.59 ID:F+xvKCYK
replに打ち込んだ履歴をそのままプログラムに反映させようとするとき、Lisp系は各コマンドがS式で独立してる率が高いから重宝する
他のスクリプト言語は前後の文脈も考えて頭つかう必要があることが多い気がする

318 :デフォルトの名無しさん:2014/04/09(水) 13:59:35.01 ID:LRWrSFoo
REPLでdefnしてたの忘れてcljファイルに反映しないで作り込んだら次回cider-jackinしたらコンパイルエラーで起動しなくて焦った。
こういうの忘れない様にするテクニックとかツールないかな?

319 :デフォルトの名無しさん:2014/04/09(水) 15:26:55.41 ID:WwH8h4FP
>>318
lein compileをするのが確実です。

320 :デフォルトの名無しさん:2014/04/09(水) 17:07:32.49 ID:LRWrSFoo
>>319
nreplしてるとlein起動自体重くて忘れがちでした orz
「lein testしろやゴルァ」な付箋をモニタに貼り付けておこうと思います。

[壁]д・)チラッ
nreplの中でdefnしたものをsnipetにして吐いてくれるelispないかなー

321 :デフォルトの名無しさん:2014/04/09(水) 18:27:30.98 ID:ZiEyUtyX
orz、ゴルァ、壁チラww
こいつ何年前からタイムスリップしてきたの?

322 :デフォルトの名無しさん:2014/04/09(水) 22:25:16.39 ID:6vjqJJUY
http://www.slideshare.net/metosin/swaggered-web-apis-in-clojure
https://github.com/metosin/fnhouse-swagger

https://github.com/myfreeweb/octohipster

schemaとswagger使ったapiファーストのRESTツールみたい。
このような構成にDB(データストア)組み合わせるとしたら何にどう繋ぐのがいいのかな。

323 :デフォルトの名無しさん:2014/04/10(木) 16:39:12.97 ID:FMX8fFXB
>>321
それがどうした?
としか思わんのだが。
だいたい未来からきたんじゃねぇの?(あるいは>>321が未来すぎる)なんで苛ついてるんだか。

LightTableのREPLが綺麗に死なない(LTをQuitしても残る)んだけど同じような経験してる人いる?<<Win8

324 :デフォルトの名無しさん:2014/04/10(木) 22:34:00.23 ID:Evnw+C/+
https://blog.engineyard.com/2014/clojure-web-app-engine-yard
EngineYardは、無料枠がないからつかったことがない。でもカッコいい。

https://www.openshift.com/blogs/how-to-host-your-clojure-app-on-openshift
OpenShiftは、無料枠あるので試しやすいが、紹介記事はservletではなくhttp-kit使う解説だ。

325 :デフォルトの名無しさん:2014/04/14(月) 19:11:19.92 ID:KX6l8Rz8
ttp://puppetlabs.com/blog/new-era-application-services-puppet-labs
オメルタの掟を破った彼らは、この先どうなるんだろうか

326 :デフォルトの名無しさん:2014/04/14(月) 20:03:10.09 ID:uL8dJ7v1
immutantみたいに、デプロイとか運用向けのツールなのかな?

http://www.slideshare.net/grim_radical/puppetdb-sneaking-clojure-into-operations
こんな感じで実際に使ってるのかな?
clojureのweb frameworkまわりでも最近CQRSってキーワードよく見かけるな。

327 :デフォルトの名無しさん:2014/04/15(火) 23:32:39.23 ID:TmAN8KJA
HTM/CLA
https://www.taoeffect.com/other/nupic/
http://fergalbyrne.github.io/

https://github.com/numenta/nupic/wiki/CLA-and-HTM-Theory
http://numenta.org/cla-white-paper.html

なんかのキャッシュシステムかと思ったら、機械学習とかのシステムだった。

328 :デフォルトの名無しさん:2014/05/01(木) 23:02:40.45 ID:7+I4mY8K
http://reborg.tumblr.com/post/84235302368/clojure-weekly-april-29th-2014
datascript の簡潔な説明があった。っても全部載せられない長さだけど。

> tonsky/datascript Interesting ClojureScript idea,
implementing a Datalog query engine on top of Clojure immutable data structures.
It is meant to run in the browser with a lifecycle starting at page load and ending
the next page load. It is technically an in-memory database in the browser. When to use? ... 続く

329 :デフォルトの名無しさん:2014/05/01(木) 23:09:25.27 ID:7+I4mY8K
RFPを想定してると思われるが、moriやomの一部置き換える事が出来るのかな?

330 :デフォルトの名無しさん:2014/05/08(木) 21:18:03.15 ID:s8hUpgGE
Incanter2.0作ろうって物好きが新機能の案募集してるな

83 KB
新着レスの表示

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)