トップページtech
1002コメント368KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん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/
0952デフォルトの名無しさん2016/02/07(日) 04:43:54.31ID:afxS0p+G
あと、ClojureScriptになりますが、Cocos2D-JSによるJSとネイティブコードのハイブリッドアプリという選択肢もありそうですね。
主にCocos2D-html5を使ってブラウザ上で開発をし、リリースの際には、Cocos2D-x JSBを使ってハイブリッド化。
0953デフォルトの名無しさん2016/02/07(日) 20:32:38.50ID:8pvMtac5
なるほど、RoboVMはインディーズライセンス発行できるんですね。

robovmでiOS9,xcode7への対応と諸々が秋頃にあったので、それ以降に作者さんがメンテしてないか、対応出来なかったかのどちらかも。
0954デフォルトの名無しさん2016/02/07(日) 20:34:13.83ID:8pvMtac5
953の部分は、lein-fruitが動かない理由についての話です。
0955デフォルトの名無しさん2016/02/07(日) 20:43:24.24ID:8pvMtac5
clojureとは直接関係ないのですが、
javafxportsの方は年初にメンテしてて動くようになってました。

https://bitbucket.org/javafxports/javafxmobile-plugin
https://bitbucket.org/javafxports/samples
https://bitbucket.org/javafxports/javafxmobile-plugin-ensemble

試した感じだとiosのアプリ証明書まわりの動きが、RoboVM直と違いちょっとおかしそうでしたが。
0956デフォルトの名無しさん2016/02/07(日) 22:51:41.81ID:8pvMtac5
別ブランチ切って、robovm-studio(1.9.0-)対応作業としてやってたみたいですね。
試してないので、動くか分からないですが。
https://github.com/oakes/lein-fruit/commits/robovm-studio

11/19にコミットが有りますね。
https://github.com/oakes/lein-fruit/commit/1490e38649b5a71a92d1e924a2cf1a2b2beb0376
構成が変わっただけなら、これだけでいいのかな。

lein-fruit 0.2.4って書いてありますが、clojarsには0.2.3までしかあげてないので、
試すには、本家とはべつにローカルか別名のリポジトリ作成してやる必要がありますね。
0957デフォルトの名無しさん2016/02/08(月) 15:20:13.39ID:fZyGkNbq
いろいろ情報ありがとうございます。

JavaFXPorts追ってなかったので見てみましたが、iOS用にはRoboVMを使っているんですね。また、Clojureがそのまま動くのか気になるところです。

ちなみにですが、Clojure1.8のダイレクトリンキングによる起動時間とJARファイルサイズへの影響を手元のMac上で簡易的に調べてみたところ、Clojure 1.7.0 -> 1.8.0では、
・起動時間が約0.3s短縮
・JARファイルサイズが約230KB小さく
とかなので、モバイル端末実機でも効果を期待できそうです。

あと、Clojureと生libGDXで作られたというゲームをAndroidタブレットの実機で遊んでみましたが、
ダイレクトリンキング以前の状態でも、起動時間は許容範囲で、ロゴを表示することで、大して気にならない感じです。
また、その他ゲームプレイもClojureを一切感じず軽快でした。
ゲームが開発された当時は、libGDXとRoboVMの連携が無く、無料で簡単にiOS版をリリースする方法が無かったので、Android版だけのようです。

「Bounce Away」
https://play.google.com/store/apps/details?id=com.friendlyvillagers.ballz&;hl=en
0958デフォルトの名無しさん2016/02/19(金) 17:16:41.79ID:/EKT/6se
EmacsでlispにどっぷりはまってClojureに辿り着いたよ
・調べたところ結構方言が強いみたいだけどみんな違和感無いのかな?better lispになってるかな?
・Emacsでの編集は快適かな?
まだ使ってないからこの辺りが知りたいところだけど、手の空いた時にでも
教えてもらえると助かります。
0959デフォルトの名無しさん2016/02/19(金) 21:29:40.96ID:0R2jEsLy
>>958
emacs+ciderで幸せ
break pointはよ(昔はswank-clojureでできたのに)
0960デフォルトの名無しさん2016/02/20(土) 15:11:04.21ID:NsOi1z3Q
CIDERにもbreakpointあるよ。

Clojureは良くも悪くも、より抽象化されたLispという印象かな。
State of Clojure 2015によると、Clojure界で一番人気あるのがEmacs+CIDER(約45%)で、次がIntelliJ+Cursive(約25%)。
どちらも業務に使えるし、快適ですね。
0961デフォルトの名無しさん2016/02/20(土) 17:24:53.45ID:JX9OE3S7
>>960
え?マジか、defaultのkeyboard bind何になってる?(キーバインド無し?)
swank-clojure -> ritz でお世話になった後ciderになってbreak関係無くなってションボリしてるんでどのバージョンから使えるかもプリーズ

updateとかの後に.elファイルまで読まないから全然気がつけてないんでマジでお願い。
0962デフォルトの名無しさん2016/02/20(土) 20:08:32.16ID:SJ1YLAR4
https://github.com/clojure-emacs/cider/blob/master/README.md#debugging

ciderかは忘れたけど、ns変えてやらないとブレークしないという話を聞いたことがある。
0963電波いっぱい2016/02/20(土) 23:37:36.42ID:bGD6QKVk
>>958
CommonLispが好きでずっと使ってたのにClojure鞍替えした者ですが、Clojureは全てのひとにとってのbetter lispではありません。見方によっては全く違う言語とも言えます。
ですが、LISPというのは懐の広い言語ですので、ClojureもLISPです。関数型に振られていて、javaの資産が使えて、活発なコミュニティーがあるというのが特徴かな。

僕にとってはまさにbetter lispだったので、メインの言語として使ってます。
0964デフォルトの名無しさん2016/02/21(日) 01:08:40.47ID:/soU/W5W
設計の意図を探してきて読むと違いに対する違和感は減るかも。
https://sites.google.com/site/clojurejapanesedocumentation/home/reference/lisps
http://www.geidai.ac.jp/~marui/clojure/rationale/

上の日本語訳は結構前かな。よく使われる機能は変わってる場合もある。
09659582016/02/22(月) 17:10:14.60ID:OQxBKkBP
>>959-964
遅レスですまんが、みんなciderとか色々教えてくれてどうもありがとう
その辺りから色々調べてみると、意外と業務で使ってるところがあってびっくりした
JDK使ってるってのが大きいと思うけど、この時代にLispが選択されるというのも凄い事だ
0966デフォルトの名無しさん2016/03/01(火) 13:00:53.78ID:Ni2JKZi6
GSOC落ちてて草
0967デフォルトの名無しさん2016/04/05(火) 22:03:06.43ID:8SgHWKfM
日々の生活に疲れました
救いと癒しが欲しいのでclojureを学ぼうと思います
よろしくお願いいたします
0968デフォルトの名無しさん2016/04/07(木) 03:34:57.11ID:69hNyYMv
阿澄佳奈のLispに対抗して
新田恵海と高部あいでclojureというユニットはどうか?
0969デフォルトの名無しさん2016/04/07(木) 23:26:24.63ID:TikNVi9d
石原絵理子もまぜてあげて
0970デフォルトの名無しさん2016/04/10(日) 19:20:05.21ID:/2z8tz0e
少しお尋ねしたいことがあります。

(def coll (range 100) )
(loop [x coll r [] ] (if (not= x nil) (recur (next x) (cons (first x) r) ) r))

としたときにxはシーケンスcollを走査しますが、
xが以前操作した任意の数n個のデータにアクセスしたいというとき

具体的には xが55を指しているときにそれ以前の54,53,52,51 ... 45 (ここではn=10とした)
にアクセスしたいのですが、エレガントな方法ってあるでしょうか。

自分が思いついた方法
1.partitionにシーケンスを食わせてからloopに突っ込む
しかしできればloop recur内で生成したい。
2.drop take を使ってcollをloop内で刻む
partitionを使わないとなるとこれしかないのかな
0971デフォルトの名無しさん2016/04/11(月) 00:55:34.88ID:suuESVM3
>>970
頭にnilがn個続くシーケンスをお供に連れて行くとか?
(into (range 5) (repeat 3 nil)) -> (nil,nil,nil,0,1,2,3,4)
0972デフォルトの名無しさん2016/04/11(月) 02:01:38.74ID:+C690be2
勉強中のおいらには泥臭い方法しか思いつかなかった

(let [operate (fn [idx target coll]
(if (= 55 target) (println "捜査" target "Hit!! 履歴も見るよ" (take 10 (reverse (take idx coll))))
(println "捜査" target)))
col-len (count coll)]

(loop [idx 0]
(when (> col-len idx)
(operate idx (nth coll idx) coll)
(recur (inc idx))
))
)
0973デフォルトの名無しさん2016/04/13(水) 07:01:24.27ID:CWmrvo3n
最近clojurescriptに興味があって質問です。
webアプリ+サーバを作成するためのleiningenのテンプレートは
見つかるんですが、単純にnode.js上のスクリプトとして動作させる用の
leinigenの設定をしたテンプレートがmies-nodeくらいで
それも既にメンテされてないようです。
こういう用途で使えるテンプレートを知ってる方いますか?
0974デフォルトの名無しさん2016/04/15(金) 01:18:05.19ID:OuJbyPuf
cljsはブラウザ側が基本なので、いろいろハマりやすいかも。
https://github.com/bhauman/lein-figwheel/wiki/Node.js-development-with-figwheel

aws lambda cljs
https://github.com/nervous-systems/cljs-lambda

GUI系は基本chromiumターゲットなので、ブラウザ向けに近い
electron向け(chromium+node)
https://github.com/karad/lein_template_descjop/
react native
https://github.com/dmotz/natal
0975デフォルトの名無しさん2016/04/15(金) 01:21:20.28ID:OuJbyPuf
一番上のがそうだけど、テンプレートにはなってなかったね。すまぬ。
0976デフォルトの名無しさん2016/04/15(金) 01:40:05.59ID:OuJbyPuf
コンパイルの必要ないけど、これはosxだけ、かつ、ブラウザ向けエンジン使ってる
http://planck-repl.org
0977デフォルトの名無しさん2016/04/15(金) 13:25:13.39ID:uVkdPs+4
色々と情報ありがとう。
前にnodeを少しいじったんでclojurescriptだとどうなるかと思ったんだが…
しかし、clojure自体初心者の自分ではハマりそうなので暫くはJVM上だけにしようと思います。

とりあえずQuilが面白そうなのでやってみる。
0978デフォルトの名無しさん2016/04/17(日) 01:21:05.74ID:0VKAWbkk
4clojureなかなか面白いね
0979デフォルトの名無しさん2016/05/01(日) 12:05:06.37ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
6
0980デフォルトの名無しさん2016/05/03(火) 21:11:02.59ID:K+NNsali
lazy-seqなんてどうせ大したことないんだろと思って
def projectに :jvm-opts ["-Xmx1G"]としてmemory size 1GBの制限をかけた後に
stackoverflowにある lazy-file-linesに12GBくらいのデータ食わせたら、マジで行数カウントしやがった。

夢が広がるな
0981デフォルトの名無しさん2016/05/03(火) 21:50:12.09ID:x44Ry1He
遅延評価は、処理中に強制終了したときのリソースの状態が気になってしょうがない
0982デフォルトの名無しさん2016/05/03(火) 23:06:11.61ID:K+NNsali
そう言われたら俺も気になってきたんだが、

12GB中の6GBくらい読みだした時にとめたらどうなっちゃうんだろう?
0983デフォルトの名無しさん2016/05/04(水) 11:12:58.21ID:D79M6+1d
>>980
でそいつの行数はlonglongで足りたのか?
0984デフォルトの名無しさん2016/05/04(水) 12:41:25.79ID:+he7G1JM
One Million Clicks per Minute with Kafka and Clojure - Devon Peticolas
https://youtu.be/VC_MTD68erY

上のやつは今年のclojure/westの発表なんだけど、ストリーム処理で遅延評価にならないようにするにはという話があった。
0985デフォルトの名無しさん2016/05/04(水) 13:43:51.64ID:l0JwSRjw
>>983
ClojureならBigDecimalに移行するだけだと思うが?
0986デフォルトの名無しさん2016/05/04(水) 13:47:11.50ID:l0JwSRjw
>>983
あと12GBのテキストデータの行数がlonglong超える訳が無いと思うぞ。
0987デフォルトの名無しさん2016/05/04(水) 22:24:06.08ID:6f0pONvw
>>984
いろいろ参考になったわ
KafkaStreamはlazy sequenceじゃないのかな

あとその動画の指摘の通りlazy seqは確かに遅いわ
一個ずつ現実化して処理していくというのは特にFile I/OやNetwork I/Oに絡むと遅いんだろうな
partitionの使い方とか、asyncのonto-chanの使い道とかpriority mapを用いたアルゴリズムの改善とか濃厚なプレゼンだった
0988デフォルトの名無しさん2016/11/28(月) 22:32:01.86ID:9f32phBy
オリジナルの型をcore.matrixに乗せたいのですが、何を定義したらmatrixライブラリにある和や積等の関数を適用可能になるのでしょうか?
0989デフォルトの名無しさん2016/11/29(火) 09:30:24.76ID:1gz1M+ng
このあたりに書いてあったかも
https://github.com/mikera/core.matrix/wiki/Implementation-Guide
0990デフォルトの名無しさん2016/12/18(日) 17:03:58.39ID:8F2gNr16
Clojureにも代数的データ型があればなあ
0991デフォルトの名無しさん2016/12/26(月) 21:13:07.45ID:XJppqmkm
マップがあるで(ゲス笑い)
0992デフォルトの名無しさん2016/12/26(月) 21:15:52.87ID:aoxifvbm
Clojureのマップの柔軟さ書きやすさは好きなんだけど、エラー検出力低くないだろうか?
0993デフォルトの名無しさん2016/12/26(月) 21:30:49.56ID:XJppqmkm
ぶっちゃけクソ低い。
TypeScriptたまに触ってると特に感じるわ。
だから対策としてスキーマバリデーションとかが欲しいわけではなくて、リアルタイムチェックや補完の方も欲しい。
あと (register-handler :keyword (fn ...)) 的なのも :keyword をtypoしたりしてムキーってなる。
0994デフォルトの名無しさん2016/12/26(月) 21:44:39.57ID:aoxifvbm
LightTableあかんか……
0995デフォルトの名無しさん2016/12/27(火) 14:53:40.90ID:ov9/Tp6R
次スレ無いけど埋めとくか
0996デフォルトの名無しさん2016/12/28(水) 12:12:28.60ID:0ISf0nRp
P言語のIDEだと、アノテーションとメソッドキャッシュで編集時支援ってのが多いかな。
既存のシンボルを集めておく仕組みはあまり聞いたことない気がする。
よく使う単語は補完してくれるので、それか定義してるところからのコピペで何とかしてる。
0997デフォルトの名無しさん2017/01/04(水) 18:40:43.75ID:uHeuKaUg
次スレ
【Lisp】プログラミング言語 Clojure #4【JVM】
http://echo.2ch.net/test/read.cgi/tech/1483498849/
0998デフォルトの名無しさん2017/01/04(水) 23:12:31.39ID:VMJ7nozd
>>997
:よくやった
0999デフォルトの名無しさん2017/01/04(水) 23:13:43.28ID:J+uePkPh
おつ
1000デフォルトの名無しさん2017/01/04(水) 23:14:06.89ID:hkcnZMZu
次スレ
【Lisp】プログラミング言語 Clojure #4【JVM】
http://echo.2ch.net/test/read.cgi/tech/1483498849/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 1194日 12時間 10分 39秒
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。