[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/03 02:27 / Filesize : 278 KB / Number-of Response : 1035
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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/

666 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 21:59:05.42 ID:64DHkpfs.net]
よく見たら僕のは0.7.2になってる。
0.7.1で治ってるの?0.7.2で元に戻った??

667 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 22:02:38.92 ID:GjQr/RAb.net]
>>654
うちのは0.7.0飛ばしちゃってた後に0.7.2入れたけど括弧入力の補完効いてるから0.7.0入れたときにpreference設定書き換わってないか見てみたら?

668 名前: [2014/12/01(月) 18:25:36.09 ID:tHxJROnc.net]
clojureを勉強していくためにslimeってやつを使いたいのだが、環境をつくるのがうまくいかない。lispって詩的だと思ったから勉強しようと思っています。初心者。

669 名前:デフォルトの名無しさん mailto:sage [2014/12/01(月) 18:36:47.86 ID:PC2xNpWA.net]
LightTableおすすめ

670 名前: [2014/12/01(月) 21:30:21.30 ID:tHxJROnc.net]
LightTableってやつダウンロードしてみた、、

671 名前:デフォルトの名無しさん mailto:sage [2014/12/02(火) 00:08:50.33 ID:b5XysgAA.net]
メモ帳 & コマンドプロンプト
マジオススメ

672 名前:デフォルトの名無しさん [2014/12/02(火) 00:45:27.92 ID:S/rHt4Vl.net]
>>656
swingreplのstandalone jarを作って、こいつの上で色々遊んでみるといい
https://github.com/alandipert/clj-swingrepl

673 名前: [2014/12/02(火) 07:47:56.28 ID:OOetDlpf.net]
>>660
あ、ありがとうございます。
自分、初心者すぎて、遊べる段階まで行くやり方がわからない、、。
でも、とりあえず、LightTableで
「Instarepl: open a clojure instarepl」って
コマンドを選択したらclojure試せるみたいなので、それでやってみます。

674 名前:デフォルトの名無しさん mailto:sage [2014/12/02(火) 10:48:50.29 ID:/Zko0w7N.net]
>>661
emacsでslime系試したいなら
clojure cider で検索すると良いよ、emacs24の導入からcider入れるまで解説とか結構あるし(slime clojureとかritzは導入辛いからくじけやすい)

LTの方がモダンだけどreplの使い勝手はemacs系の方が良い感じ。



675 名前: [2014/12/02(火) 16:51:25.82 ID:l88HCvSs.net]
>>662
ありがとうございます。
少し検索してみました。
mizondev.net/d/20131108のページに、
emacsのpackage.elというのを使ってやってみようとして
M-x package-install ciderと打ち込んだら、
no machと出てきてできなかった。
M-x package-ilist-packagesで
リストみることができるみたいだから、
見てみたら、ciderというのがなかったです
やっぱり、TLかなあ、

676 名前:電波いっぱい mailto:sage [2014/12/02(火) 17:45:06.59 ID:yPPVhR2hD]
>>663
パッケージのリボジトリにmarmaladeを追加しないとでてこないよ。

melpaの方はsnapshotが入っているからはじめは使いにくいかも。

リボジトリの追加のしかたはくぐってください。

677 名前:電波いっぱい mailto:sage [2014/12/02(火) 18:22:53.48 ID:mRxW3cCO.net]
>>663
パッケージのリボジトリにmarmaladeを追加しないとでてこないよ。

melpaの方はsnapshotが入っているからはじめは使いにくいかも。

リボジトリの追加のしかたはくぐってください。

678 名前: [2014/12/02(火) 21:53:42.09 ID:es1g8IZo.net]
>>665
うーん、うまくいかない、ちょっとくやしいです、
多分、
(require 'package)
(add-to-list 'package-archives '("melpa" . "melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "marmalade-repo.org/packages/"))
(package-initialize)
というのを~/.emacs.d/initsというところに書き込めばいいんだとおもう。
~/ってどういう意味なんだろう、
自分はMacのターミナルを使っているんですが、
そこで、emacs .emacs.d/initsとうって、
そこに上のやつを書き込んだのだけれど、
それでは、うまくいかない、、

679 名前:デフォルトの名無しさん mailto:sae [2014/12/02(火) 22:23:35.39 ID:C370zj97.net]
"~/" ってのはユーザのホームディレクトリ。

(expand-file-name "~/")

を *scratch* バッファなんかで eval すれば絶対パスを返してくれる。

それと、 ~/.emacs.d/inits ではなくて ~/.emacs.d/init.el だと思う。だから、

$ emacs ~/.emacs.d/init.el

とすればいいはず。

680 名前:デフォルトの名無しさん mailto:sage [2014/12/02(火) 22:23:36.88 ID:/Zko0w7N.net]
>>666
~/はターミナル開いたときのhomeディレクトリ
普通だと
/Users/<あなたのアカウント名/

681 名前: [2014/12/02(火) 23:34:45.34 ID:es1g8IZo.net]
>>667>>668
教えてくれてありがとうございます、、
たすかります。

えーと、$ emacs ~/.emacs.d/init.elとうって、
そこに
(require 'package)
(add-to-list 'package-archives '("melpa" . "melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "marmalade-repo.org/packages/"))
(package-initialize)
を貼付けてみました。
そしてM-x package-install sider
としてみたのですが、やっぱりうまくいかない
siderは諦めたほうがいいっぽい、、

common lispもやりたいなとおもっています、
clojureとくらべて、どうですかね、、

682 名前:デフォルトの名無しさん mailto:sage [2014/12/02(火) 23:54:23.65 ID:C370zj97.net]
>>669
sider じゃなくて cider だよ!w

683 名前:デフォルトの名無しさん mailto:sage [2014/12/03(水) 02:09:24.44 ID:p19oFRz6.net]
>>669
その状態でpackage-list-packagesするとcider-0.x.xってのがlistに出るよ

684 名前:電波いっぱい mailto:sage [2014/12/03(水) 14:12:04.41 ID:xmz4UdFc.net]
>>669
>>671
init.elを作っただけだと読んでないから読み込ませる。emacsを再起動するのが楽。

また、その設定だとmelpaのが出ちゃうから、melpaは入れない方がいいと思う。marmaladeだけ。



685 名前:電波いっぱい mailto:sage [2014/12/03(水) 14:28:44.52 ID:xmz4UdFc.net]
>>669
CLはマルチパラダイムだから、ほんとに何でも作れるし、どのようにでもかける。
でも、新しめの日本語の情報が少ないし、何でも「簡単に」できる訳ではない。

Clojureは、かなり関数型に振っていて、「Clojureならこう書く」みたいなものがあるので、本を一通り読んで理解すれば、Webアプリとか使えるものを作れるようになるのは早い。
裏にJavaがあるので、日本語の情報を含むそれらを、利用できるのも大きい。

686 名前: [2014/12/03(水) 19:57:13.95 ID:lWmi25JI.net]
>>670>>671>>672
おー、それが、何度試してみても、できないです、、
siderじゃなくciderでやっても、
package-list-packagesでリストを探してみても、できない。

$ emacs ~/.emacs.d/init.elで
(require 'package)
(add-to-list 'package-archives '("melpa" . "melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "marmalade-repo.org/packages/"))
(package-initialize)
を書き込んでも、それを消しても
package-list-packagesのリストが変わらないです。
多分、書き込んだとき増えてなければおかしいのに。
(require 'package)
(add-to-list 'package-archives '("marmalade" . "marmalade-repo.org/packa\
ges/"))
(package-initialize)
にしてみてもできなかったです、

おそらく、このコンピュータは、自分が狂っていないと信じ込んでいる精神病の患者みたいなコンピュータなんだろう、、
だからciderをやろうとする気持ちは三階の病棟に閉じ込めておいたほうがいいかも。
三階は二階の患者より酷い人が入るところ。

もちろん、そう診断する自分はヤブ医者なんですが、コンピュータを診断する医者としては。外科医としても。そもそも自分はどんな種類の医者でもない。
自分自身の精神科医ですらないとおもう。そんなに上手く精神的に生きている気がしない、、余計なことを書いてしまった。読書します、、

687 名前:デフォルトの名無しさん mailto:sage [2014/12/03(水) 20:06:41.76 ID:K+BrSv2h.net]
lighttableでreadって使えないのん?

688 名前:デフォルトの名無しさん mailto:sage [2014/12/03(水) 20:21:41.04 ID:p19oFRz6.net]
うちだとこんなんだな
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "marmalade-repo.org/packages/"))
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))

689 名前:デフォルトの名無しさん mailto:sage [2014/12/03(水) 21:39:11.46 ID:jsZy3+TQ.net]
Emacsスレで聞いてみるとか

690 名前: [2014/12/04(木) 02:06:25.10 ID:EifX8RrY.net]
>>665
>>666
>>677
うわー、多分できた、
いつもはinit.elのところ開いたら一度しめてそれからターミナルでemacsとうってインストールしようとしていた。
でも今回はinit.elを開いたままで、
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "marmalade-repo.org/packages/"))
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
を貼って、M-x eval-current-bufferとうって
M-x package-install ciderとやったらなんかciderを読み込んでいるみたいになったよ、、

691 名前:デフォルトの名無しさん mailto:sage [2014/12/04(木) 02:15:37.89 ID:uBagqB+X.net]
>>678
cider入ったらleiningen管理のプロジェクトの中でcljファイル(project.cljでもいい)開いてからC-c M-jでreplが開くよ

692 名前:! []
[ここ壊れてます]

693 名前: [2014/12/04(木) 19:53:34.22 ID:ujZTdShy.net]
>>679
leiningenというのがどういうものかよくわからないけど、
とりあえず、lein new sampleとやって
emacsで、M-x cider-jack-inってやったらできるようになった
よかった、、
けど、なぜかC-c C-jでははじめられなかった。

694 名前: [2014/12/04(木) 19:55:04.23 ID:ujZTdShy.net]
あ、C-c M-j、、



695 名前:電波いっぱい mailto:sage [2014/12/04(木) 21:50:43.67 ID:gxSGbnnh.net]
>>678

>いつもはinit.elのところ開いたら一度しめてそれからターミナルでemacsとうってインストールしようとしていた。
でも今回はinit.elを開いて

これって、init.elの場所が間違ってるんじゃない?
もしくは、保存しないで閉じてるとか?

696 名前: [2014/12/05(金) 19:26:25.51 ID:x1r9cuUq.net]
>>682

ターミナルでemacs ~/.emacs.d/init.elと
うったらnit.elが開けるとおもっているんですが、、
それで間違っていたら開けていないかもしれない。
保存は、
開いてC-x C-sで保存?してC-x C-cで脱出してます、、

697 名前: [2014/12/06(土) 23:49:38.91 ID:i3Rn7LUz.net]
>>659
純文学という感じでしょうか、、

698 名前:デフォルトの名無しさん mailto:sage [2014/12/07(日) 14:22:55.49 ID:Jx6Y4qFX.net]
開発環境が最小の状態に慣れておかないと、マシン替える度にイライラする
そんな私もsurfaceproでメモ帳コマンドプロンプトです

699 名前: [2014/12/08(月) 18:07:29.67 ID:5xrTpuJG.net]
>>685
本を読むときもそういう習慣は役に立ちそうですね。
closure、自分はネットの情報だけで勉強しようと思っています、、
でも、やっぱり、本買わないとだめなのかな。
他に欲しい本がたくさんあって、お金がない、、

700 名前:デフォルトの名無しさん mailto:sage [2014/12/08(月) 19:24:27.66 ID:F4bca2XM.net]
よし、体売ってこい


つるはしを振るうんだ
チンポるるうなよ

701 名前: [2014/12/08(月) 20:56:36.65 ID:5xrTpuJG.net]
>>687
おー、
筋トレをお金に変換、、

702 名前:デフォルトの名無しさん mailto:sage [2014/12/09(火) 22:55:35.94 ID:aSBE7sLo.net]
開発環境ポータブルに出来れば、usbストレージやクラウドにというのもあり

703 名前:デフォルトの名無しさん mailto:sage [2014/12/23(火) 11:34:02.48 ID:FV7c0C0V.net]
ライブラリが膨大だからカタログてきな参考書に目を通しておいたほうがいいね。
できるだけ新しい情報で

704 名前:デフォルトの名無しさん [2015/01/02(金) 08:28:07.96 ID:40BDq3Bs.net]
質問です。
defrecordでレコード型を作ってprotocolでメソッドを追加する事でjavaのクラス相当の物が作れるのはいいんですけど
コンストラクタってどうするものなんですか?
(->xxx 〜) だとすべてのデータを直接指定しないといけないし。
型の内部に持たせるのではなくて、別関数として定義するやり方が一般的なんでしょうか?



705 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 10:34:08.22 ID:YBPhwGd5.net]
(defrecord YourReord [ v1 v2 andmore])
(YourRecord. 1 2 3) => { :v1 1 :v2 2 :andmore 3}
で普通にレコード生成できるっしょ?

706 名前:デフォルトの名無しさん [2015/01/03(土) 16:53:30.80 ID:nLUbwEH9.net]
>692
何か色々勘違いしてました。ありがと。

ついでにさらに質問で。
下記だと問題なくassocが使用できるけど、
(let [d [0 0 0 0 0]] (assoc d 0 999))
=> [999 0 0 0 0]

下記はエラー。
(let [d (take 5 (repeat 0))] (assoc d 0 999))
=> エラー(lazySeqをキャスト出来ない〜)

エラー内容からrepeatで作成した遅延シーケンスはassocを使えないってことらしいけど
takeで取り出しても遅延シーケンスってこと?
5つ位のシーケンスなら直接記述してもいいけど、もっと大きいサイズで
assocが使えるようなシーケンスを作成する場合はどうしたらいいんでしょうか?

707 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 17:14:44.67 ID:VHcKNT7s.net]
vec使ったら

708 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 22:35:36.09 ID:xxy0Tk3f.net]
>>693
assocは基本mapに使う
vectorへのassocは (assoc vector-data index value)
listへは使えない

なので (take n somting)の結果がlistなのでエラーになる
もしどうしてもtakeした結果に使いたいなら
(let [d (take 5 (repeat 0)] hogehogeでなく
(let [d (vec (take 5 (repeat 0))] (assoc d ...
にしないと駄目

709 名前:電波いっぱい mailto:sage [2015/01/07(水) 13:25:19.06 ID:RbdNG2kP.net]
>>693
シーケンスにassocを使いたい理由がわからない。
多分、方法が間違ってる。

710 名前:デフォルトの名無しさん mailto:sage [2015/01/23(金) 15:50:23.04 ID:q8ayYuMd.net]
ringのwrapper経由でurlのparamとかpostのparamをキーワードにしてるけど、これって外から延々違う文字列でquery stringのnameを食わせるとサーバ落ちたりしないのかな?
Clojureのkeywordってstaticな内部辞書に載っちゃうのでgcされないよね?

(doseq [id (range 1000000)]
(keyword (str "hoge" id)))
(System/gc)
ってやるとkeywordで作ったメモリは帰ってこないから延々やれば落とせるんだろうけど(↑ので8MByte位食う)
8M潰すために100万回httpリクエストされる方が非道いと言う事なんだろうか?

711 名前:デフォルトの名無しさん mailto:sage [2015/01/23(金) 18:56:18.19 ID:utqj4QgC.net]
>>697
(System/gc)でガーベッジコレクタが確実に動作するとは限らないぞ。

712 名前:デフォルトの名無しさん mailto:sage [2015/01/24(土) 22:52:59.88 ID:xWCxxmVh.net]
Javascriptのソースを難読化するためにClojureScriptで書き直しはじめたんだけど、
ClojureScriptの難読化って直感的には結構なものだと思うんだけど、みんなはどう思う?
:optimizations :advanced で読みづらくなってる上に、Clojureコードをコンパイルしたjavascriptコードだから、コンパイルのルールを分かってないとすごく読みづらくなると思うし

713 名前:デフォルトの名無しさん mailto:sage [2015/01/24(土) 23:22:54.22 ID:AxJ1ZwJl.net]
難読化なんて意味ない事しない。

714 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 05:49:08.67 ID:IAlWKeKG.net]
>>697
キーワードのテーブルはWeakReference使ってるからGCされるで



715 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 05:58:35.91 ID:ITyso3aB.net]
>>699
なんだ、こいつ
精神病?

716 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 08:03:17.05 ID:HK7FfI78.net]
ChromeAppとかスマホアプリで、プロダクトを作ろうとすると必要になるでしょ? -> 難読化

717 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 08:09:10.77 ID:SZuCIDm7.net]
>>703
いや別に必要無いけど。

718 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 19:15:33.32 ID:/ILbZFHt.net]
>>700
ソースコードを納品するときには難読化してる

719 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 21:02:22.01 ID:psVbrQV/.net]
>>705
本当にそんなところあるのか…誰も得しないような気がする

720 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 21:07:43.25 ID:TpVzkFBJ.net]
難読化なんて大した効果はない
ていうかクズプログラムなんてわざわざ解読されないよ
価値あると思われればたかが難読化なんてプププだし

ま、それでも依頼もあって、うん十年前はn88-BASICソースを難読化したけどな
わははははは
馬鹿には読めないソースにするには
継続を使った末尾再帰で書くのがいいな
あはははははは

721 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 21:13:05.43 ID:/ILbZFHt.net]
2000年問題のときに、コードの難読こそが給料の素だと経験により理解した

722 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 22:11:14.99 ID:SZuCIDm7.net]
仕事なら複数人でするから難読化などあり得ない。
ソースで納品してメンテナンスを他に回されても
どうせ(ゴミのようなソースになって)戻ってくるので
難読化しない。
勿論引き継ぎはメンテナンス契約じゃなくて新規契約でw。

趣味でプログラムするならメンテナンスを自分でするから
難読化などあり得ない。
どちらにしろ難読化する必要がない。

723 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 22:28:44.24 ID:/ILbZFHt.net]
ソースの難読化はあくまでも納品時です
専用のスパゲッティ化スクリプトもきちんと用意してます
移行までやったら、どうせソースなんて見やしないので、問題が起きるまでそのままです
酷いときは、納品したコードすら紛失してます

一方、趣味や社内のコードは極限まで読みやすくします

難読化する目的はたった一つ
「コードをいじらせない」です

724 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 22:31:38.75 ID:khShqkpM.net]
難読化が必要なのってAndroidのアプリコード位じゃないのけ?(カジュアルパクリ防止とアプリサイズ縮小にしかならんけど)
Web用のJSで難読化必要ってのはカジュアルコピーして欲しくないってだけならcljsでadvancedな最適化かければ十分じゃないの?(まるパクはどうしようもないのは難読化と関係ない)



725 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 22:34:32.24 ID:khShqkpM.net]
>>710
良く其れで金もらえるよね、難読化されたソースなんて納品したら普通はRejectされるよ?
SQLインジェクションで開発会社が3割賠償責任おわされた判例でてるし、難読化して事故ったら全責任おわされても文句言えないんじゃないかな?

726 名前:デフォルトの名無しさん mailto:sage [2015/01/25(日) 22:42:27.78 ID:/ILbZFHt.net]
>>711-712
Cとlisp系の良いところは正しく難読化できる点だから、難読化と正しさは関係ない
そもそもSQL文やHTMLが壊れる理由は、「納品先が勝手にコードをいじるから」だし

我々のところはソースをソースのままスパゲッティにしてるからまだいい方で、酷いところ(大手)になると、ソースコードにアセンブリ埋め込む形式の難読化してる

727 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 00:15:49.00 ID:X+/5coMG.net]
SQLインジェクションってSQL壊れるのとはなんの関係もないような・・・。
ソースにアセンブリ埋め込むのって高速化のためには普通にするような気がするけど、
難読化のためにすることもあるものなの?

728 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 00:33:55.66 ID:Ly3CAIWB.net]
だから勝手に文字列をエスケープする関数を外すなとあれほど…

729 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 08:10:37.27 ID:Ts/Sr/RD.net]
>ソースコードにアセンブリ埋め込む形式の難読化してる

ここ嗤うところですよね

730 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 11:20:28.26 ID:KoGaV5c9m]
難読化したソースコードを納品できるとかわけわからん
ソースコードを納品する意味がないだろ

731 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 21:26:27.49 ID:RXvh4ou7.net]
clojureは知らんけど、
CLだとマクロを全部展開しちゃえば読む気も起きなくなるという意味で難読化みたいなの昔読んだな

732 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 21:28:42.11 ID:Ly3CAIWB.net]
改行全部削除するだけでも効果的

733 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 21:44:49.32 ID:scuLqwMl.net]
いまiOSとAndroid(とchromeアプリ)でアプリ作ってて、
極力楽しようとしてWebView主体で作り始めたからJavascript難読化しないといけなくなったのです。(WebViewで作るのは結局良くないといまは思いますが・・・)
iOSやAndroidだとJavascriptファイルは丸見えになるので、部分的にでも丸パクリされたら嫌だなと思って。
まあ、ClojureScript初めてやってみて、最初はDOM操作とか苦労したけど、core.async を使って非同期処理を同期処理のようなコードで書くやりかたはすごく面白かった。Javascriptのコールバック地獄にはうんざりしてたから

734 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 21:48:26.22 ID:Ly3CAIWB.net]
>>720
Javaとかclojureなら、オブジェクトをシリアライズすればいいかと



735 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 22:57:49.23 ID:scuLqwMl.net]
>>721
Androidでシリアライズしたオブジェクトでアプリを動かすのって面白いアイディアですね。思いもよらなかった。できるんだろうか・・・
とはいえ、Webviewで動かすjavascriptはファイルに書いとかなきゃいけなくて、このファイルはアプリのアーカイブを展開すると丸見えなんですよ

736 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 22:59:06.41 ID:scuLqwMl.net]
でもシリアライズしたオブジェクトを使うためのクラスファイルが必要になるから、どちらにせよソースは必要ですね

737 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 23:03:24.81 ID:Ly3CAIWB.net]
>>722-723
むしろ、シリアライズオブジェクトを展開するソースはきちんと公開してオープンで開発した方がよいかと

738 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 23:09:19.30 ID:scuLqwMl.net]
デシリアライズしたオブジェクトを使うためにはそのオブジェクトのクラスって必要なかったでしたっけ?

739 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 23:15:53.57 ID:Ly3CAIWB.net]
クラスの有無よりもクラスの同一性の方がやっかいだった記憶がある

740 名前:電波いっぱい mailto:sage [2015/01/27(火) 08:33:55.08 ID:blz7EWSTv]
伸びてるとおもったらClojureと関係なくて笑った。

商用でも個人用でも難読化する理由なんて様々だから、一般的な是非の話など意味ないと思う。

難読化の効果としては、ClojureScriptで書いただけでかなり読みにくいjsコードだと思うし、advancedだったら、上の下くらいには困難だと思う。

741 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 00:26:07.52 ID:mTH1pwOm.net]
デスクトップアプリとかをバイナリ納品してたようなところは、スクリプト言語でもobfucationするとこはあるみたいだね。
ソース納品の場合は別料金で、さらに著作権譲渡せず、利用権貸与という契約もある。

phpでもある。元は海外製なので海外でも需要あるのかな?
www.asial.co.jp/ioncube/encoder/gui_manual/settings_obfuscation.php

javaの場合もclassファイルやjarで納品は聞くので、逆にscalaやclojureで納品出来る場合もあるらしい。

ただ、普通のjsやtsでも、cljsみたいにminifyやobfucation掛ければいいので、それが理由でcljs使う必要はない気がするが。

742 名前:デフォルトの名無しさん mailto:sage [2015/02/17(火) 10:08:49.06 ID:HzudLjaJ.net]
Boot使ってる人いる?

743 名前:デフォルトの名無しさん mailto:sage [2015/02/17(火) 17:36:31.38 ID:TUaKLPcf.net]
Clojure Gazzetの記事で見たけどいまいち何が変わるのかがわかんないので困ってる
Clojureで作り込みしたプロダクトにswankサーバ同封してるせいで利点が見えないっていうか

744 名前:デフォルトの名無しさん mailto:sage [2015/02/17(火) 17:37:41.92 ID:TUaKLPcf.net]
>>730>>729のBootの件ね



745 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 04:10:34.36 ID:RMVSmAx/.net]
bootは、フロントエンドのツールチェインが多いjsみたいな、cljs環境を意識して作ったとなんかで見た。

746 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 04:23:57.95 ID:RMVSmAx/.net]
leinは二回呼び出すから重いという話はあるね。
bootもそこは同じかな。
https://github.com/boot-clj/boot/blob/master/README.md

単純にclojure二回呼び出さないという点なら、昔はruby gemだったcakeとかあった。
先に立ち上げておいて、ストックしておく方法もあるけど。

747 名前:デフォルトの名無しさん [2015/04/17(金) 00:00:53.05 ID:8Ijoxuo8.net]
sourceforge.jp/magazine/15/04/16/144600
CLojureCLRでネイティブプログラム生成できそうだな

748 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 16:36:56.82 ID:ZCMgfOu6.net]
いままでも、sgenまたはmono --aot, mono --llvm --aotは出来たけど、RyuJITと共通というのが特色らしい。

749 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 16:41:49.13 ID:bZyz08BX.net]
Windowsも*nixもMacもiOSもAndroidもClojureで行けるとオモタけどちがうっぽい?

750 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 16:58:44.86 ID:ZCMgfOu6.net]
AOT使うとiPythonでもGUIの起動は速くなる。
ClojureCLRならrepl起動も早くなるが、ループなどの最高速はJITより最適化し難い。

751 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 17:03:02.34 ID:ZCMgfOu6.net]
>>736
desktopとandroidはjavaのJVM
IOSはjava2objcがあるので、Clojureでいける。

ClojureCLRは、いまのところUnity3D(のデスクトップ環境)でつかったり、WinでWPF使ったりとかぐらいかな。

752 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 12:51:41.83 ID:gx7/6L+t.net]
www.infoq.com/jp/news/2015/05/microsoft-llilc-llvm-compiler
ClojureのLLVMの実装がもうじき実現するな

753 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 21:12:09.66 ID:6h8WVvO7.net]
mono llvmだと、実装がない場合はmono vmにフォールバックしてたけど、どんな感じなんだろう。
mono llvmの場合は、startupに時間かかるけど、数値計算などが速くなったはず。
www.mono-project.com/docs/advanced/runtime/docs/llvm-backend/

754 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 20:18:54.60 ID:uj8dQgdW.net]
uberjar→VPSにscp→nginx設定→java -jar
こんなに簡単に出来ていいのか



755 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 20:32:25.24 ID:dl+rXweg.net]
>>741
大規模にamazonつかってるとpalletとか使うともっと幸せに

756 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 18:15:11.55 ID:VJLGoFo1.net]
Clojure 初心者なんですが、勉強するためのリソースを知りたいです。
あと日本人でツイッターフォローしておいた方がいい人とかいますか?

757 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 18:46:50.39 ID:jqCf9UHL.net]
>>743
日本語だったら
https://www.google.co.jp/search?client=safari&rls=en&q=gpsoft+clojure+kindle
で出てくるgpsoftのclojure kindle書籍三冊とか
あとは英語ならClojure GazzetとかのML

758 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 18:52:12.75 ID:rVbuZbAc.net]
日本語ならプログラミングClojure(孔雀)とQiitaくらい?

759 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 20:05:28.96 ID:VJLGoFo1.net]
>>744
紙の書籍はダメなんですね。
ちょっと読んでみます、ありがとうございます!

760 名前:デフォルトの名無しさん mailto:sage [2015/06/07(日) 20:06:39.36 ID:VJLGoFo1.net]
>>745
案外少ないんですね。 Qiita まとまりがない気がしたんですが、そうでもないんですね。
ありがとうございます。

761 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 15:16:37.13 ID:5sYF/T/a.net]
プログラミング初心者かどうかによって変わりますよね。
もしプログラミング経験があって、英語が読めるのであれば、次の本が良いと思います。巻末にClojureの短い入門がついています。

https://pragprog.com/book/dswdcloj/web-development-with-clojure

762 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 15:26:39.30 ID:rWuOTYr3.net]
「…よね」とか言うやつは精神病ぽくていかん

763 名前:デフォルトの名無しさん [2015/06/08(月) 16:22:10.16 ID:rJB8iCDI.net]
>>749
おまいが病院逝けω

764 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 16:57:40.49 ID:ZMbPAywj.net]
「…よね」とか言うやつは精神病ぽいよね



765 名前:デフォルトの名無しさん [2015/06/08(月) 20:28:34.03 ID:AXPER4TO.net]
「「…よね」とか言うやつは精神病ぽいよね 」とか言うやつは精神病

766 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 20:44:02.11 ID:rWuOTYr3.net]
「…よね」とかいうやつはマジレスするとただのバカ
二流以下的社会での表現だな
それを精神病なんだよとオブラートしてやったのに

767 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 20:51:07.02 ID:bPcbWOEv.net]
IDが出るようになってからただの煽り合いに終始する低レベルな板に成り果てたな

768 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 03:24:36.79 ID:PVVA8Vxp.net]
なったんじゃなくて
もとからそうだっのが
ばれただけなんですよね

769 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 06:56:29.26 ID:QNGnbMWJ.net]
>>748
ググったら第二版が出るみたいなので、それを待とうと思います。

770 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 07:08:49.86 ID:KNd4rBRo.net]
P2.0はもうでてるぞ。

771 名前:デフォルトの名無しさん [2015/06/09(火) 11:01:38.41 ID:zYTkc1Sl.net]
y

772 名前:ogthos.net/posts/2015-04-14-Web-Development-with-Clojure-2.html
今夏でしょ?
[]
[ここ壊れてます]

773 名前:デフォルトの名無しさん mailto:sage [2015/06/10(水) 15:52:31.84 ID:5fSdXMUj.net]
P2.0とは別なのか。楽しみだけど、本当に夏に出るのかしらんw

774 名前:デフォルトの名無しさん mailto:sage [2015/06/10(水) 16:39:34.42 ID:fY/pgtrq.net]
>>759
あの出版社は、正式な出版前の本をベータ版として買えるようにしているけど、
まだ出ていないところを見ると夏には厳しそうな気が。



775 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 19:02:21.26 ID:UgX2HyeQ.net]
後輩育成のために
プログラミングClojure第2版買い書店に行ったんだけど、
中小規模の書店でも平積みで何冊も置いてあった。
意外ととClojure来てるんじゃないかと思った。
関数型プログラミング押しの本も目立ってたし。
まぁ、ユーザー増えすぎるとロックインできなくなるけどね…

776 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 19:09:10.06 ID:CZaX0Ile.net]
プログラミングClojureは翻訳の質が保証されてるから買いやすい
なおClojurescript

777 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 21:11:34.86 ID:ZbqvNuzj.net]
書店で平積みの本が増えると「このジャンルも終わりだな」と思うようになった

「終わり」の意味は、「知ってると給料が上がるのではなく知らないと給料が下がる」

778 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 23:30:28.77 ID:UgX2HyeQ.net]
>>763
Clojureで稼げる案件をお持ちであれば是非ご紹介いただきたいですね^^

779 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 23:35:33.56 ID:ZbqvNuzj.net]
>>764
昔はアプリを作る高級言語は lisp か C の2択だった
そのときにlispで作った資産を、今のJVMで動くようにする仕事のときは儲かった

1990年代のサーバ系は lisp で作ったやつが多いから、探してみよう

780 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 00:40:36.18 ID:mxjEMfHB.net]
そいつはすげーや、
俺には無理だ、Clojureからlisp入ったんだもの

781 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 09:44:43.51 ID:A64/1XTV.net]
普段はScheme使ってるのでLisp全般には慣れてるけど
Javaはよくわからない
そんな

782 名前:ゥ分にお勧めのClojure入門書ってありませんか? []
[ここ壊れてます]

783 名前:デフォルトの名無しさん [2015/06/20(土) 10:20:52.62 ID:X5oJjLmp.net]
>>767
プログラミングClojureでいいんじゃない
リファレンスはREPLでdoc読めばいいし例がほしければ clojuredocs.org/

784 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 10:23:57.24 ID:oPIOHJmn.net]
プログラミングClojure一択じゃない?
Webアプリの章はもう使えないけど



785 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 14:09:46.96 ID:lE0SRYnt.net]
翻訳されてないのでよく見かけるのはここらへん。
BaTは、オンラインであるのが大きいかな。

Clojure 1.3-
Clojure Programming (2012)

Clojure1.6-
The Joy of Clojure, Second Edition (2014)
Clojure for the Brave and True (online)
www.braveclojure.com/

786 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 14:10:59.09 ID:lE0SRYnt.net]
Clojure1.2と1.3の間に大きな断絶があったけど、
それ以降は、最適化や機能追加がほとんどだとおもうので、
プログラム自体は1.3に則ってかけば1.7で動くはず。
https://github.com/clojure/clojure/blob/master/changes.md

mapやsetみたいに、たまたまorderedな実装で動いてたのが、
変わって動かなくなるライブラリとかあるけど。

787 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 10:52:31.48 ID:ghFblFiJ.net]
Clojureから
Javaのclassの中のpublic static void main(String[] args)
を呼び出す方法がわからない
public static void hellow()
なら
ClassName/hellow
で呼び出せるのに
ClassName/main
だとエラーになる

788 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 11:01:42.21 ID:vToOg2t5.net]
まさか配列の引数ってことはないよね?

789 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 13:43:56.73 ID:hAOMkAbd.net]
>>773
おれもそう思った

790 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 07:19:38.74 ID:goqHZtw7.net]
https://github.com/swannodette/delimc
これを動かしたいけど
project.cli
ってどう書けばいいんだろう
手動でダウンロードしてsrc 以下にdelimic/coreというディレクトリ作っても
うまく動いてくれない

791 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 09:29:37.82 ID:EoRNx9lp.net]
>>775
Leiningenは使ってるの?

792 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 09:48:31.40 ID:fUlCJROE.net]
>>775
自分のプロジェクトの
src/delimc/core.clj
にgithubからrawファイルコピペしたら普通に動いたよ

git cloneしたものを使うならローカルリポジトリにinstallしてproject.cljのdependencyに [delimc "0.2.0"]って書けばよくね?
なおclojarsだと0.1.0しか無かった

793 名前:デフォルトの名無しさん [2015/06/22(月) 09:57:22.42 ID:nboh/a20.net]
切れすぎ

794 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 17:42:15.28 ID:2Ao8Xtyy.net]
Clojureで継続使いたい場合はこっち使うのが推奨ってことでいいのかな
www.clojure.net/2012/03/24/Continuation-monad/



795 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 00:51:30.58 ID:XTmBAD/B.net]
継続を使って何がしたいわけ?

796 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 09:42:25.02 ID:ngztl1PG.net]
抜かずの3発かなぁ

797 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 11:56:46.04 ID:1d77gFDC.net]
pythonのscikit-learnが便利すぎる
Clojureで作ってしまったプログラムと
うまく組み合わせる方法ないものでしょうか

leinをコマンドライン実行を
pythonのsystem.osから実行するのが簡単かもしれないけど
カレントディレクトリの指定をどうしたものか

798 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 16:08:26.02 ID:Ag+Ez/h4.net]
>>782
普通に jar 作ってしまえばいいんじゃねーの?( lein 呼び出すのは重いし)
あと fs ってライブラリ使えば簡単にカレントディレクトリ取れると思う。

799 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 21:10:57.38 ID:Ok1luf1O.net]
>>780
scheme資産の流用をしたい

800 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 15:17:46.11 ID:EeQiqsFc.net]
プログラミング closure
読んでるんだが6章で初めて出てくる
->
の説明が何処にもない

801 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 15:35:21.21 ID:1I5SLscW.net]
>>785
マクロやね
(doc ->)
-------------------------
clojure.core/->
([x & forms])
Macro
Threads the expr through the forms. Inserts x as the
second item in the first form, making a list of it if it is not a
list already. If there are more forms, inserts the first form as the
second item in second form, etc.

formは関数の並びでxを最初関数の第一引数に突っ込んでその結果を第二関数の最初の引数に以下略な形にしてくれる
user=>(macroexpand-1 '(-> 1 inc (+ 1) (+ 2) (* 3)) )
(* (+ (+ (inc 1) 1) 2) 3)
こんな風になる

前の関数の結果をケツにしてくれる ->>ってマクロもある

802 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 16:07:08.70 ID:O5DXQOTX.net]
>>785
これ覚えておくと超便利だぞ。

803 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 16:19:27.24 ID:2uHODUNV.net]
というかこれないと関数のネストがヤバいことに

804 名前:デフォルトの名無しさん [2015/06/27(土) 17:14:07.79 ID:CmsG8aAe.net]
スレッディングマクロ最高よね



805 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 08:41:32.80 ID:T9BA7Qai.net]
matchマクロで...が使えないのだけど
代わりの手段が何かあったりします?

806 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 20:55:57.06 ID:a0oplYwD.net]
デフォルトで入ってるマクロ以外のマクロは無しの方向にしませんか

807 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 17:02:14.83 ID:uLxN7juh.net]
leiningenってJavaのパッケージは自動でダウンロードしてきてくれないの?

808 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 17:04:52.48 ID:uo6R+/rX.net]
>>792
Mavenのリポジトリならダウンロードするけど、何がダメなん?

809 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 18:36:56.46 ID:hIsoJUif.net]
マップのキーワードに日本語を使うプログラムが普通に動いてしまって驚いてる

810 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 18:39:43.12 ID:hIsoJUif.net]
マップのキーワードに日本語を使うプログラムが普通に動いてしまって驚いてる

({(keywaord "日本 料理") 90 (keyword "アイス" 4} (keyword "日本 料理"))

このままもっと複雑なプログラム作っていっても問題ないのだろうか

811 名前:デフォルトの名無しさん [2015/06/29(月) 21:10:46.91 ID:jEZLfwei.net]
実装見れば?特に驚くようなことじゃない

https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Keyword.java
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Symbol.java

812 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 02:59:54.16 ID:HIKgKluT.net]
javaの内部エンコーディングはutf16だし、通常通りファイルエンコーディングを
utf8にして、エンコーディングを合わせてる限り無いとは思う。

813 名前:デフォルトの名無しさん [2015/06/30(火) 11:49:44.87 ID:5/fQWLo+.net]
>>797
Javaでいう変数名と勘違いしているようだけど全然違う話だぞ

814 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 01:16:58.15 ID:dlscpTQ4.net]
>>798
ん?文字列だと思ったんだけど、なぜに変数名?



815 名前:デフォルトの名無しさん [2015/07/01(水) 03:02:14.71 ID:PhVrWrz6.net]
>>799
まさか文字列リテラルのこと?
それは深読みしすぎだったが、そもそもキーワードにって書いてあるの読めなかったの?

816 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 12:07:43.91 ID:z/KDpVAR.net]
:日本(半角スペース)料理

817 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 13:08:50.98 ID:xhUgkep8.net]
mavenにkawaとABCLがあるんだけど
ClojureからkawaやABCLが使えるってこと?

818 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:52:40.00 ID:4RTBoCuF.net]
おいしいClojure
ざっと見てみた感じあんまりおいしくないような感じするのは
普段使ってるのがPythonで豊富すぎるライブラリが
当たり前に感じてるからなんでしょうか

819 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:58:01.77 ID:UaXrhJN5.net]
前に立ち読みしたときに既に古くて使えないライブラリがけっこうあったような

820 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 23:45:50.57 ID:1TzmIX3q.net]
>>802
何の話してるのかよく分かんないけど、それは出来ると思う

821 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 23:50:26.84 ID:zFXA0WTo.net]
Javaと一緒でなんだかんだ言って移植性が低すぎる

822 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 10:10:15.10 ID:ThPkJ/+I.net]
>>806
移植性の高い低いって何で決まんの?

823 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 10:31:13.07 ID:vGUPxdrf.net]
そりゃJVMと一蓮托生よ

824 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 11:27:28.07 ID:1j8Z8n9B.net]
理想としては

leinとproject.cljをjavaのインターフェイスとして使って
主体のプログラムはkawaで書いて
racketとも互換性があるようにしたい



825 名前:デフォルトの名無しさん [2015/07/04(土) 15:17:09.17 ID:n0O10IcO.net]
意味不明
せめて例示を

826 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 18:06:24.23 ID:ThPkJ/+I.net]
そこまでしないといけない理由が全く持って分からないし、Scheme処理系なんてそもそも互換がお互いにほとんどないじゃん。それもRacketとかRacket languageだし。

827 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 21:51:58.00 ID:V2uWXOcR.net]
>>807
移植性が高い = コンパイラ・インタプリタがインストールしてあれば、ソースコードをコピーすればそのまま翻訳実行できる

いままでの経験

828 名前:縺A一番移植性が高いのはC言語
Javaは…
[]
[ここ壊れてます]

829 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 22:12:12.38 ID:0/RKLMEi.net]
>>812
JVMがあればそのまま実行できるじゃんよ
ClojureとClojure CLRだとJVM依存ライブラリ(jettyつかってるとかapache commonsとか)があるとソレの移植からになるのを懸念してるの?

830 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 22:16:40.32 ID:V2uWXOcR.net]
>>813
javaはそもそも10年前のコードがコンパイルができない

clojureはleinみたいなモノを使わないと、ライブラリで何を使ってるかすら把握できない

831 名前:デフォルトの名無しさん [2015/07/04(土) 22:32:24.41 ID:n0O10IcO.net]
>>812 >>814
Cで同じコードがそのまま動くなんてラッキーくらいの感覚だけどな
まあこの10年だけで考えるならワードサイズも32bitでよかっただろうし、リトルエンディアンだけ考えてれば十分だったのかもしれないけど

で、10年で見るならJavaだって似たようなもんじゃないかと思うがコンパイルできないってどんなコード?

832 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 22:44:01.81 ID:0/RKLMEi.net]
>>814
C はAutoConfがー
RubyはGemがー
他多数

ですが?

833 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 22:50:07.63 ID:ItRolA6R.net]
Javaについては、90年代のプログラムをコンパイルしようと思うと
コレクションフレームワークのところでコケるかもしれない。
それ以外は大丈夫だと思うけど。

834 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:11:09.88 ID:V2uWXOcR.net]
>>815
・文字列処理(java.lang.Characterのメソッド)
・文字コードで分岐する処理
・日付(java.Dateのメソッド)
・型チェック(警告いっぱい)
・<>指定しないとコレクション使えない点



835 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:16:12.23 ID:V2uWXOcR.net]
>>816
Cは、10年前に gcc file.c でコンパイルできてたモノが、コンパイルできなくなるなんてないしな…

Rubyにはそもそも互換性なんか求められてない

836 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:33:17.97 ID:ItRolA6R.net]
>>818
10年前には当たり前なことだらけなので、
当時のコードを書いた人の技術力が足りなかったのでは。

837 名前:デフォルトの名無しさん [2015/07/04(土) 23:42:10.87 ID:n0O10IcO.net]
>>819
gccの動く環境だけで移植性を語ってたのか・・・
つかgccが動いてもCPU次第だし標準ライブラリのみでやってたわけじゃないと思うけどな

838 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:43:41.89 ID:V2uWXOcR.net]
>>820
それより技術力が低いときに作ったはずのCがきちんとコンパイルできてるんだから、教訓としては、できてから10年しか経ってない言語で書くなということでしょうね

839 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 23:47:10.33 ID:V2uWXOcR.net]
>>821
gccが動けばOKというのは心強い
WindowsとUnix関係なく移植できるし

ライブラリの話までしだしたら、javaは標準APIの階層から変わってるしな…
clojureにいたっては、ネットワーク接続して頻繁にライブラリ更新するのが当たり前だしな…

840 名前:デフォルトの名無しさん [2015/07/04(土) 23:55:48.86 ID:n0O10IcO.net]
>>818
> ・文字列処理
CSIなCと比較できないっしょ

> ・文字コードで分岐する処理
基本的に上と同じ指摘になるが、そもそもどういう処理だとJavaでコンパイルできない?

> ・日付(java.Dateのメソッド)
Cなんかtime_tのサイズも違うし分解能もプラットフォームごとにいちいち考慮するぞ

> ・型チェック(警告いっぱい)
このあたりは既に >>815 で指摘したとおりだが、そもそもdeprecatedなメソッドはちゃんと警告でるだけかなり親切だと思うがな

> ・<>指定しないとコレクション使えない点
使えない?

841 名前:デフォルトの名無しさん [2015/07/05(日) 00:01:50.24 ID:EDD7h1SP.net]
>>823
ずっと規格とか言葉の定義があやふやなままだけど、gccが動くってのもGNU tool chainが動くって意味だね
Unixって書いてるけど本当にUnixなら間違いだし知ってて書いてるとは思えない

自分定義で移植性を語るならもう少しみんなに分かるように定義してくださいね

842 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 00:16:09.10 ID:6U0/+Enp.net]
>>825
ここでの移植性を次のように定義すればどうでしょう

大学の演習で処理系に付属しているAPI以外を使わずに作成した
・行交換するGaussの消去法のプログラム
・自作Prologの処理系
・エコーサーバログラム

のソースコードが、32bitか64bit かに依存してコードを書きかえることなく、
・Windows8.1 (MinGW gcc, JDK javac)
・Solaris11 (付属のcc, JDK javac)
・Ubuntu10 (gcc, JDK javac)

の最新バージョンで動く

843 名前:デフォルトの名無しさん [2015/07/05(日) 00:36:21.06 ID:EDD7h1SP.net]
>>826
移植性という言葉を使うには狭いかな
せめて実用的なプロダクトベースのコードで語ってほしいし、
JVMで動くJavaとCを比べるならハードウェアアーキテクチャ抜きに比較するのは不適切だし、
10年前云々がすっぽり抜けちゃってるぞ

844 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 02:34:42.80 ID:ex8y+zyl.net]
その定義ならClojureとLeiningenの
組み合わせでまったく問題ないじゃん。



845 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 06:35:28.36 ID:EoM2Wfz5.net]
移植性の意味が10年前のコードがコンパイルできるかって話になってて驚いてる。

Javaの10年前というと時代的にJDK5になるのな。JDK5時代に書いたコードがJDK8で動くか、なら限りなくほとんどのコードはそのまま動くんじゃないの?
(知ってる限りでもAPI階層から変わったものなんて山のようにないし、それこそ警告が出てくるんだからそれ変えるだけで普通に動くと思うんだが)
JDK8で書いてJDK5で動かすのは当然無理だけど。
あとは指摘されてる通り、JVM動けばアーキテクチャ依存なコードを書かない限りは動くでしょ
(ウェブアプリケーションならほとんど引っかからない問題な気がする(過去に1.4で動いてたのを6か7でコンパイルしてワーニング出たくらいで収まった経験ならある))

846 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 06:36:52.54 ID:EoM2Wfz5.net]
Clojureの話はどっかに書いてあったけど、Clojure1.3から1.7までならほとんどの標準ライブラリは動くと思う(deprecatedは仕方ないとして)。そもそもproject.cljにclojureのバージョンまで指定しておけばどこでも同じバージョンになると思うし、JVM動けば動くんじゃないの?
外部ライブラリだって日々更新していく方針を取らなければ、ずっと古いバージョン使えるわけだし。

なんか間違ってる?

847 名前:デフォルトの名無しさん [2015/07/05(日) 13:20:49.21 ID:18+ya5CF.net]
うん

848 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 23:24:23.30 ID:W3uesJYK.net]
leinがデフォルトで生成するディレクトリ構造だと
src/projectname/core.clj
に全部書いてねって感じだけど
core.cljが巨大になってきたので
my-util.clj
io-util.clj
etc-util.clj
みたいな感じでファイルを分けたいのだけど
src/my-util.clj

src/projectname/my-util.clj
のどっちが推奨なんです?

javaのプログラムもsrc/以下に放り込むのが推奨スタイル?

849 名前:デフォルトの名無しさん [2015/07/05(日) 23:57:33.00 ID:EDD7h1SP.net]
>>832
このあたりの設定例読んで、
https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L278

みんながどうやってるか眺めて好きなやり方をとればよい
https://github.com/search?l=Clojure&q=clojure&type=Repositories&utf8=%E2%9C%93

850 名前:電波いっぱい mailto:sage [2015/07/06(月) 20:04:01.75 ID:z0yxLIYt.net]
>>832

僕なら、utilディレクトリを作って目的別のファイルに入れる。
でも、etc とか、my とかは目的名じゃないからもっと考えて命名する。

目的が明確なら、そのディレクトリを作るのもいいと思う。ioとか。

851 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 02:10:30.78 ID:FANO5u+E.net]
sjisで書かれたjavaコードと
utf8で書かれたclojureコードが混在している場合って
project.clj
はどう書けばいいのでしょうか

852 名前:デフォルトの名無しさん [2015/07/07(火) 02:22:56.44 ID:Q1eHRJ8E.net]
>>835
javaコードはjavacでコンパイルされるからここを参考に設定すればよい
https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L251

853 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 22:09:29.07 ID:pZIQE70v.net]
ClojureでもJavaみたいにnamespaceを
com.example.foo.bar/MyClass
みたいに深いディレクトリを掘ってファイル置かないといけないのです?
簡単に bar しかnsにしてない人が多い印象ですが

854 名前:デフォルトの名無しさん [2015/07/16(木) 23:32:45.55 ID:UiQdF58b.net]
>>837
好きにすればいい

Javaは慣例で”com.company.product.xxx”とか”jp.co.company.product.xxx”なんてやってるが実は考え過ぎで、せいぜい”product.xxx”で困らなかったのではないかという気もする



855 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 00:50:24.79 ID:XMhN9NpT.net]
java使ってるときは、ドメイン名の部分は一括りで識別してたんで、長さはあんまり気にしてなかった。

856 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 01:14:33.74 ID:XMhN9NpT.net]
clojarsでも、こんな感じ。
[ring "1.4.0"] 親プロジェクト (ring/ring)
[ring/ring-core "1.4.0"] 子プロジェクト
[org.clojure/clojure "1.5.1"] maven centralにあげる場合は、グループ名がドメイン名

maven centralにあげる場合にグループ名にドメイン名を付けるぐらいで、パッケージ名にはつけないみたい?

https://github.com/ato/clojars-web/wiki/Groups
https://github.com/ato/clojars-web/wiki/tutorial
https://github.com/technomancy/leiningen/blob/preview/doc/DEPLOY.md

857 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 12:48:43.17 ID:MJ+wdIOr.net]
Javaとclojureのコードを同じネームスペースに置いてしまうのって大丈夫なんでしょうか

858 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 13:24:27.17 ID:4YwvXMoy.net]
>>841
問題無い、ただ分けた方が見通しは良くなる
Clojureのプロジェクトでjavaソース併用するときに相互依存な物書くのはできないのでやっちゃだめ

859 名前:デフォルトの名無しさん mailto:sage [2015/07/24(金) 13:32:52.45 ID:W0iRT6Hu.net]
JavaのClassの中で(lex/yaccとかつかって)
自動でClojureに変換できる関数だけClojureに変換して
残りはJavaのまま残しておいて
同じnamespace内に混在

860 名前:デフォルトの名無しさん mailto:sage [2015/07/25(土) 23:12:36.29 ID:47K/058z.net]
Leinは依存関係にあるcのプログラムもビルドしてくれるようにならないものか
Python のpipはしてくれる

861 名前:デフォルトの名無しさん [2015/07/27(月) 00:37:08.41 ID:SYhC4jQ3.net]
>>844
JNIでも使ってんの?

862 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 04:16:47.13 ID:JdT7Ezwf.net]
leinの前工程で、ネイティブの依存関係をyum,brewなりで解決させるしかないのでは。
それこそpipやgem
premakeなりmakeなり
leinのプラグインでシェル扱うのもあるけど。
https://github.com/hyPiRion/lein-shell

863 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 04:17:18.39 ID:JdT7Ezwf.net]
途中で送信してしまった

864 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 06:09:17.52 ID:keSdeN9Q.net]
Emacsからタグジャンプできない



865 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 06:13:25.83 ID:8dgAmKAh.net]
>>848
clojure-modeとciderを入れるんだ

866 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 03:59:48.42 ID:V6PM64+2.net]
clojureのソースを置く場所をsrc以外に変更するとciderが認識しない
https://github.com/clojure-emacs/cider/issues/950
こんな感じのエラーになる
じゃあsrc以下にclojureとjavaのコードを混在するの?

project/src
project/java

にわけるとか?

867 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 04:19:31.77 ID:13FPdMsD.net]
>>850
うちは
project/src/clojure-name-space-directory
project/java/path-to-package-base-directory
を標準にしてたからきがつかなんだけどそういうバグ居たのか
つってもjavaコードって速度優先のprimitive計算系のコードとか旧来のライブラリ用のPojoしか入ってないんで滅多につかわんのだけど
やはりjavaコードは単独のprojectにしてjarをmavenのローカルリポジトリに突っ込むべきなんかね?

868 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 18:16:00.36 ID:El3q6dsC.net]
ちょっとしたテキスト処理とかの普段使いの言語にclojureって使い物になる?
あきれるほど起動が遅すぎて使い物にならないと思うんだけど、何か裏技でもあるの?

869 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 18:39:29.27 ID:13FPdMsD.net]
>>852
Emacs+REPLを昔はCLでやってた、今はClojureでやってる
環境を一度立ち上げたらそれをずっと使う様にしてるからJVMの起動の遅さは気にならない(つかJVMの起動が遅いのはJavaから変わらない)

でも最近Elixirに浮気気味

870 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 16:11:49.52 ID:sIHWU5bW.net]
cons car cdrがないとマクロが何か使いにくい気がする

871 名前:デフォルトの名無しさん mailto:sage [2015/08/08(土) 16:15:59.58 ID:kkkSL9bh.net]
>>854
cons はあるし car cdr は first rest だけどダメなのかい?

872 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 01:40:55.03 ID:90IR3onH.net]
ドットセルのことでは

873 名前:デフォルトの名無しさん mailto:sage [2015/08/15(土) 04:33:23.76 ID:qZnzjC8o.net]
>>856
replacaとか破壊書き込み無いんだしどうしてもcar,cdrが欲しいならmapで{:car value :cdr value}で良くね?

874 名前:デフォルトの名無しさん mailto:sage [2015/08/17(月) 21:31:17.48 ID:3XTzV4r5.net]
car, cdr は川下りの如し。



875 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 12:53:25.74 ID:GzXb53Jk.net]
clojureからpythonのライブラリを使う方法ないのでしょうか
numpyとかjythonで動かないものが使いたい

876 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 12:56:19.63 ID:g5T9Gxtu.net]
>>858
どうして?
俺にはただの語呂合わせ
知性のないおバカさんに聞こえるが
俺がばかなのか?

877 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 16:29:58.64 ID:SHTnF8RO.net]
>>860
いやその通りなんだが。

878 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 18:45:47.43 ID:g5T9Gxtu.net]
>>861
いたずらに「いや」からはじめるやつは自己中の精神病だと思うんだが

879 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 19:37:06.37 ID:zrEdzFeo.net]
いやそうでもない

880 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 19:40:24.80 ID:KgOqinrw.net]
いやよいやよもいいのうち
チンコたちますぅ

881 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 00:26:48.27 ID:XEJ5PHRj.net]
>859
javaからcpython使えるライブラリがあるから、
こういうのであれば、numpyの結果そのまま持ってこれるんじゃないかな。
https://github.com/mrj0/jep/blob/master/README.rst

882 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 00:36:50.08 ID:XEJ5PHRj.net]
jep使ってるclojureからpythonのライブラリ呼び出してる例があったけど、ロシア語が所々出てくるみたい。
参考にして、ロシア語に突き当たったら自動翻訳で英語にしたほうがいいかも。
https://github.com/hsestupin/clojure-pymorphy/blob/master/README.md

883 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 14:29:43.34 ID:qLTFTNta.net]
http-kitってクライアントとして使うとclj-httpより処理速かったりする?

884 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 15:12:18.33 ID:KHlpHEgx.net]
www.http-kit.org/client.html
早いかは気にしたことないけど、async出来たりするので、複数取得してまとめるなら速くなるんじゃないかな。

> Easy-to-use API, modeled after clj-http
あと、api自体はそれほど違わないと思うが、proxyなどに対応してるかはわからない。



885 名前:デフォルトの名無しさん mailto:sage [2015/09/01(火) 14:46:19.12 ID:hIVgRi+z.net]
clj-httpからhttp-kitにして
concurrentにrequestするようにしたら3倍くらい速くなった
マジでありがとう

886 名前:デフォルトの名無しさん mailto:sage [2015/09/07(月) 15:02:38.08 ID:XFcMXbyl.net]
SICPのClojure版出たな

887 名前:デフォルトの名無しさん mailto:sage [2015/09/07(月) 15:40:16.49 ID:Jef7Uaa2.net]
へえー
ま、おれはSceme版でいいや

888 名前:デフォルトの名無しさん mailto:sage [2015/09/07(月) 15:47:00.11 ID:Jef7Uaa2.net]
あ、ここクロージャスレか
しんつれいしますたぁ

889 名前:電波いっぱい mailto:sage [2015/09/07(月) 20:39:43.28 ID:PwlJ1i8i.net]
>>870

どこ?

890 名前:デフォルトの名無しさん mailto:sage [2015/09/09(水) 23:01:39.56 ID:/2hOGL1j.net]
www.sicpdistilled.com/section/wel

891 名前:come
まだ途中かな。
SICPをclojureに逐一書き換えたという訳ではなく、SICPの一部内容をclojureで説明したもの。

去年kickstarterでクラウドファンディングしてて、最近公開した。
https://www.kickstarter.com/projects/1751759988/sicp-distilled

RHも言ってるように、SICP全体を説明するにはclojureにはむいてないので、全部はやらないと思う。
[]
[ここ壊れてます]

892 名前:デフォルトの名無しさん mailto:sage [2015/09/11(金) 06:54:14.22 ID:C33hywT8.net]
タイトルからして SICP *distilled* って言ってるんだし、全部はやらんのでは

893 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 17:20:18.26 ID:YDe/U6R6.net]
clojureは頻繁にリファクタリングを繰り返す開発には向いてない?
型がないと設計的な変更を避けるようになりそうだけどフォローはあるのかな

894 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 02:42:57.67 ID:MGD+BScA.net]
データの定義とチェックをするけど、
関数の型チェックはあまりしないみたい。
https://github.com/Prismatic/schema
https://github.com/miner/herbert


関数の型チェックは、phpみたいにIDEやlint向けだけのアノテーションにでも使えば(使える?)いいんだけど、いまのところ使いどころが難しいみたい。
https://github.com/clojure/core.typed

ライブラリ利用者としては、リファクタリングより、APIが非互換で型が変わったときにソース追うしかなくて困ることはある。



895 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 02:46:55.61 ID:MGD+BScA.net]
TypeScriptでJSのソースには型に全部Any型がつくみたいな問題があるけど、他にもあった気がする。

896 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:24:33.67 ID:AZJ05Qb9.net]
やっぱそういうところは難しいか
サンクス

897 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 20:07:22.44 ID:tjf5Il2M.net]
SICPの新約が出たよ!
d.hatena.ne.jp/takeda25/20151030/1446174031

898 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 20:15:47.93 ID:x0Dl4mG4.net]
売ってるやつの訳はとっつきにくかったからこれはありがたい
色々燃えてるみたいだけど一番良い訳を出した人が正義

899 名前:デフォルトの名無しさん [2015/11/01(日) 23:05:15.96 ID:PByF+5ro.net]
原書で読むのが大正義

900 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 23:29:27.25 ID:aNC/N0AH.net]
ネットに全部出てるしな。
とはいえ今更英語に親しんでも……というロートルが趣味で読む分には日本語も悪くない。

901 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 23:48:53.92 ID:X9VGfBzl.net]
よく知らんけどSICPの原文の著作権とかは大丈夫なん?
公開されてるからって著作権フリーなわけないだろし
日本語訳を公開するのに原著者の許諾は得たのかしら
著者がMITの人間だからって発表した文章までかたっぱしからMITライセンスなわけないだしょうし
大丈夫なのかしら

902 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 23:55:05.31 ID:X9VGfBzl.net]
原著のライセンスはCreative Commons Attribution-ShareAlike 4.0 International License なのね
なら大丈夫そうね

903 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 00:39:53.84 ID:dHMsk6uD.net]
clojureを勉強して一番意味があったことは
オブジェクト指向の文法に寛容になれたことだな

C#やJavaを見て
「どうしてこんなに行数書かないと、こんな単純な実装すらできないんだ!
オレが間違ってるの?もっと短く書ける端的で最新な正しいやり方があるの?」
と模索してばっかりだった

最初からオブジェクト化に適さない、関数を詰め込んだユーティリティ(モジュール)クラスを見て
いったいなにがオブジェクトで、何がユーティリティで
その境目はどこにあるのかと、くだらないことを考えずに


904 名前:ただ純粋に機能に実装すればいいんだと、Clojureの短さを見てそう感じた

オブジェクトの神秘性が完全に消えたんだ
オブジェクトは単にデータ構造と関数の詰め合わせに過ぎない
メソッドや継承というのは、単にディスパッチの手段にすぎない
そうして改めて観察することで、オブジェクト指向言語の活かし方も分かったし
関数型言語の強みというものが、改めてよくわかった

そうした意味合いでClojure(とLisp)には感謝している
[]
[ここ壊れてます]



905 名前:デフォルトの名無しさん [2015/11/02(月) 00:55:24.26 ID:3aJacJQZ.net]
>>886
>オブジェクトの神秘性が完全に消えたんだ
>オブジェクトは単にデータ構造と関数の詰め合わせに過ぎない
>メソッドや継承というのは、単にディスパッチの手段にすぎない

CommonLispとか関数型の人間は昔からそう思ってるのだが、
OOそれ自体はどうでもいいんだ、というこの感覚は
なかなか納得してもらえないみたい

906 名前:デフォルトの名無しさん [2015/11/02(月) 01:01:02.40 ID:3aJacJQZ.net]
Lispで自分でマルチディスパッチを実装してオブジェクトシステムもどきを作って見ると、
やってることの意味がわかるし、「オブジェクト」についてのよくある喩え話とセットに
なった単一ディスパッチがクソだなと思う。

907 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/02(月) 13:19:52.26 ID:5/Pq42i4.net]
「アルゴリズムがデータ構造でしかない」までわかった次は
それを短くかく為に再帰呼び出しが有効だとわかる
全てのアルゴリズムは再帰で書きはじめる
しかしそれはループに比べて低速で複雑な再帰は末尾最適化もされないから
現実的には再帰でソースコード書いて良い場所は限られる
結局は「アルゴリズムをデータ構造」のように書く事をしてもしなくても、
最終的なコードを再帰呼び出しに出来ないならあまり意味がない
よってそういう方面から離れて非完璧方面へ歩んでいるのがC#やJAVAという言語
もう一周すればそっちの凄さがわかるよ

908 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/02(月) 13:24:03.74 ID:xhNmMlq/.net]
JAVAとかで「クラス定義」している場所が「再帰」になる
今のPCスペックに合わせたプログラミングを極めたって
どうせパラダイム変化で灰燼に帰すから
今のハードウェアで動かなかろうと
究極的なソースコードを生産し
絶対的なCPUの演算速度が得られた暁に化けるコードをuyは書いています

909 名前:デフォルトの名無しさん [2015/11/02(月) 14:26:12.15 ID:LMLSqkfz.net]
F#最強ですねわかります

910 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/02(月) 14:29:18.81 ID:QQA4QdjN.net]
lambdaが使えれば言語は関係ない
アルゴリズムの究極的メタプログラミング
メタをメタで生成しそれをさらにメタしていくんだよ
メタするほどに速度はお察しになる代わりにソースコードだけは極限まで短くなるのです

911 名前:uy ◆Qawu9.2l1E mailto:sage [2015/11/02(月) 14:30:59.68 ID:gLS3ib7d.net]
自分のアルゴリズムを動かすだけにスパコン欲しくなってきてる
個人で100万くらいで買える奴って性能どんくらいなのか

912 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 14:43:06.93 ID:kfXAgSVx.net]
x F#
o Elixir
ここ大事

913 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 16:06:23.49 ID:Vf0g8fE7.net]
>>889
ロジック記述の簡潔さと、cpu実行の効率性は必ずしも一致しないんだけど、そういうのを全部飲み込んだ上で、最高の知能集めてvmとjit作れば克服出来るってのがjavascriptだよ。

914 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 17:36:40.52 ID:VA7rHB22.net]
>>893
むかーし、ペンティアムを最初に搭載したPC-98シリーズが100万円くらいの
値段を付けていた。パソコン、今は高いもので数十万円か。

スパコンというなら桁が違うのではないか。店で買うもので



915 名前:烽ネかろう。
その金額では人に作ってもらうわけにいかないだろうから、自作かな。
[]
[ここ壊れてます]

916 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 18:52:22.02 ID:GSPDOiRN.net]
スパコンって言ったらたいてい億の単位を使うよな
というかあれは個人で所有なんてせずに時間あたりで借りるんだよ

917 名前:デフォルトの名無しさん [2015/11/02(月) 22:46:11.53 ID:3aJacJQZ.net]
>>889が再帰の基本も知らんことはよくわかった

918 名前:デフォルトの名無しさん [2015/11/03(火) 16:02:45.04 ID:47MAD1yd.net]
esehara が気持ち悪すぎる

919 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 22:54:55.98 ID:8s3mVvwI.net]
>>893
AWSとか使えばいいのかも。

920 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 08:27:51.85 ID:YmehbHLE.net]
>>900
1000インスタンスあったら1000倍のパフォーマンスでるような処理ならAWSは実際お勧めだと思う
Clojureだとマシン数よりコア数が多い方が簡単にスケールできるからこのスレ的には難しいかもしらん
ElixirとかErlangだとコア数よりマシン数が効くのだけど、純粋な数値計算だとものすごい遅いからこれまた難しい(IO待ちが多い処理だと有利なのに)

ManyCoreを重視してるけどManyMachineでも簡単にパフォーマンス出せるようになってほしいなcore.async

921 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 21:35:01.30 ID:z0yAetDY.net]
計算より通信がボトルネックなら並列計算機とかIB使ったりするんだろうけど、
単純に物量が多いだけならば、awsのemrやらとspark使ったりでなんとかなるのではとも思う。

922 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 22:04:02.66 ID:z0yAetDY.net]
kontraktor 3 っていう高性能なdistributed Actors の実装があるんだけど、
いまのところclojureやscalaでは(javaも)流行ってない。
ruedigermoeller.github.io/kontraktor/

923 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 20:01:37.25 ID:NW0PnoYA.net]
単純なことを聞いて申し訳ないのだが
外部ライブラリのdocを簡単に調べる方法ってないですかね
今例として探そうとしているのはclojure.data.jsonね

leiningenで依存関係を定義して、lein repl ->docで調べられるのは知ってるけど
その名前空間にどんな関数があるのかを列挙できない

逆にlighttableやLa clojureを導入してみると
その名前空間にどんな関数があるかは列挙できるけどdoc関数が使えない?

なんか勘違いしている可能性が高いけど詰まったので教えてほしいなあ

924 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 20:04:40.49 ID:NW0PnoYA.net]
すいません、これだけだと意図が伝わらないので補足します
具体的には
(find-doc "^clojure.data.json.*")で、全部の関数のdocがずらずら表示されて欲しいんだけど
これやるとclojure.data.jsonの名前空間の説明だけが出てきて保持している関数の表示はされないということです
なぜそうしたいのかというとdeprecatedな関数とそうでない関数の区別をしたいからです



925 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 01:53:49.91 ID:D9Y34ii+.net]
https://crossclj.info/doc/org.clojure/data.json/latest/clojure.data.json.html
こういうのは、組み合わせればできるんじゃないかな。
これでclojarsのレポジトリにあがってるのは見られるし、ローカルでやりたければ、似たようなツールのソース持って来ればいいし。

926 名前:デフォルトの名無しさん mailto:sage [2015/11/23(月) 03:32:36.20 ID:Tb9WhGMi.net]
>>905
find-docは引数のregexにマッチするネームスペースのドキュメントを表示する奴なので
特定の名前空間にあるvarにマッチする関数については表示されないよ
ひつようならns内の名前一覧からclojure.repl/docを呼び出す関数自分で用意しないと駄目だとおもう
普段cider-repl使ってるからあんまりそう言うの必要って感じないけどあれば便利っぽいなぁ、書いてみようかな(さがせばありそうだけど)

927 名前:デフォルトの名無しさん mailto:sage [2015/11/25(水) 01:43:06.77 ID:7h/fcopS.net]
名前空間で定義されてるpublicな名前の一覧が欲しいだけならns-publicsで取れる

928 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 18:18:34.43 ID:uaMoILlJ.net]
byte-arrayのクラス表示バグってない?

929 名前:デフォルトの名無しさん mailto:sage [2015/12/06(日) 21:32:31.19 ID:8Olb+xvH.net]
ClojureScript2版出るのか
今度こそは翻訳じゃなくて原著を

930 名前:デフォルトの名無しさん [2015/12/11(金) 20:51:07.58 ID:vPkQdQym.net]
>>904

clojure.repl/dir で特定のネームスペースにインターンされている Var 一覧が出る
clojure.repl/doc で特定の Var のドキュメントが引っ張れる
が、そもそもライブラリでまともに docstring 書いてるの少ないから
clojure.repl/source とかでソース見る方が早い
cider 使ってるなら M-. でライブラリの中に定義ジャンプ出来るし、それが一番早かったりする

931 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 17:10:27.31 ID:QFBdnAFu.net]
LightTableいつの間にかElectronになってる

932 名前:デフォルトの名無しさん mailto:sage [2015/12/16(水) 01:17:04.18 ID:gGq035Jk.net]
lighttable.com/2015/12/10/light-table-0-8-0/
> CHANGED: We have switched to Electron from NW.js
とのこと。

933 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 19:12:25.41 ID:+4+8NPVu.net]
新人に関数型言語と定数性について教える羽目になったんだけど、Clojureだとどんな入り口があるかな?

;;; つかなんで自分なんだと言う疑問もつきまとうわけであるが

934 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 20:57:36.20 ID:EJm55LSE.net]
そもそも関数型って切り口そのものがどうなんだって感じだけど
いわゆる関数型ならHaskellの方がいいんじゃない?
Lisp未経験者だと関数型要素とLisp要素を両方理解しなきゃいけないし



935 名前:デフォルトの名無しさん mailto:sage [2015/12/27(日) 23:45:07.88 ID:ZrvCKGgP.net]
HaskellだとどうしてもMonadの話になっちゃうし、関数型どうこうならOCamlの方が・・・。

936 名前:デフォルトの名無しさん mailto:sage [2015/12/28(月) 23:24:55.87 ID:eYzd465J.net]
www.amazon.co.jp/gp/aw/d/4781912850/
www.amazon.co.jp/gp/aw/d/4781911609/

ocamlだと簡潔な日本語の本もあるのも
imutableなlispで教えようとするとracketかclojureあたりになってくるが、日本語で関数型を教えるとなると、資料作らないと注力し難いかも。

937 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 00:32:05.46 ID:NgHVQYk6.net]
>>915-917
ありがとう
Ocamlは確かに良いかもしれないですね、自分も再学習してみます。

実は自分等が使ってるのがClojureなんです(自分は下っ端の上の方、んでもってそのさらに下に新人が来るわけです)
でもって自分は好きこそ物の上手なれというかLisp系言語は以前から遊んでいたせいで違和感無くClojureのプロジェクトこなせてしまい、
java,とかP言語とかしか知らない新人に教えるのに必要な切り口やら入り口やらがまったくわからんのです。(この辺が自分が担当になるのに不適切だとへこむ理由)

情報小出しになってごめんなさい、新人が入ってくるのは四月からなのでまだ時間はあるから自分も書籍よみあさって推薦図書とかも探している真っ最中
かつパニック状態でして、自分の書き込みみて何書いてんだこいつとか思うほどです、ほんとごめん。

938 名前:デフォルトの名無しさん [2015/12/29(火) 14:51:23.64 ID:/YFVsl6a.net]
>>918
相手が分からないうちにどう教えるかばかり考えてもな
今できることとしては、自分でJavaなりで一つ実用になるプログラムを書いて、同じものをClojureで書いてみるんだね
何が違いか、そもそも自分が分かっているのかが自覚できるだろ

939 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 16:25:30.83 ID:PvAiYDv0.net]
devopsの話からはじめるなら、達人プログラマーや最近の本などやってもいい。
clojure関連しては、repl、開発環境、leiningenもあるけど、
ボキャブラリー増やしていくのはkoansとかでも。
clojurekoans.com/
ここら辺の機能一覧は見た方がいいし、
clojure.org/documentation
実際の開発で、javaやjavaの相互が必要ならそこらへん分かるといいし、
clojure.org/java_interop
あとは、ライブラリやテストの話となるかな。

本でやるなら、プログラミングclojureが古くなってるので、英語の入門書も一冊あった方がいいかもね。
shop.oreilly.com/product/0636920034292.do
https://www.manning.com/books/the-joy-of-clojure-second-edition
shop.oreilly.com/product/0636920013754.do

940 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 16:31:00.36 ID:PvAiYDv0.net]
前もって会社から人数分の教科書代出してもらったほうがいいと思うが、会社に置いとくか配るかは、なんとも言えず。

941 名前:デフォルトの名無しさん mailto:sage [2016/01/02(土) 15:49:24.29 ID:X0SWm6Bi.net]
関係ないが902の言う定数性がどういう意味なのか気になってるんだけど、誰か教えてくれ。
ググっても分からん。イミュータブル??

942 名前:デフォルトの名無しさん mailto:sage [2016/01/03(日) 18:33:46.58 ID:ff7EiwBI.net]
オブジェクト志向から関数型に来るには
エリック・エヴァンスのドメイン駆動設計がいいんじゃないかな
この本を最近読み返したんだけど、オブジェクト志向と関数志向の
バランスについてうまく書かれている気がする

エリックとしてはオブジェクト志向啓蒙の書として書いたんだろうけど
あれで書かれていることは関数型のほうが自然に実装できる気がする
問題は文章が冗長なところと、アジャイル特有の扱いにくい言語が出てくるところだな
あと初心者が読む本でもない気がするからやっぱ微妙かな

943 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 00:32:59.75 ID:BGdG54RB.net]
あれはオブジェクト指向で満たすべき不変性を素晴らしくよく説明した良著だと思う
関数型言語のほうが実装しやすいとは言い切れないが設計に関数型のエッセンスをいかに取り込めばよいかについては白眉であった

944 名前:デフォルトの名無しさん mailto:sage [2016/01/04(月) 14:59:48.28 ID:29eVGrdT.net]
やべぇドメイン駆動とか腐敗防止層とイーガーとレイジー位しか覚えてないわ。



945 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 05:19:43.68 ID:6GG4/tqm.net]
>>922
たぶんイミュータブルの事だと思われ
>>923,912
Object指向な頭でドメイン駆動読まずにImmutableなコードにしようとしてしまうとコピーコストが高いコードができちゃうよね。
Clojureのlist,vector,mapってCloneじゃなく変化差分の生成しているところとかを強調して記述してる書籍ってないのかな?(コード読めってのは無しで)

946 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 07:11:26.90 ID:f4fgmR8a.net]
コード読まないならClojureに限定せず普通に関数型データ構造の説明を読めばいいのでは。

947 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 07:29:17.35 ID:6GG4/tqm.net]
>>927
コード読まずにってのはプログラミング言語に依存しない解説って意味で使ったんで、誤解させたみたいでスマン
できれば良書(英語でも日本語でも)示唆してくれるとうれしいんだけどお勧めってある?

948 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 14:07:46.00 ID:QO+J3mMy.net]
コアチームで書いてた初期のclojure解説スライドだと、hmatの説明はよく見かけたね。

richのスライドがイマイチ探せず。
集まってるところってあったっけ?
https://www.slideshare.net/adorepump/clojure-an-introduction-for-java-programmers
https://github.com/stuarthalloway/clojure-presentations/downloads

949 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 14:42:18.83 ID:+GXK6sa1.net]
実際にhashmap操作してるところの詳しい図説とかあった気がするけど、見つからず。

改良版が見つかったみたいで、ちょっと話題になってる。
blog.acolyer.org/2015/11/27/hamt/
dev.clojure.org/display/design/Release.zFuture

950 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 21:40:29.86 ID:fHiB8twj.net]
効率的な不変データ型構造はideal hash treeの論文とかを参考にしたんじゃないっけ
名前からするにこれはマップの実装だと思う

vectorについても確か別の論文を参照していたはずだが、名前を忘れた

951 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 21:41:51.79 ID:fHiB8twj.net]
あとどっかでmapは二分平衡木で実装されてるってのも見た気がするな

952 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 00:25:20.65 ID:5kcmX1Qf.net]
>>928
「Scala関数型デザイン&プログラミング」っていう
オブジェクト指向言語のScalaで関数型っぽい事にチャレンジしてみましたって感じの本がオススメ。
始めにScala言語の記法を解説しながら単方向連結リストを実装、
その後無駄な計算をしない為の遅延リストの作り方や並列処理構造・コンビネータなどを作った上で、
それらのデータ構造をさらに抽象化した関手などを実装して行くって流れなので、Scalaを知らなくても全然読めます。

ただ、この本の少し先をScalaでやろうとするとScalaの表現力の無さに絶望しますが。。。

953 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 10:24:33.73 ID:dV4P966A.net]
上のスライドだと32-34ページに
www.slideshare.net/adorepump/clojure-an-introduction-for-java-programmers

32. Persistent Data Structures
• Immutable, + old version of the collection is still available after 'changes'
• Collection maintains its performance guarantees for most operations
• Therefore new versions are not full copies
• All Clojure data structures persistent
• Hash map and vector both based upon array mapped hash tries (Bagwell)
• Sorted map is red-black tree
33. Structural Sharing
• Key to efficient ‘copies’ and therefore persistence
• Everything is final so no chance of interference
• Thread safe
• Iteration safe
34. Path Copying

954 名前:デフォルトの名無しさん mailto:sage [2016/01/09(土) 22:04:08.48 ID:zxrZwk9x.net]
LightTableがErectron化して大分いい感じになってるな
Atomより使いやすい



955 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 00:36:20.46 ID:VkRRM6DP.net]
勝手にerectしてもらっちゃ困りますけどね

956 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 11:40:10.04 ID:NQXxqmGZ.net]
元々 Lisp + immutable みたいな宣伝されるからコンスセルを想像するんじゃないかな

957 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 11:43:57.30 ID:NQXxqmGZ.net]
言葉足りなかった。説明がなくてもコンスセルを連想する、の意味

958 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 15:50:53.02 ID:b/h+vel4.net]
HikariCPのロゴ見てると何とも言えない気分になるな
ネイティブが日本人の英語名ライブラリ見るときもこんな気分なのかね

959 名前:デフォルトの名無しさん mailto:sage [2016/01/25(月) 23:04:08.20 ID:uLOkekXP.net]
typed clojure や plumatic schema はどんなもんですか?
型付きlispって話題にならないのですか?

960 名前:デフォルトの名無しさん [2016/01/26(火) 01:07:42.01 ID:4P/8QI2U.net]
ちゃんと計測した上で、必要ならtype hintつけるし
型チェックが必要ならそうするまで

961 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 01:12:37.06 ID:fLwBjkWJ.net]
schemaは、xml schemaみたいなもんかなと。
データ(ドキュメント?)のバリデーション用途で、
用途的にもジェネリックではなく固定されるので型アノテーションもやってくれる。

lispの型推論とかは、shenとかtyped racket、typed clojureとかあるけど、ジェネリックみたいなの含むため、静的型付けするわけではなく、高速化はしない。
あと、コアライブラリに対して、typescriptのd.tsファイルみたいなのがある訳ではないので、(あってもどこまでできるかというのはあるが、)範囲は狭いはず。


clojureみたい(lispみたい?)に、動的言語に型アノテーションつけるのは、ちょうど流行ってきてるみたい。

962 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 16:34:50.32 ID:Y3ed6r+r.net]
ClojureでVPSにWebサービスを立てるときって
uberjarしたjarをVPS側でjava -jarして
nginxで80を3000(jarが起動するPort)にリバースするだけでいいの?

963 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 16:44:07.32 ID:nOSDiMZQ.net]
>>943
問題ないよ
awsでELBも使うならポート番号差し替えるだけで良いからnginxすらいらない(staticファイルあるだろうからそっちをどうにかするって事の方がデプロイ時にめんどくさいかもね)

964 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 00:13:56.24 ID:3RvzDSbC.net]
herokuもそんな感じであげたりする。
portが変わったりするので、昔はProcfileで環境変数指定したりした。

いまは、lein herokuってのがあるんだね。
https://devcenter.heroku.com/articles/deploying-clojure-applications-with-the-heroku-leiningen-plugin



965 名前:デフォルトの名無しさん [2016/01/29(金) 22:51:01.29 ID:YK9TzO4/.net]
>>933
ちなみにどういうところが表現力低いと感じる?>scala

966 名前:デフォルトの名無しさん [2016/01/30(土) 02:25:24.66 ID:MfxV3bNM.net]
land of lispのコードをclojureで書くってブログのコード消えていた。
前はあった。
あれ参考にしながらcommon lispとclojure同時に勉強しようと思っていたから残念。

967 名前:電波いっぱい mailto:sage [2016/02/01(月) 06:48:44.66 ID:iITfW2yZ.net]
>>947

CLとclojureを両方同時に勉強するのは大変だと思う。
基本的な考え方が、かなり違うから。

968 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 10:21:51.93 ID:viFYU2Ui.net]
>>944
thx
日本語の情報だとHerokuばっかでVPSの場合がいまいち確証が持てなかったんで助かった

969 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 05:02:05.41 ID:ePEtCP+F.net]
>>948
935とは別人だけど、そんなに違うもんなの?
まだ本当に触りしかやってないけど、関数名とかの違いだけで、概念とかにそこまでの差は感じられないな

970 名前:デフォルトの名無しさん [2016/02/02(火) 10:33:02.57 ID:F+BpmlFQ.net]
ClojureはLisp-1、データが不変、何でも遅延評価なところで書き方が変わる

↓でちゃんとまとめてくださってる
https://sites.google.com/site/clojurejapanesedocumentation/home/reference/lisps

971 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:34:14.57 ID:2heLfAb0.net]
何でもは遅延しないわよ。遅延するものだけ。

972 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:40:48.46 ID:u0ZREARr.net]
こういうのは同時にやる俺凄くねってだけだからなあ

973 名前:電波いっぱい mailto:sage [2016/02/02(火) 21:25:09.45 ID:JPo4W//F.net]
まとめに書いてあることって、まあ、その通りと思うけど、CLって真にマルチパラダイムな言語であるのに対して、clojureは、関数型言語であることが一番の違いだと思う。

だから、clojureらしい書き方というのはあるけど、CLらしいってのは無くて
C使う人かこう書きたいと思う方法でちゃんと書くことができる。

974 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 22:56:43.66 ID:9WMu+hA1.net]
clojureの作者もこんな感じの事いってる。
d.hatena.ne.jp/katzchang/touch/20120211/p1
lispから引き継いだところと、捨てたところがあるので、litle schemerとかの本から持ってきてもうまく実装出来ない場合もある。



975 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 08:45:20.39 ID:0n3FRGss.net]
ClojureとCL両方やると、CLがいかによく考えられた言語であることが分かる。
Clojureは、細かい挙動が曖昧な部分やどこにも記されてないコアチームの暗黙的な知識が多いように思う。
CLは、大抵議論が尽くされていて、仕様として定まっていて、仕様関連資料を読めばよい。

Clojureは、CLに比べて、シンプルで、簡単であるように思っていて、
JavaやJavaScriptが競合となるWebシステム、Webアプリ領域では、開発環境やライブラリの充実度から見ても無双状態かもしれない。

ただ、開発環境含めてリソース食いで、プログラムの起動時間が長すぎて一部クライアントアプリには向かないし、ハードの性能を絞り出すのにも不向き。

976 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 12:49:32.34 ID:fYtnlKxz.net]
いや、でもCLは混乱するよ。初学者としては。C++並に複雑に見える

977 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 16:49:53.79 ID:0n3FRGss.net]
「仕様として定まってないので混乱する」vs「仕様を知らないから混乱する」による見え方の違いかもしれませんね。
Clojureは前者、CLは後者。

978 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 16:52:53.80 ID:kM+NK6dn.net]
play-clj、または、生libGDXでClojureによるクロスプラットフォームなモバイルアプリ開発をされた方いますか?
特に、起動時間やリソース使用量含めたパフォーマンスがどうなのか気になるところです。
play-cljは、iOSサポートは現在やめてしまったようなので、生libGDXを使うことになるかもしれませんが。

979 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:26:47.10 ID:4QXOAnIu.net]
RoboVMが、有償ライセンスないと使えなくなったのが原因かなと。
libGDXも影響は受けてて今後RoboVMの有償ライセンスが必要になってくる。
https://github.com/libgdx/libgdx/wiki/Setting-up-your-Development-Environment-%28Eclipse%2C-Intellij-IDEA%2C-NetBeans%29

BugVMという公開コードからポートしたプロジェクトもあるが、今後新しいiOSに対応できるのかなど状況がわからない。
bugvm.com/

あと、RoboVMがlibGDXのスポンサーになってるのもあるので、
libGDXのBugVM対応あるとしても、BugVM側でポートして対応することになるかなと。

980 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 01:03:23.32 ID:4QXOAnIu.net]
いちおうbugvmにbinding入れてるっぽい。
https://github.com/bugvm/bugvm/tree/master/libgdx

981 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 01:11:34.22 ID:4QXOAnIu.net]
centosみたいに有償が成り立った上での存続にはなるんだろうけど、
作業自体は大変そうなので、継続できるように何か援助したいが、どんな状況なんだろうね。

982 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 04:05:41.80 ID:afxS0p+G.net]
BugVM初めて聞きました。情報ありがとうございます。

RoboVMのライセンスの件、リンク先を見る限り、必ずしも有料ではなくて、
・3人以下のチームの場合、無料でインディーライセンスキー発行
・3人より大きいチームの場合、問い合わせが必要で、有名ゲームスタジオは有料になるが、そうではない場合、人数関係なく無料
・商用可
・ライセンスキーは無期限有効

また、play-cljがiOSサポートをやめてしまったのは、lein-fruitが動かなくなったのと、実機での動作に問題がありそうと説明してますね。
https://github.com/oakes/play-clj/releases

983 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 04:43:54.31 ID:afxS0p+G.net]
あと、ClojureScriptになりますが、Cocos2D-JSによるJSとネイティブコードのハイブリッドアプリという選択肢もありそうですね。
主にCocos2D-html5を使ってブラウザ上で開発をし、リリースの際には、Cocos2D-x JSBを使ってハイブリッド化。

984 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:32:38.50 ID:8pvMtac5.net]
なるほど、RoboVMはインディーズライセンス発行できるんですね。

robovmでiOS9,xcode7への対応と諸々が秋頃にあったので、それ以降に作者さんがメンテしてないか、対応出来なかったかのどちらかも。



985 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:34:13.83 ID:8pvMtac5.net]
953の部分は、lein-fruitが動かない理由についての話です。

986 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:43:24.24 ID:8pvMtac5.net]
clojureとは直接関係ないのですが、
javafxportsの方は年初にメンテしてて動くようになってました。

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

試した感じだとiosのアプリ証明書まわりの動きが、RoboVM直と違いちょっとおかしそうでしたが。

987 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:51:41.81 ID:8pvMtac5.net]
別ブランチ切って、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までしかあげてないので、
試すには、本家とはべつにローカルか別名のリポジトリ作成してやる必要がありますね。

988 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 15:20:13.39 ID:fZyGkNbq.net]
いろいろ情報ありがとうございます。

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

989 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 17:16:41.79 ID:/EKT/6se.net]
EmacsでlispにどっぷりはまってClojureに辿り着いたよ
・調べたところ結構方言が強いみたいだけどみんな違和感無いのかな?better lispになってるかな?
・Emacsでの編集は快適かな?
まだ使ってないからこの辺りが知りたいところだけど、手の空いた時にでも
教えてもらえると助かります。

990 名前:デフォルトの名無しさん mailto:sage [2016/02/19(金) 21:29:40.96 ID:0R2jEsLy.net]
>>970
emacs+ciderで幸せ
break pointはよ(昔はswank-clojureでできたのに)

991 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 15:11:04.21 ID:NsOi1z3Q.net]
CIDERにもbreakpointあるよ。

Clojureは良くも悪くも、より抽象化されたLispという印象かな。
State of Clojure 2015によると、Clojure界で一番人気あるのがEmacs+CIDER(約45%)で、次がIntelliJ+Cursive(約25%)。
どちらも業務に使えるし、快適ですね。

992 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 17:24:53.45 ID:JX9OE3S7.net]
>>972
え?マジか、defaultのkeyboard bind何になってる?(キーバインド無し?)
swank-clojure -> ritz でお世話になった後ciderになってbreak関係無くなってションボリしてるんでどのバージョンから使えるかもプリーズ

updateとかの後に.elファイルまで読まないから全然気がつけてないんでマジでお願い。

993 名前:デフォルトの名無しさん mailto:sage [2016/02/20(土) 20:08:32.16 ID:SJ1YLAR4.net]
https://github.com/clojure-emacs/cider/blob/master/README.md#debugging

ciderかは忘れたけど、ns変えてやらないとブレークしないという話を聞いたことがある。

994 名前:電波いっぱい mailto:sage [2016/02/20(土) 23:37:36.42 ID:bGD6QKVk.net]
>>970
CommonLispが好きでずっと使ってたのにClojure鞍替えした者ですが、Clojureは全てのひとにとってのbetter lispではありません。見方によっては全く違う言語とも言えます。
ですが、LISPというのは懐の広い言語ですので、ClojureもLISPです。関数型に振られていて、javaの資産が使えて、活発なコミュニティーがあるというのが特徴かな。

僕にとってはまさにbetter lispだったので、メインの言語として使ってます。



995 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 01:08:40.47 ID:/soU/W5W.net]
設計の意図を探してきて読むと違いに対する違和感は減るかも。
https://sites.google.com/site/clojurejapanesedocumentation/home/reference/lisps
www.geidai.ac.jp/~marui/clojure/rationale/

上の日本語訳は結構前かな。よく使われる機能は変わってる場合もある。

996 名前:958 mailto:sage [2016/02/22(月) 17:10:14.60 ID:OQxBKkBP.net]
>>971-976
遅レスですまんが、みんなciderとか色々教えてくれてどうもありがとう
その辺りから色々調べてみると、意外と業務で使ってるところがあってびっくりした
JDK使ってるってのが大きいと思うけど、この時代にLispが選択されるというのも凄い事だ

997 名前:デフォルトの名無しさん mailto:sage [2016/03/01(火) 13:00:53.78 ID:Ni2JKZi6.net]
GSOC落ちてて草

998 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 22:03:06.43 ID:8SgHWKfM.net]
日々の生活に疲れました
救いと癒しが欲しいのでclojureを学ぼうと思います
よろしくお願いいたします

999 名前:デフォルトの名無しさん mailto:sage [2016/04/07(木) 03:34:57.11 ID:69hNyYMv.net]
阿澄佳奈のLispに対抗して
新田恵海と高部あいでclojureというユニットはどうか?

1000 名前:デフォルトの名無しさん mailto:sage [2016/04/07(木) 23:26:24.63 ID:TikNVi9d.net]
石原絵理子もまぜてあげて

1001 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 19:20:05.21 ID:/2z8tz0e.net]
少しお尋ねしたいことがあります。

(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を使わないとなるとこれしかないのかな

1002 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 00:55:34.88 ID: ]
[ここ壊れてます]

1003 名前:suuESVM3.net mailto: >>982
頭にnilがn個続くシーケンスをお供に連れて行くとか?
(into (range 5) (repeat 3 nil)) -> (nil,nil,nil,0,1,2,3,4)
[]
[ここ壊れてます]

1004 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 02:01:38.74 ID:+C690be2.net]
勉強中のおいらには泥臭い方法しか思いつかなかった

(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))
))
)



1005 名前:電波いっぱい mailto:sage [2016/04/11(月) 20:43:31.37 ID:+bjPPau5e]
>>982

rの中にあるものからn個取るのではだめ?

1006 名前:デフォルトの名無しさん [2016/04/13(水) 07:01:24.27 ID:CWmrvo3n.net]
最近clojurescriptに興味があって質問です。
webアプリ+サーバを作成するためのleiningenのテンプレートは
見つかるんですが、単純にnode.js上のスクリプトとして動作させる用の
leinigenの設定をしたテンプレートがmies-nodeくらいで
それも既にメンテされてないようです。
こういう用途で使えるテンプレートを知ってる方いますか?

1007 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 01:18:05.19 ID:OuJbyPuf.net]
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

1008 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 01:21:20.28 ID:OuJbyPuf.net]
一番上のがそうだけど、テンプレートにはなってなかったね。すまぬ。

1009 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 01:40:05.59 ID:OuJbyPuf.net]
コンパイルの必要ないけど、これはosxだけ、かつ、ブラウザ向けエンジン使ってる
planck-repl.org

1010 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 13:25:13.39 ID:uVkdPs+4.net]
色々と情報ありがとう。
前にnodeを少しいじったんでclojurescriptだとどうなるかと思ったんだが…
しかし、clojure自体初心者の自分ではハマりそうなので暫くはJVM上だけにしようと思います。

とりあえずQuilが面白そうなのでやってみる。

1011 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 01:21:05.74 ID:0VKAWbkk.net]
4clojureなかなか面白いね

1012 名前:デフォルトの名無しさん [2016/05/01(日) 12:05:06.37 ID:tKi6j9CT.net]
匿名通信(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

1013 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 21:11:02.59 ID:K+NNsali.net]
lazy-seqなんてどうせ大したことないんだろと思って
def projectに :jvm-opts ["-Xmx1G"]としてmemory size 1GBの制限をかけた後に
stackoverflowにある lazy-file-linesに12GBくらいのデータ食わせたら、マジで行数カウントしやがった。

夢が広がるな

1014 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 21:50:12.09 ID:x44Ry1He.net]
遅延評価は、処理中に強制終了したときのリソースの状態が気になってしょうがない



1015 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 23:06:11.61 ID:K+NNsali.net]
そう言われたら俺も気になってきたんだが、

12GB中の6GBくらい読みだした時にとめたらどうなっちゃうんだろう?

1016 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 11:12:58.21 ID:D79M6+1d.net]
>>993
でそいつの行数はlonglongで足りたのか?

1017 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 12:41:25.79 ID:+he7G1JM.net]
One Million Clicks per Minute with Kafka and Clojure - Devon Peticolas
https://youtu.be/VC_MTD68erY

上のやつは今年のclojure/westの発表なんだけど、ストリーム処理で遅延評価にならないようにするにはという話があった。

1018 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 13:43:51.64 ID:l0JwSRjw.net]
>>996
ClojureならBigDecimalに移行するだけだと思うが?

1019 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 13:47:11.50 ID:l0JwSRjw.net]
>>996
あと12GBのテキストデータの行数がlonglong超える訳が無いと思うぞ。

1020 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 22:24:06.08 ID:6f0pONvw.net]
>>997
いろいろ参考になったわ
KafkaStreamはlazy sequenceじゃないのかな

あとその動画の指摘の通りlazy seqは確かに遅いわ
一個ずつ現実化して処理していくというのは特にFile I/OやNetwork I/Oに絡むと遅いんだろうな
partitionの使い方とか、asyncのonto-chanの使い道とかpriority mapを用いたアルゴリズムの改善とか濃厚なプレゼンだった

1021 名前:デフォルトの名無しさん [2016/11/28(月) 22:32:01.86 ID:9f32phBy.net]
オリジナルの型をcore.matrixに乗せたいのですが、何を定義したらmatrixライブラリにある和や積等の関数を適用可能になるのでしょうか?

1022 名前:デフォルトの名無しさん mailto:sage [2016/11/29(火) 09:30:24.76 ID:1gz1M+ng.net]
このあたりに書いてあったかも
https://github.com/mikera/core.matrix/wiki/Implementation-Guide

1023 名前:デフォルトの名無しさん [2016/12/18(日) 17:03:58.39 ID:8F2gNr16.net]
Clojureにも代数的データ型があればなあ

1024 名前:デフォルトの名無しさん [2016/12/26(月) 21:13:07.45 ID:XJppqmkm.net]
マップがあるで(ゲス笑い)



1025 名前:デフォルトの名無しさん [2016/12/26(月) 21:15:52.87 ID:aoxifvbm.net]
Clojureのマップの柔軟さ書きやすさは好きなんだけど、エラー検出力低くないだろうか?

1026 名前:デフォルトの名無しさん [2016/12/26(月) 21:30:49.56 ID:XJppqmkm.net]
ぶっちゃけクソ低い。
TypeScriptたまに触ってると特に感じるわ。
だから対策としてスキーマバリデーションとかが欲しいわけではなくて、リアルタイムチェックや補完の方も欲しい。
あと (register-handler :keyword (fn ...)) 的なのも :keyword をtypoしたりしてムキーってなる。

1027 名前:デフォルトの名無しさん [2016/12/26(月) 21:44:39.57 ID:aoxifvbm.net]
LightTableあかんか……

1028 名前:デフォルトの名無しさん [2016/12/27(火) 14:53:40.90 ID:ov9/Tp6R.net]
次スレ無いけど埋めとくか

1029 名前:デフォルトの名無しさん mailto:sage [2016/12/28(水) 12:12:28.60 ID:0ISf0nRp.net]
P言語のIDEだと、アノテーションとメソッドキャッシュで編集時支援ってのが多いかな。
既存のシンボルを集めておく仕組みはあまり聞いたことない気がする。
よく使う単語は補完してくれるので、それか定義してるところからのコピペで何とかしてる。

1030 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 18:40:43.75 ID:uHeuKaUg.net]
次スレ
【Lisp】プログラミング言語 Clojure #4【JVM】
echo.2ch.net/test/read.cgi/tech/1483498849/

1031 名前:デフォルトの名無しさん [2017/01/04(水) 23:12:31.39 ID:VMJ7nozd.net]
>>1010
:よくやった

1032 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 23:13:43.28 ID:J+uePkPh.net]
おつ

1033 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 23:14:06.89 ID:hkcnZMZu.net]
次スレ
【Lisp】プログラミング言語 Clojure #4【JVM】
echo.2ch.net/test/read.cgi/tech/1483498849/

1034 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<278KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef