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

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

1 :デフォルトの名無しさん:2017/01/04(水) 12:00:49.23 ID:uHeuKaUg.net
JVM上で動作するLisp方言「Clojure」のスレ。

Clojure - home
http://clojure.org/
http://www.try-clojure.org/

前スレ:
【Lisp】プログラミング言語 Clojure #3【JVM】
http://echo.2ch.net/test/read.cgi/tech/1380333808/
【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/

8 :デフォルトの名無しさん:2017/01/05(木) 18:05:12.91 ID:FiQZD0WY.net

エラーもっと見やすくなりますように

9 :デフォルトの名無しさん:2017/01/13(金) 17:24:28.45 ID:R3VNpyWj.net
http://www.rightrelevance.com/search/articles?query=clojure

ざっとみてたら、reagentのちょっとした記事があった。
Reagent deep dive part 1
http://timothypratley.blogspot.jp/2017/01/reagent-deep-dive-part-1.html

10 :デフォルトの名無しさん:2017/01/13(金) 23:31:45.53 ID:X2ezHFUW.net
まさにHTMLというでかいデータ構造をReact/JSXで書くという点に不満を抱いている人はおおいね
Clojureはデータ構造をベターっと書くのが得意だからうまく処理できる

11 :デフォルトの名無しさん:2017/01/16(月) 01:48:04.88 ID:u1r5PPit.net
re-frameすげぇびっくり
HTMLをemacs+clojure単体でhiccupで書くだけでも楽だったのだけどSPAでものすごいお気楽に書けるのでびっくり
おいらは社内で猛プッシュ中なのだけどclojureがlisp系なので忌避されて泣きそう

12 :関連サイト:2017/01/16(月) 05:52:01.38 ID:snnb/Fhd.net
JVM上で動くということはAndroidアプリも作れるということですか?

13 :デフォルトの名無しさん:2017/01/16(月) 16:58:49.54 ID:zFZr9yOS.net
clojureで動いてるアプリもあるけど、まずはjavaでandroidの仕組みを理解するのが先かな、
https://github.com/alexander-yakushev/foreclojure-android

他にcljsとreactnativeで動かすやつもある。
https://github.com/drapanjanas/re-natal

14 :デフォルトの名無しさん:2017/01/16(月) 17:23:51.15 ID:cwyxJ1cI.net
ありがとうございます

15 :デフォルトの名無しさん:2017/01/19(木) 22:33:16.45 ID:aY4YJCCh.net
Clojure - Frequently Asked Questions
https://clojure.org/guides/faq

公式にFAQページなんてあったっけ?ツイートで見かけたけど最近できたのかな?

16 :デフォルトの名無しさん:2017/01/21(土) 13:50:33.32 ID:aqW7hRmv.net
各ライブラリのcomponent設定セット
https://github.com/danielsz/system/

使い方のサンプルも。
https://github.com/danielsz/system-advanced-example
https://github.com/danielsz/system-duct-style-example

17 :デフォルトの名無しさん:2017/01/21(土) 13:52:56.42 ID:aqW7hRmv.net
sampleで思い出したのだけど、lein newとboot -d boot/new newで作れる雛形を検索できるサイトってあったっけ?

こういう感じのやつ(yo)
http://yeoman.io/generators/

18 :デフォルトの名無しさん:2017/01/21(土) 14:11:29.15 ID:z9Zi6HmD.net
boot-newが公式リポジトリに移動してた
http://seancorfield.github.io/blog/2017/01/19/boot-new-moved/

19 :デフォルトの名無しさん:2017/01/21(土) 22:59:01.23 ID:C0k8sCvn.net
初心者向けwebスタック作るっていってたやつのアルファ版らしい。
http://arachne-framework.org/posts/2017/alpha-release/

目標がよく分かってないけど、phpのlaravelみたいに使いづらいところが無くなるようにフレームワークで全体をならすようなつもりだったのかね。

20 :デフォルトの名無しさん:2017/01/21(土) 23:27:58.81 ID:EPTmlCuB.net
この前クラウドファンディングしてたやつか

21 :デフォルトの名無しさん:2017/01/26(木) 11:35:01.02 ID:BY+td22O.net
好きなclojureのcore関数は?
ttps://twitter.com/fogus/status/824297817502052352

22 :デフォルトの名無しさん:2017/01/28(土) 11:31:45.85 ID:BGFfcx+H.net
lux 0.5.0
It's meant to be a functional, statically-typed Lisp that will run on several platforms, such as the Java Virtual Machine and JavaScript interpreters.

https://github.com/LuxLang/lux
https://luxlang.gitbooks.io/the-lux-programming-language

23 :デフォルトの名無しさん:2017/02/11(土) 23:59:17.72 ID:2J4sjkSp.net
なんぞ
https://groups.google.com/forum/#!msg/clojurescript/wGJeG36GPTk/e9XCo3a2BgAJ
JavaScript Modules (Alpha) | ClojureScript
https://clojurescript.org/guides/javascript-modules

24 :デフォルトの名無しさん:2017/02/12(日) 00:24:59.35 ID:1laRC1Ic.net
ClosureCompiler用の外部JS宣言を推論してくれるらしい。

Externs (Alpha)
https://clojurescript.org/guides/externs

25 :デフォルトの名無しさん:2017/02/26(日) 17:24:11.89 ID:WP4rX3RZ.net
javaのmutableなコレクションをうまく扱えるようなライブラリってないかな
具体的にはdouble型からなるmutableな型をdeftypeで宣言して、
array かjava.util.ArrayListに投げてmutableなmap!とかを実装してる奴

自分で書いて試してみろって?そりゃそうなんだけど
clojureの設計思想から真っ向から反しているのはわかってるけど
こういうニーズも満たせればclojureって最強言語なんじゃねと思うんだけど

26 :デフォルトの名無しさん:2017/03/02(木) 00:51:05.02 ID:5Cm7dTQ2.net
javaと変換を扱うライブラリあるけど、可変にするものではなさそう。
https://github.com/clojure/java.data
https://github.com/rschmitt/dynamic-object
https://github.com/ngrunwald/gavagai

行列みたいな計算向けは可変あるけど、一般的なjavaのって話ではないか。

これも操作を完結する感じなので、java関係なさそう。
https://github.com/nathanmarz/specter

abclもlispobjectとあるので、直接は扱えないのかな?
http://abcl.org/

27 :デフォルトの名無しさん:2017/03/02(木) 00:56:52.60 ID:5Cm7dTQ2.net
そういえば、こんなのあったね。
https://github.com/zcaudate/hara
http://docs.caudate.me/hara/hara-concurrent-ova.html

28 :デフォルトの名無しさん:2017/03/02(木) 22:07:38.10 ID:7sf+xG/k.net
あらためて調べて考えたんだけど
javaでは、ヴァルハラがくるまで、ジェネリクスパラメータにプリミティブが使えないんだよね

じゃあ例えばリストを使う場合に特定の参照型、例えばboxed Doubleのような参照型が要素になり、結局mutableのメリットがなくなるってことなのかな
javaはあまり詳しくないけど、プリミティブはメモリを直接上書きするから、高速
オブジェクトは変更されると、
動的に新しい値がメモリに割り当てられ、古いデータはGCに回収されるとする

そうするとミュータブルクラスはパーシステントクラスを使ってるのと決定的な差がなくなってくるという考えに行き着くんだけど

29 :デフォルトの名無しさん:2017/03/02(木) 22:17:29.93 ID:dlTbMJUn.net
javaだとgc避けるために、off-heepのスタック領域などにリングバッファ作って処理する話が出てくるね。

30 :デフォルトの名無しさん:2017/03/02(木) 22:58:21.96 ID:7sf+xG/k.net
lmaxのdisruptorとか?
てかいまのやりとりでようやく固定長のキューではなくリングバッファ使っている理由がなんとなくわかった気がするわ

31 :デフォルトの名無しさん:2017/03/06(月) 14:04:12.25 ID:R0WeGFec.net
>>25
それ必要かな?
メモリセンシティブな用途以外出番なくね?

32 :デフォルトの名無しさん:2017/03/06(月) 23:40:59.97 ID:MJoZTqPl.net
clojureでbigdataな処理をやりたいとかね
sparkとかつかえよっていう話かもしれないが

とりあえずletをうまくつかったら40分の計算が9秒になったわ
だがrepl出力にアウトプットをそのまま垂れ流そうとすると標準i/o出力に40分かかってしまう
ちなみに9秒になったのはlazyで計算されてないわけではなく計算値のlastは普通に12(9+3)秒程度で取得できる
大型なデータのrepl出力を手軽に高速化する方法ってないのかな
なんか挙動見てる限りchunk seqをちまちま出力しているように見える、計算結果はinto []してるんだけどな

33 :デフォルトの名無しさん:2017/03/07(火) 01:35:01.47 ID:72cHV2nQ.net
>>32
replの出力鈍いからなぁ
ものすげぇ長い戻り値って端からわかってるならファイルに書いちゃうのが吉

いつもemacs+ciderでうぼあーってなる自分が言うのもなんだけど

34 :デフォルトの名無しさん:2017/03/07(火) 02:02:53.70 ID:TRrf8/Mo.net
あれから少し調べたけど
system/outがそもそも遅いみたいね
普通にreplの挙動を考えると1ラインで1システムコールだもんな
OSコールと描画のオーバーヘッドは無視できない
とりあえずbufferedwriterでsystem/outを包んでやるか、素直にfileに出すのが良さそうね

だからみんなtimbreとかlog4jとか使ってるわけだ

35 :デフォルトの名無しさん:2017/03/07(火) 23:38:38.94 ID:4Kmn9smG.net
unixならtail -fなりでいいしね。winで調べたらpowershellか。

36 :デフォルトの名無しさん:2017/03/09(木) 13:15:22.02 ID:fDJtN/vS.net
いろいろ調べたけどそもそも計算できてなかったわ

lazy-seqのvectorになってただけだった

37 :デフォルトの名無しさん:2017/05/05(金) 13:48:01.36 ID:H2WcmmXo.net
facebook傘下のwitaiが基盤実装をclojureからc++かhaskellに移行する予定だったらしく、haskellにしたとのこと。
移行したら読みやすいみたいな話もちょっとだけ。

clojureの場合、ライブラリは一度作るまでいろいろいじって、一回出来るとあまりいじらないイメージもあるけど、実装を多人数でよくいじるみたいなのだと、難しいのかな?
IDE上手く使えばそういう開発もできるのだけど、最初からなんでも決まってるほうがいいってのはgo見るとわかる気もする。
https://wit.ai/blog/2017/05/01/new-duckling

38 :デフォルトの名無しさん:2017/05/05(金) 13:57:16.18 ID:H2WcmmXo.net
http://postd.cc/measuring-gc-latencies-in-haskell-ocaml-racket/
http://postd.cc/golangs-real-time-gc-in-theory-and-practice/

gc関連の話題に触れると、基盤系はgcチューニングに結構リソース割いてるgoやそもそもgc回避できるrustが来そうってのはあるが、
javaはどうなってくんだろうね。

JVM言語向けのvmやpauseless vmを開発してる話は聞くんだけど、あまりリソースが割けてなさそう。

39 :デフォルトの名無しさん:2017/05/05(金) 21:49:19.19 ID:MDgrGB6E.net
spec方面でエコシステムが育って来てるようだけど、どれぐらいで落ち着いて参入しやすくなるかな?
https://www.slideshare.net/simonbelak/spec-a-lispflavoured-type-system

40 :デフォルトの名無しさん:2017/05/30(火) 19:28:59.81 ID:5LsaYMbU.net
threading macroを使ったSeqの途中で一時変数(let)を使いたいんだけど、どうすれば良いの??

41 :デフォルトの名無しさん:2017/08/13(日) 19:51:35.89 ID:KJ+m5GEj.net
(A 1 2 3 B 1 2 C 1 2 3 4)

から

((A 1 2 3) (B 1 2) (C 1 2 3 4))

を得たいのですが、loop、recur以外のよい方法はあるでしょうか?

42 :デフォルトの名無しさん:2017/10/31(火) 07:56:11.94 ID:XAFRApiv.net
reduce

43 :デフォルトの名無しさん:2017/10/31(火) 14:28:53.47 ID:ks1WQGP1.net
Clojure知らんのだけど、CLならこんな書き方も

(defun ochinchin (xs)
(mapcon (lambda (xs &aux (head (first xs)) (tail (rest xs)))
(when (symbolp head)
(list (subseq xs 0 (position-if (lambda (x) (not (numberp x))) tail)))))
xs))

(ochinchin '(A 1 2 3 B 1 2 C 1 2 3 4))
==> ((A 1 2) (B 1) (C 1 2 3 4))

44 :デフォルトの名無しさん:2017/10/31(火) 14:31:35.01 ID:ks1WQGP1.net
失敬、バグってたw

45 :デフォルトの名無しさん:2017/11/05(日) 14:30:43.67 ID:aeYzbOC4.net
バグってないコードもかいておくれ

46 :デフォルトの名無しさん:2017/11/05(日) 18:22:24.05 ID:Ejsp/QIe.net
(position-if (lambda (x) (not (numberp x))) tail)
の部分を、↓
(let ((n (position-if (lambda (x) (not (numberp x))) tail)))
(when (numberp n) (1+ n)))
もしくは、アナフォリックマクロライブラリが使えるなら
(awhen (position-if (lambda (x) (not (numberp x))) tail)
(1+ it))
ですね。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


47 :デフォルトの名無しさん:2017/11/07(火) 09:53:07.55 ID:QNcerxGs.net
Clojureということでシーケンスを使って、以下はどうでしょうか?

(defn foo
[xs]
(->> xs
(partition-by char?)
(partition-all 2)
(map (partial apply concat))))

> (foo [\a 1 2 3 \b 4 5 \c 6 7 8])
((\a 1 2 3) (\b 4 5) (\c 6 7 8))

48 :デフォルトの名無しさん:2018/01/08(月) 22:31:20.70 ID:7CLJqQI5.net
lein run では問題無く動作するけど
lein uberjar を行おうとすると失敗して困っています
Uberjar aborting because jar failed: Invalid argument というメッセージが表示されています
何方か解決方法を教えていただけると助かります

問題が発生してるコードはこれです
https://github.com/kemono/gaw-00001

49 :デフォルトの名無しさん:2018/01/09(火) 06:37:21.04 ID:lIn3WuFp.net
動かない原因は、:resource-paths ["resources" "lib/jme3/*"]
lein2になってからワイルドカード使ってjarをまるごと解決ってのが出来なくなってlein runすら動かないと思うし、直接lib/jme3/hoge.jarみたいに指定しても、uberjar時にjar内にjarが出来てそのままではうまくいかない
簡単な解決方法としては、Mavenレポジトリを使った方法で、以下変更点によってlein uberjarがうまくいく
念のためleinのアップデートもね

; project.clj
(defproject tiny-game "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.8.0"]
[org.jmonkeyengine/jme3-core "3.2.0-stable"]
[org.jmonkeyengine/jme3-desktop "3.2.0-stable"]
[org.jmonkeyengine/jme3-plugins "3.2.0-stable"]
[org.jmonkeyengine/jme3-jogg "3.2.0-stable"]
[org.jmonkeyengine/jme3-blender "3.2.0-stable"]
[org.jmonkeyengine/jme3-lwjgl "3.2.0-stable"]]
:repositories {"jcenter" {:url "https://jcenter.bintray.com/"}}
:resource-paths ["resources"]
:main tiny-game.core
:aot :all)

; core.clj
(ns tiny-game.core
(:gen-class)
...)

50 :デフォルトの名無しさん:2018/01/09(火) 08:36:00.75 ID:IAv+4//d.net
>>49
解決出来ました!!
本当に助かりました!ありがとうございます!!

51 :デフォルトの名無しさん:2018/01/18(木) 20:11:18.76 ID:vOZSq9tB.net
この言語って何に使うの?まさか仕事?

52 :デフォルトの名無しさん:2018/01/19(金) 19:58:18.39 ID:1WY9ihKS.net
5ちゃんで使われてるらしいよ

53 :デフォルトの名無しさん:2018/04/08(日) 19:11:22.71 ID:bJUCDaUD.net
LINE Game Cloudの例に見る関数型言語の特徴
https://engineering.linecorp.com/ja/blog/detail/244

54 :デフォルトの名無しさん:2018/05/23(水) 20:42:00.99 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

SAB28

55 :デフォルトの名無しさん:2018/07/05(木) 01:10:47.40 ID:RfoszcD2.net
ZO6

56 :デフォルトの名無しさん:2018/08/07(火) 00:00:25.28 ID:ahdeFvKS.net
関数型言語で画像処理のプログラムが書きたいんだけど
Common Lispで言う
(setf (aref ary img y x) num)
みたいなn次元配列をmutableでごりごり書き換えるのって
Clojureでできる?

オライリーのCLOJURE PROGRAMMINGとshiro kawai訳のプログラミングClojureの
最初の方は読んだ

57 :デフォルトの名無しさん:2018/08/08(水) 23:16:42.23 ID:o1dMGl8v.net
行列計算をごりごり使うってのは向いてないかなと。
javaなどでごりごり書いて、clojureから使ってるってひとはいるかもしれないが。

いちおうそのためのライブラリはある。
https://neanderthal.uncomplicate.org/articles/getting_started.html

18 KB
新着レスの表示

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

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★