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

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

1 :デフォルトの名無しさん:2013/09/28(土) 11:03:28.38
JVM上で動作するLisp方言「Clojure」のスレ。

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

前スレ:
【Lisp】プログラミング言語 Clojure #2【JVM】
http://toro.2ch.net/test/read.cgi/tech/1318498898/
【Lisp】プログラミング言語 Clojure【JVM】
http://hibari.2ch.net/test/read.cgi/tech/1255533519/

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を両方同時に勉強するのは大変だと思う。
基本的な考え方が、かなり違うから。

263 KB
新着レスの表示

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


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