5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  
レス数が950を超えています。1000を超えると表示できなくなるよ。

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

655 :電波いっぱい:2014/12/02(火) 18:22:53.48 ID:mRxW3cCO
>>654
パッケージのリボジトリにmarmaladeを追加しないとでてこないよ。

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

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

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

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

(expand-file-name "~/")

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

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

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

とすればいいはず。

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

659 ::2014/12/02(火) 23:34:45.34 ID:es1g8IZo
>>657>>658
教えてくれてありがとうございます、、
たすかります。

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

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

660 :デフォルトの名無しさん:2014/12/02(火) 23:54:23.65 ID:C370zj97
>>659
sider じゃなくて cider だよ!w

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

662 :電波いっぱい:2014/12/03(水) 14:12:04.41 ID:xmz4UdFc
>>659
>>661
init.elを作っただけだと読んでないから読み込ませる。emacsを再起動するのが楽。

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

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

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

664 ::2014/12/03(水) 19:57:13.95 ID:lWmi25JI
>>660>>661>>662
おー、それが、何度試してみても、できないです、、
siderじゃなくciderでやっても、
package-list-packagesでリストを探してみても、できない。

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

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

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

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

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

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

668 ::2014/12/04(木) 02:06:25.10 ID:EifX8RrY
>>655
>>656
>>667
うわー、多分できた、
いつもはinit.elのところ開いたら一度しめてそれからターミナルでemacsとうってインストールしようとしていた。
でも今回はinit.elを開いたままで、
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "http://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を読み込んでいるみたいになったよ、、

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

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

671 ::2014/12/04(木) 19:55:04.23 ID:ujZTdShy
あ、C-c M-j、、

672 :電波いっぱい:2014/12/04(木) 21:50:43.67 ID:gxSGbnnh
>>668

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

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

673 ::2014/12/05(金) 19:26:25.51 ID:x1r9cuUq
>>672

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

674 ::2014/12/06(土) 23:49:38.91 ID:i3Rn7LUz
>>650
純文学という感じでしょうか、、

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

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

677 :デフォルトの名無しさん:2014/12/08(月) 19:24:27.66 ID:F4bca2XM
よし、体売ってこい


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

678 ::2014/12/08(月) 20:56:36.65 ID:5xrTpuJG
>>677
おー、
筋トレをお金に変換、、

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

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

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

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

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

ついでにさらに質問で。
下記だと問題なく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が使えるようなシーケンスを作成する場合はどうしたらいいんでしょうか?

684 :デフォルトの名無しさん:2015/01/03(土) 17:14:44.67 ID:VHcKNT7s
vec使ったら

685 :デフォルトの名無しさん:2015/01/03(土) 22:35:36.09 ID:xxy0Tk3f
>>683
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 ...
にしないと駄目

686 :電波いっぱい:2015/01/07(水) 13:25:19.06 ID:RbdNG2kP
>>683
シーケンスにassocを使いたい理由がわからない。
多分、方法が間違ってる。

687 :デフォルトの名無しさん:2015/01/23(金) 15:50:23.04 ID:q8ayYuMd
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リクエストされる方が非道いと言う事なんだろうか?

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

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

690 :デフォルトの名無しさん:2015/01/24(土) 23:22:54.22 ID:AxJ1ZwJl
難読化なんて意味ない事しない。

691 :デフォルトの名無しさん:2015/01/25(日) 05:49:08.67 ID:IAlWKeKG
>>687
キーワードのテーブルはWeakReference使ってるからGCされるで

692 :デフォルトの名無しさん:2015/01/25(日) 05:58:35.91 ID:ITyso3aB
>>689
なんだ、こいつ
精神病?

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

694 :デフォルトの名無しさん:2015/01/25(日) 08:09:10.77 ID:SZuCIDm7
>>693
いや別に必要無いけど。

695 :デフォルトの名無しさん:2015/01/25(日) 19:15:33.32 ID:/ILbZFHt
>>690
ソースコードを納品するときには難読化してる

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ここ嗤うところですよね

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

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

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

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

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

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

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

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

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

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

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

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

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

717 :デフォルトの名無しさん:2015/02/17(火) 10:08:49.06 ID:HzudLjaJ
Boot使ってる人いる?

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

719 :デフォルトの名無しさん:2015/02/17(火) 17:37:41.92 ID:TUaKLPcf
>>718>>717のBootの件ね

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

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

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

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

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

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

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

726 :デフォルトの名無しさん:2015/04/17(金) 17:03:02.34 ID:ZCMgfOu6
>>724
desktopとandroidはjavaのJVM
IOSはjava2objcがあるので、Clojureでいける。

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

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

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

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

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

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

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

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

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

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

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

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

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

738 :デフォルトの名無しさん:2015/06/08(月) 16:22:10.16 ID:rJB8iCDI
>>737
おまいが病院逝けω

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

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

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

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

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

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

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

746 :デフォルトの名無しさん:2015/06/09(火) 11:01:38.41 ID:zYTkc1Sl
http://yogthos.net/posts/2015-04-14-Web-Development-with-Clojure-2.html
今夏でしょ?

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

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

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

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

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

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

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

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

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

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

755 :デフォルトの名無しさん:2015/06/20(土) 09:44:43.51 ID:A64/1XTV
普段はScheme使ってるのでLisp全般には慣れてるけど
Javaはよくわからない
そんな自分にお勧めのClojure入門書ってありませんか?

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

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

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

Clojure 1.3-
Clojure Programming (2012)

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

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

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

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

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

762 :デフォルトの名無しさん:2015/06/21(日) 13:43:56.73 ID:hAOMkAbd
>>761
おれもそう思った

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

764 :デフォルトの名無しさん:2015/06/22(月) 09:29:37.82 ID:EoRNx9lp
>>763
Leiningenは使ってるの?

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

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

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

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

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

769 :デフォルトの名無しさん:2015/06/25(木) 09:42:25.02 ID:ngztl1PG
抜かずの3発かなぁ

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

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

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

772 :デフォルトの名無しさん:2015/06/26(金) 21:10:57.38 ID:Ok1luf1O
>>768
scheme資産の流用をしたい

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

774 :デフォルトの名無しさん:2015/06/27(土) 15:35:21.21 ID:1I5SLscW
>>773
マクロやね
(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)
こんな風になる

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

775 :デフォルトの名無しさん:2015/06/27(土) 16:07:08.70 ID:O5DXQOTX
>>773
これ覚えておくと超便利だぞ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

787 :デフォルトの名無しさん:2015/07/01(水) 01:16:58.15 ID:dlscpTQ4
>>786
ん?文字列だと思ったんだけど、なぜに変数名?

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

789 :デフォルトの名無しさん:2015/07/01(水) 12:07:43.91 ID:z/KDpVAR
:日本(半角スペース)料理

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

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

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

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

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

795 :デフォルトの名無しさん:2015/07/04(土) 10:10:15.10 ID:ThPkJ/+I
>>794
移植性の高い低いって何で決まんの?

796 :デフォルトの名無しさん:2015/07/04(土) 10:31:13.07 ID:vGUPxdrf
そりゃJVMと一蓮托生よ

797 :デフォルトの名無しさん:2015/07/04(土) 11:27:28.07 ID:1j8Z8n9B
理想としては

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

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

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

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

いままでの経験上、一番移植性が高いのはC言語
Javaは…

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

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

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

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

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

804 :デフォルトの名無しさん:2015/07/04(土) 22:44:01.81 ID:0/RKLMEi
>>802
C はAutoConfがー
RubyはGemがー
他多数

ですが?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

の最新バージョンで動く

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

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

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

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

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

なんか間違ってる?

819 :デフォルトの名無しさん:2015/07/05(日) 13:20:49.21 ID:18+ya5CF
うん

820 :デフォルトの名無しさん:2015/07/05(日) 23:24:23.30 ID:W3uesJYK
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/以下に放り込むのが推奨スタイル?

821 :デフォルトの名無しさん:2015/07/05(日) 23:57:33.00 ID:EDD7h1SP
>>820
このあたりの設定例読んで、
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

822 :電波いっぱい:2015/07/06(月) 20:04:01.75 ID:z0yxLIYt
>>820

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

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

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

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

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

826 :デフォルトの名無しさん:2015/07/16(木) 23:32:45.55 ID:UiQdF58b
>>825
好きにすればいい

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

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

828 :デフォルトの名無しさん:2015/07/18(土) 01:14:33.74 ID:XMhN9NpT
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

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

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

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

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

833 :デフォルトの名無しさん:2015/07/27(月) 00:37:08.41 ID:SYhC4jQ3
>>832
JNIでも使ってんの?

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

835 :デフォルトの名無しさん:2015/07/28(火) 04:17:18.39 ID:JdT7Ezwf
途中で送信してしまった

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

837 :デフォルトの名無しさん:2015/08/01(土) 06:13:25.83 ID:8dgAmKAh
>>836
clojure-modeとciderを入れるんだ

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

project/src
project/java

にわけるとか?

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

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

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

でも最近Elixirに浮気気味

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

843 :デフォルトの名無しさん:2015/08/08(土) 16:15:59.58 ID:kkkSL9bh
>>842
cons はあるし car cdr は first rest だけどダメなのかい?

844 :デフォルトの名無しさん:2015/08/15(土) 01:40:55.03 ID:90IR3onH
ドットセルのことでは

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

846 :デフォルトの名無しさん:2015/08/17(月) 21:31:17.48 ID:3XTzV4r5
car, cdr は川下りの如し。

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

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

849 :デフォルトの名無しさん:2015/08/24(月) 16:29:58.64 ID:SHTnF8RO
>>848
いやその通りなんだが。

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

851 :デフォルトの名無しさん:2015/08/24(月) 19:37:06.37 ID:zrEdzFeo
いやそうでもない

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

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

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

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

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

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

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

858 :デフォルトの名無しさん:2015/09/07(月) 15:02:38.08 ID:XFcMXbyl
SICPのClojure版出たな

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

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

861 :電波いっぱい:2015/09/07(月) 20:39:43.28 ID:PwlJ1i8i
>>858

どこ?

862 :デフォルトの名無しさん:2015/09/09(水) 23:01:39.56 ID:/2hOGL1j
http://www.sicpdistilled.com/section/welcome
まだ途中かな。
SICPをclojureに逐一書き換えたという訳ではなく、SICPの一部内容をclojureで説明したもの。

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

そうした意味合いでClojure(とLisp)には感謝している

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

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

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

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

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

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

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

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

882 :デフォルトの名無しさん:2015/11/02(月) 14:43:06.93 ID:kfXAgSVx
x F#
o Elixir
ここ大事

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

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

スパコンというなら桁が違うのではないか。店で買うものでもなかろう。
その金額では人に作ってもらうわけにいかないだろうから、自作かな。

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

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

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

888 :デフォルトの名無しさん:2015/11/04(水) 22:54:55.98 ID:8s3mVvwI
>>881
AWSとか使えばいいのかも。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

899 :デフォルトの名無しさん:2015/12/11(金) 20:51:07.58 ID:vPkQdQym
>>892

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

900 :デフォルトの名無しさん:2015/12/15(火) 17:10:27.31 ID:QFBdnAFu
LightTableいつの間にかElectronになってる

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

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

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

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

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

905 :デフォルトの名無しさん:2015/12/28(月) 23:24:55.87 ID:eYzd465J
http://www.amazon.co.jp/gp/aw/d/4781912850/
http://www.amazon.co.jp/gp/aw/d/4781911609/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

922 :デフォルトの名無しさん:2016/01/07(木) 10:24:33.73 ID:dV4P966A
上のスライドだと32-34ページに
http://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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

936 :電波いっぱい:2016/02/01(月) 06:48:44.66 ID:iITfW2yZ
>>935

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

956 :デフォルトの名無しさん:2016/02/07(日) 22:51:41.81 ID: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までしかあげてないので、
試すには、本家とはべつにローカルか別名のリポジトリ作成してやる必要がありますね。

957 :デフォルトの名無しさん:2016/02/08(月) 15:20:13.39 ID: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

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

959 :デフォルトの名無しさん:2016/02/19(金) 21:29:40.96 ID:0R2jEsLy
>>958
emacs+ciderで幸せ
break pointはよ(昔はswank-clojureでできたのに)

960 :デフォルトの名無しさん:2016/02/20(土) 15:11:04.21 ID:NsOi1z3Q
CIDERにもbreakpointあるよ。

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

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

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

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

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

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

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

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

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

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

263 KB
新着レスの表示

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


read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)