1 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 11:03:28.38 .net] JVM上で動作するLisp方言「Clojure」のスレ。 Clojure - home clojure.org/ www.try-clojure.org/ 前スレ: 【Lisp】プログラミング言語 Clojure #2【JVM】 toro.2ch.net/test/read.cgi/tech/1318498898/ 【Lisp】プログラミング言語 Clojure【JVM】 hibari.2ch.net/test/read.cgi/tech/1255533519/
231 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 19:41:45.36 .net] (key val key val)のシーケンスからhash-mapに変換する関数はあるけどその逆はないのかな? 引数リストで{:as options}とかした後、そのoptionsをもとのシーケンスに戻したいんだけど interleave keys vals で元に戻すしかないか
232 名前:デフォルトの名無しさん mailto:sage [2014/03/03(月) 20:35:19.57 .net] >>224 おおー、ありがと。 lein searchをずっとローカルリポジトリ検索かと思ってた orz
233 名前:電波いっぱい mailto:sage [2014/03/04(火) 07:01:56.15 .net] >>227 そういうことであれば、そうかもしれないけど、そんなことをするのって、めったにないと思う。
234 名前:電波いっぱい mailto:sage [2014/03/04(火) 07:06:01.80 .net] >>228 (flatten (seq m))でどうかなぁ。mapになった時点で順番は失われてしまうから、元のシーケンスにはならないけど。 ところで、そんなことが必要になるシチュエーションが思い浮かばないんだけど、どういう時?
235 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 07:52:05.70 .net] >>231 flattenだとvalueがシーケンスの時にうまくいかないと思う clojure.java.io/readerとか同じようにオプションをとる関数に引き渡していく際に欲しい
236 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 21:07:58.40 .net] 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がメニューに吸われるのがだるいなあ・・・
237 名前:デフォルトの名無しさん mailto:sage [2014/03/04(火) 23:15:28.80 .net] >>228 (mapcat seq mm) とかではだめかな?
238 名前:デフォルトの名無しさん mailto:sage [2014/03/05(水) 01:16:01.38 .net] >>234 なるほどね。それでいけるね。 apply concatでも大丈夫そう
239 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 02:40:32.58 .net] 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 でエラーになる
240 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 02:57:00.72 .net] clojure.core.clj のソースをみても (def ^:dynamic *print-level* nil) とかで定義しているのに、なんで自分で定義したら上のエラーが出るんだ?
241 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 03:20:29.28 .net] >>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)) みたいにしないと駄目
242 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 04:26:07.41 .net] >>238 なるほどね。Thanks! でもなんで *print-level*は (def ^:dynamic *print-level* nil) で定義されているのに replで (set! *print-level* 5) -> 5 とかできるんだろう
243 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 08:46:49.52 .net] (defn myint [] (let [x (read)] (binding [mem mem] (if (< x 0) (println "good-by") (do (set! mem (+ mem x)) (println mem) (myint)))))) のでつかえばいいんだな
244 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 17:03:49.35 .net] >>239 clojure.mainの中でwith-bindingマクロつかってREPLのループ中でbindingされているから emacsでnrepl-jack-inとかcider-jack-inして使っているなら clojure.mainをM-.してソースみてみると良いよ あるいは直接clojureのソースのmain.cljみてみるよろし。(repl関数ね)
245 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 17:27:55.81 .net] sublimeでClojure書いてるひといる? デフォルトのインデントが糞なのでlispindentって拡張使ってるけど、時々固まるんだよなぁ。
246 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 17:43:10.65 .net] ClojureはLightTableかなぁ RubyはSublime使うけど
247 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 17:49:45.45 .net] sublime良いエディタだけどclojure使うときはemacsかぬ
248 名前:電波いっぱい mailto:sage [2014/03/06(木) 22:20:13.89 .net] >>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などを使いま す。
249 名前:デフォルトの名無しさん [2014/03/07(金) 00:49:09.11 .net] >>245 別スレッドでなくてもset!できますよ
250 名前:デフォルトの名無しさん [2014/03/09(日) 13:11:05.66 .net] with-meta使えるなあ 付加情報渡すのに便利だわ
251 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 13:20:08.43 .net] 塹壕から迫撃砲しよ
252 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 15:55:17.19 .net] シーケンスを引数にとる関数だらけのClojrueではオブジェクト的な構造は使いづらいが メタ情報を使ってオブジェクト的な構造を表現して渡すのも場合によってはありだな
253 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 20:03:01.27 .net] (get [:a :b :c] 1)は:bなのに (get '(:a :b :c) 1)はnilになるのな こんなところではまった。nthを使うべきだった
254 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 23:40:32.71 .net] 関数getについて単に無知なんだろ
255 名前:デフォルトの名無しさん mailto:sage [2014/03/09(日) 23:50:43.49 .net] どういう意味? リストが暗黙的にマップとして扱われないのはなぜ?
256 名前:デフォルトの名無しさん [2014/03/10(月) 03:08:58.76 .net] >>252 getはリストとかマップとかは関係なく非線形探索可能なデータに対して使います。(マップ、ベクタ、セット、文字列、配列) そのようなデータを使う時、nilや指定した値を返すのが便利だから作ったのでしょう。
257 名前:デフォルトの名無しさん mailto:sage [2014/03/10(月) 19:56:48.85 .net] この例に限らずnilが返ったり、nilを与えたときにどう動作するか 明確にドキュメントに書いてないことが多くて試してみないといけないのがちょっとめんどい
258 名前:デフォルトの名無しさん mailto:sage [2014/03/11(火) 20:46:55.74 .net] へ? ベクターは添字でアクセスできるが リストにそれを求めるのは変だろ nilが帰ってくるあたりまえ リストは可変長配列ではないのだから
259 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 20:09:52.24 ID:th2nKpvg.net] nthではアクセスできるじゃん hash-mapのvalueにだけ関数を適用して変換できるmap関数のようなものないのかなあ 自作するしかないか
260 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 21:22:44.77 ID:th2nKpvg.net] coreとcntrib以外にベースになるライブラリってない? ディレクトリ内を正規表現かglobで検索できる関数が欲しい・・・
261 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 21:32:43.30 ID:w2TVy3P1.net] glob検索必要って事はWindowsかいね? 普段使いだとUnixとかLinuxとかMacOSだとコマンドラインのレベルでワイルドカード展開しちゃうから必要性感じないのだけど
262 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 00:03:00.15 ID:+EH3xZU4.net] Android上のclojure起動時間は、ART(KitKatから入ったAOT使うJVMのRuntime)では縮まらない模様だ。 現状のART使ってみたらreplが起動で落ちてしまうので全く使えないのかと思ってたけど、一部動くみたい。 nicholaskariniemi.github.io/2014/03/12/clojure-android-startup-benchmarks.html
263 名前:電波いっぱい mailto:sage [2014/03/13(木) 00:25:56.65 ID:63sq92O1.net] >>257 Javaのファイル検索にglobがあるからそれをつかっては?
264 名前:電波いっぱい mailto:sage [2014/03/13(木) 00:36:12.30 ID:63sq92O1.net] >>256 リストとベクタは順序のある要素の並びだからnthでアクセス マップはキーと値の関連の集まりだからgetでアクセス。ベクタのインデックスをキーとしてgetが使えるのはオマケ。 マップの全ての値に同じ操作をする必要性かあまり思いつかないけど、reduceを使うときれいにできると思う。
265 名前:デフォルトの名無しさん [2014/03/13(木) 08:14:17.30 ID:MKpH1D3w.net] >>256 マップの特定のキーを持つ値に対してであれば、update-inを使いましょう。 全ての値だったらcoreにはないけど、clojure.algo.generic.functor/fmapがあります。
266 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 10:00:28.26 ID:+EH3xZU4.net] >259 のひとつ前にスタートアップが遅い理由を計測した記事があった nicholaskariniemi.github.io/2014/02/25/clojure-bootstrapping.html varとmetadataのロードで80%ぐらいかかってるとある 二年前にもAndroidで使おうとしてる人たちが調べてた blog.practical-scheme.net/shiro?20120711-design-decision 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 clojureclr.blogspot.jp/2011/12/using-ngen-to-improve-clojureclr.html JVMのlispといってもsbclやkawaの起動は早かったと思う なのでhello worldベンチするなら一緒にやってあげると、lispではなくclojureの特徴とわかるはず
267 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 14:59:31.28 ID:Tn1P3965.net] Kormaで並列にMySQLへ接続してると com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure ってのが出て死ぬ。まだ深追いしてないけど、逐次なら動く。 mysqlのログに一
268 名前:切何も出てないのが謎。 pmapで馬鹿並列にしてるから、何かコネクションの再利用方法とか 設定する必要があるのかな? [] [ここ壊れてます]
269 名前:デフォルトの名無しさん mailto:sage [2014/03/18(火) 22:33:42.28 ID:AVGKCT5w.net] max_connection関連かな?わからんけど TIME_WAITがいっぱいになってたりして
270 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 15:30:04.40 ID:oXIqqE+e.net] mysqlの問題かもしれんし、もう少し調べます。 スレ汚しすまそ
271 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 20:21:00.17 ID:lJfJcBCq.net] リソースが取り戻せず、スレッドプールの上限、もしくはmysqlの上限になってるのか。 mysql側は、show processlist;とかで見てみるとか。 スレッド数よりプールが少なくて待たずにおちてるとか、 ライブラリのバグかもしれないし、なんとも言えない。
272 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 20:24:24.96 ID:lJfJcBCq.net] https://github.com/myfreeweb/clj-bonecp-url/blob/master/README.md poolさん
273 名前:デフォルトの名無しさん mailto:sage [2014/03/19(水) 23:00:39.65 ID:egBAL9X9.net] >>267 直感的にはプール数とスレッド数の関係のような気がする・・・ ありがとうございます
274 名前:デフォルトの名無しさん mailto:sage [2014/03/20(木) 00:56:12.08 ID:RyuQttGh.net] nicholaskariniemi.github.io/2014/03/19/solving-clojure-boot-time.html Androidでも速くclojure起動出来るようにする手法を検討してた。
275 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 01:46:11.71 ID:H6xXr1wF.net] java8がラムダ式導入とか遅延評価とか来たが Clojure の遅延評価とか高速化されんのかな
276 名前:デフォルトの名無しさん mailto:sage [2014/03/22(土) 09:17:38.80 ID:QkVVAvLB.net] 言語コアとして遅延評価が入ったわけじゃないから関係ないだろうな 高速化なら7のときのinvokedynamicのほうが恩恵ありそう
277 名前:sage [2014/03/22(土) 22:40:10.10 ID:kQXftENJ.net] invokedynamicは議論になってたけど、Android含めた互換性の問題で今のところは見送られています。 Lambdaでinvokedynamicが使われているのを考えると、これも同様に見送りになるのでは。
278 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 12:42:58.40 ID:SAz6Yfrw.net] >>269 デスクトップ環境では、ちょっとしたスクリプトを繰り返し使いたいなら、drip、java -client or -XX:+TieredCompilationがつかえるので、 eigenhombre.com/clojure/2012/11/16/lightning-fast-startup-times-for-clojure-programs/ www.slideshare.net/nekop/20130830-java-dragracetuning 現時点では、繰り返し起動するような開発手法とGUIアプリ、特にモバイルアプリ独自の悩みになって来てるとおもう。 gal.dolber.com/post/78110050703/reduce-startup https://github.com/galdolber/clojurefast
279 名前:デフォルトの名無しさん mailto:sage [2014/03/23(日) 14:34:28.66 ID:60hyhDZ1.net] clojure CLRってWinRT端末でもうごくん?
280 名前:デフォルトの名無しさん mailto:sage [2014/03/26(水) 20:24:51.33 ID:6aJM0KWZ.net] Clojure1.6がリリースされた
281 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 01:05:30.61 ID:SdqpiaKJ.net] 今回は、何事もなく。 1.5のときは、大変だったみたいだけど。 clojureのwebスタックのセキュリティ周りが足りてないらしく(一般的なフレームワークが、ここ5年ぐらい叩かれて対応してきた部分)、ある意味コミットするチャンスかも。 https://hackworth.be/2014/03/26/clojure-web-security-is-worse-than-you-think/
282 名前:デフォルトの名無しさん mailto:sage [2014/03/27(木) 23:51:56.02 ID:SdqpiaKJ.net] www.clojurewest.org/schedule clojure/west2014のスポンサーが、小売の研究所や天候予測、農家の集計とか、EC専業や金融でないのが面白い感じ。 ウォルマートにも研究所があるのか。
283 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 14:52:41.94 ID:LoHVEupa.net] Processingのjarを使ってclojureでグラフィックを書いています。 高負荷の作画をした際に初めて分かったのですが、Javaで書いた同じプログラムよりclojureの方が大分遅くなります。 推測では原因はjavaメソッドの呼び出しで、lineやrectなどの作画メソッドを1フレームに数千回は呼んでいます。この呼び出し数を下げるとパフォーマンス悪化が和らいできます。 なんとかJavaで書いたプログラムと同等のパフォーマンスを出したいのですが、javaメソッド呼び出し部分を工夫する余地がないように思います。(.line applet x1 y1 x2 y2) どなたかアドバイスを頂けませんでしょうか?
284 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 14:55:33.55 ID:46qVoWdl.net] javaで書いてしまいましょう
285 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 14:58:17.67 ID:yiV3q/LE.net] >>279 つQuil
286 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 15:30:04.24 ID:LoHVEupa.net] quilは使っていました。しかしquilのサポートするprocessingのバージョンが古いままなので、直接processingを使うことにした次第です。 quilでも同じコードを書いて試してみたのですが、 processing.jarを使う <(若干早い) quil <(全然はやい) Java でした。 万策尽きました、がっくし
287 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 15:32:21.00 ID:NMmPcx+b.net] だから、javaで書け
288 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 16:03:50.55 ID:qrJfmm9g.net] リフレクションが使われていないかは確かめた? 型ヒントでリフレクション使われないようにすると50倍くらいは差が出るよ
289 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 16:28:07.03 ID:LoHVEupa.net] >>284 (def applet (new PApplet)) となってたのを (def ^PApplet applet (new PApplet)) としたら 死ぬほど早くなりました。 つまらないことお聞きして失礼しました(てへぺろ これでclojureでのコーディングが続けられてウレシイです
290 名前:デフォルトの名無しさん [2014/03/29(土) 16:56:57.64 ID:yiV3q/LE.net] 型ヒントってそんなに違うものなのか ちなみに作ってるのってゲーム?
291 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 17:11:41.63 ID:BM6Xgp1r.net] Clojureのチューニングポイントはいろいろあるけど、Javaと比べて実行時間1.2倍くらいまでなら容易に達成できます。 そこまで達成できないのであれば、まだまだチューニングの余地ありと考えましょう。 ちなみに、普通にJavaで書くよりもClojureの方が高速になる特異な事例もあります。
292 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 17:13:30.01 ID:LoHVEupa.net] >>286 Clojureの練習を兼ねてジェネラティブ・デザインを少々 Android用Processing.jar + Clojure でゲームにしたいですがハードル高そう
293 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 17:31:16.72 ID:XODOKiZ8.net] おお、凄いな
294 名前:デフォルトの名無しさん [2014/03/29(土) 19:36:12.68 ID:yiV3q/LE.net] デザイン系か Androidだったらleindroid+Quilじゃ駄目なん?
295 名前:デフォルトの名無しさん mailto:sage [2014/03/29(土) 19:48:47.96 ID:YpOewtNN.net] clojureが速いという例では無いが、(Elasped secが実行時間、CPU secの合計で、CPU Secだとだいぶ遅い) 下のページのjavaとの比較表でダガーマークがついてるやつは、javaが1coreでclojureがマルチコア使ってて、 benchmarksgame.alioth.debian.org/u64q/clojure.php † possible mismatch - one-core program compared to multi-core program. ソースみるとclojure側も並列化意識してないCっぽいプログラムのベタ移植たけど、勝手にマルチコア使ってくれてるものが幾つかある。
296 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 10:24:46.95 ID:csT97O8F.net] Javaの呼び出しが入っちゃったら並列化可能かどうかの解析なんか結局不可能だからなあ 現実的じゃないよ
297 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 13:54:21.15 ID:UMO+OpiR.net] 並列化は正確には並列実行を保証するものではなくて、並列表現できるという意味だしな…
298 名前:デフォルトの名無しさん mailto:sage [2014/03/30(日) 14:17:58.22 ID:8SJ6u3a3.net] >>293 破壊的代入を自動検知して不変性侵犯の有無を元に最適化とかできるようなシステムがあればいいのにと思う事も無いではない。 言語レベル(記述レベルで保証させる)だとHaskellみたいにちょっと堅苦しい事になるのが嫌いなんだよなー
299 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 02:28:32.89 ID:oW/UHGTB.net] androidもlein-droidも触るの初めてでしたが、lein-droidとprocessing-android でやっと hello world ができました。丸一日かかってしまいました。 lein-droidはjava classのコンパイル時にclojureソースでimportしたJavaクラスのスタティック初期化部が実行されてしまい、それがandroidライブラリのスタブにまで到達した場合、コンパイルエラーになる問題に苦戦させられました。これどうにかならないかな〜
300 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 03:28:08.64 ID:6I3F3lks.net] lein javacでrecompileしたclassってreplからreloadできないん?
301 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 03:46:20.15 ID:zuSItmXn.net] 社内利用とかじゃなくて、実案件でclojure使う例ってあるの?
302 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 03:52:07.22 ID:6I3F3lks.net] ごめん296だけど探し方が悪かったみたい。 ttps://github.com/zcaudate/vinyasa こんなの見つけた、leiningenのプラグインでreplからjavacしてreimportさせる仕組みを実装したものを見つけた。
303 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 03:53:43.56 ID:6I3F3lks.net] >>297 日本だと少ないけど自分はリリースしたものあるよ。(もうサービス終わっちゃったけど orz) あとはニャンパスの人が仕事で使ってるってblogで言ってるね。
304 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 08:35:04.77 ID:oFy+THWF.net] >>297 ニャンパスではありませんが、ClojureとClojureScript使った複数のサービスリリース経験ありますよ(運用中のもあります)
305 名前:デフォルトの名無しさん [2014/04/01(火) 13:39:10.84 ID:xLiVzV5o.net] >>297 Googleから独立したベンチャーのbyflow?みたいなところが使ってなかったっけ?
306 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 20:29:08.25 ID:LNeUvpk1.net] clojureで書くだけのメリットがあるコードって何なんだろ
307 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 23:09:04.50 ID:TpH+LQDd.net] オブジェクト志向向けじゃない問題なのにjava資産を使いたい場合。 まぁ普通に使ってもjavaより断然短く書けるよね。
308 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 23:27:35.57 ID:uZRloOCu.net] scalaと差別化した回答にして欲しいところ
309 名前:デフォルトの名無しさん mailto:sage [2014/04/01(火) 23:53:22.93 ID:xLiVzV5o.net] Lispの文法でJava資産を使いたいとき、とか? あとLeiningenがあるのも
310 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 02:05:33.83 ID:34P1vxkc.net] >>304 ・scalaのreplは遅くてイライラする ・scalaのreplは複数ファイルをロードするとき、一つを読んだら他のファイルもロードしなくてはならないのが面倒 ・scalaは、コンパイルが通るコードもreplに通らないことがある(例: class定義の{の前後の改行位置) どっちもプロトタイプ向けにしか使わないと思うので、文法よりもこれが決定的 文法で言うなら、scalaは、継承やジェネリックのルールが覚えられないほど細かいのが欠点
311 名前:デフォルトの名無しさん mailto:sage [2014/04/02(水) 08:55:56.47 ID:eMainclp.net] 文法を間違えないの他に何もメリットが思い浮かばない
312 名前:デフォルトの名無しさん mailto:sage [2014/04/03(木) 03:49:09.83 ID:MeCz6RkU.net] あまり使い込んでないから言えないけど、マクロとか? いや、そこまで積極的に使うものでもないか
313 名前:デフォルトの名無しさん mailto:sage [2014/04/03(木) 19:37:09.15 ID:B/aZWfqA.net] Scala複雑すぎるし無駄にしょっちゅうライブラリ弄りすぎ
314 名前:デフォルトの名無しさん mailto:sage [2014/04/03(木) 20:01:04.53 ID:3wZs6sQe.net] Scalaあんまり触ったこと無いけど、なんていうのかな、機能同士が直交してないっていうのかな。○○と××を一緒に使うと問題があるのでこの場合は例外的に△△しますみたいなケースが多くて頭がパンクする
315 名前:デフォルトの名無しさん mailto:sage [2014/04/03(木) 20:36:13.58 ID:KbAl46jm.net] >>302 速度クリティカルな数値計算でゴリゴリやらない奴なら何でもいいんじゃなかろうかと思う今日この頃。
316 名前:デフォルトの名無しさん mailto:sage [2014/04/04(金) 01:21:36.48 ID:4493K1P2.net] 雑用スクリプト作ったり、プレゼン用にプロトタイプを30分で作るための言語という認識しかない
317 名前:デフォルトの名無しさん mailto:sage [2014/04/04(金) 10:49:26.57 ID:9/ypcDw3.net] >>312 その認識は間違い
318 名前:デフォルトの名無しさん mailto:sage [2014/04/04(金) 13:24:05.74 ID:/wbzo9Gd.net] >>312 それならRubyとかPythonの方が良くね?
319 名前:デフォルトの名無しさん mailto:sage [2014/04/04(金) 23:52:33.16 ID:HRToJQcJ.net] >>314 Javaが楽に使えるから、過去のservlet資産を組み合わせて短時間で見栄えのいいプロトタイプを作るのに重宝してる 携帯用もできるから手放せない 事務の雑用スクリプトは、もうその人の癖の領域だから、文法とかはもう関係ないかと
320 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 00:17:58.87 ID:yO4qa4lc.net] REPLが重宝するという話だと、 データ解析とかHadoopの処理をサンプリングしてREPLで組んじゃう話は聞くな。 DB系でコンソールで解析しちゃったり、 コマンドライン上で、パイプコマンドでapacheログ解析しちゃう系のイメージ
321 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 00:30:37.59 ID:F+xvKCYK.net] replに打ち込んだ履歴をそのままプログラムに反映させようとするとき、Lisp系は各コマンドがS式で独立してる率が高いから重宝する 他のスクリプト言語は前後の文脈も考えて頭つかう必要があることが多い気がする
322 名前:デフォルトの名無しさん mailto:sage [2014/04/09(水) 13:59:35.01 ID:LRWrSFoo.net] REPLでdefnしてたの忘れてcljファイルに反映しないで作り込んだら次回cider-jackinしたらコンパイルエラーで起動しなくて焦った。 こういうの忘れない様にするテクニックとかツールないかな?
323 名前:デフォルトの名無しさん mailto:sage [2014/04/09(水) 15:26:55.41 ID:WwH8h4FP.net] >>318 lein compileをするのが確実です。
324 名前:デフォルトの名無しさん mailto:sage [2014/04/09(水) 17:07:32.49 ID:LRWrSFoo.net] >>319 nreplしてるとlein起動自体重くて忘れがちでした orz 「lein testしろやゴルァ」な付箋をモニタに貼り付けておこうと思います。 [壁]д・)チラッ nreplの中でdefnしたものをsnipetにして吐いてくれるelispないかなー
325 名前:デフォルトの名無しさん mailto:sage [2014/04/09(水) 18:27:30.98 ID:ZiEyUtyX.net] orz、ゴルァ、壁チラww こいつ何年前からタイムスリップしてきたの?
326 名前:デフォルトの名無しさん mailto:sage [2014/04/09(水) 22:25:16.39 ID:6vjqJJUY.net] 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(データストア)組み合わせるとしたら何にどう繋ぐのがいいのかな。
327 名前:デフォルトの名無しさん mailto:sage [2014/04/10(木) 16:39:12.97 ID:FMX8fFXB.net] >>321 それがどうした? としか思わんのだが。 だいたい未来からきたんじゃねぇの?(あるいは>>321 が未来すぎる)なんで苛ついてるんだか。 LightTableのREPLが綺麗に死なない(LTをQuitしても残る)んだけど同じような経験してる人いる?<<Win8
328 名前:デフォルトの名無しさん mailto:sage [2014/04/10(木) 22:34:00.23 ID:Evnw+C/+.net] 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使う解説だ。
329 名前:デフォルトの名無しさん mailto:sage [2014/04/14(月) 20:03:10.09 ID:uL8dJ7v1.net] immutantみたいに、デプロイとか運用向けのツールなのかな? www.slideshare.net/grim_radical/puppetdb-sneaking-clojure-into-operations こんな感じで実際に使ってるのかな? clojureのweb frameworkまわりでも最近CQRSってキーワードよく見かけるな。
330 名前:デフォルトの名無しさん mailto:sage [2014/04/15(火) 23:32:39.23 ID:TmAN8KJA.net] HTM/CLA https://www.taoeffect.com/other/nupic/ fergalbyrne.github.io/ https://github.com/numenta/nupic/wiki/CLA-and-HTM-Theory numenta.org/cla-white-paper.html なんかのキャッシュシステムかと思ったら、機械学習とかのシステムだった。
331 名前:デフォルトの名無しさん mailto:sage [2014/05/01(木) 23:02:40.45 ID:7+I4mY8K.net] 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? ... 続く