【Lisp】プログラミング言語 Clojure【JVM】
4 :
デフォルトの名無しさん :2009/10/15(木) 06:05:10
いつの間にかこんなスレが。乙←ポニーテールなんだからね?
definline, defmacro, defmethod, defmulti, def, defn, defn-, defonce, defstruct ややこしい…
ださ
翻訳が出るのを知らずに、 原書を買ってしまった。
Qiのように消えたりしないものか
煉気化神は期待できないのかな? Functional Programming in Qi (second edition) 買ってしまった。
>>9 Qiはまだ運営されているから消えていないよ。ただ、ブレイクしていないし
ブレイクするかどうかも疑問はある。clojureが出てからここまで来ている
のを見ていると期待の高い言語だと思うよ。(clojure-mlを見る限り)また、
infoQでも度々取り上げているからツボに来てるライターもいるのだろう。
java使いが簡単に(手続き型でもオブジェクト指向でもない)clojureに来る
とは思えないけどね。彼らにはまだ冗長な記述のscholaのほうが好きそう
だからね。いずれの言語もマルチコアが扱いやすい言語ということもある
からこれから伸びるよ。
>>8 どうせ訳本は遅れるだろうから、先に勉強したいなら良いのでは。
12月にも洋書だけどClojure本出るよね。英語の勉強がてらそっちは洋書を買おうかな。
shiro さんの訳らしいので期待
pclj 第2版? 来てた > The Pragmatic Bookstore Oct 21 (4 days ago) > >Dear xxxxx , > >This is just to let you know that Programming Clojure (eBook) has recently been updated. >You own an electronic version of this book, and so you'll be able to download this latest version. >Changes in This Release > > * Second Printing
pcljってProgramming Clojureの略記だったのか。今ごろ知った
今時のLispって、リーダーマクロ禁止の方向なの? なんか安全性と引き換えにLispとしての大事なものを失っているような気がする
少なくともCommon-Lispでは誰も禁止してないと思うけど
clojureは、lisp-1だからschemeの親戚だぜ lisp-2のcommon lispみたいに関数と変数の名前空間が分かれてないから、 マクロの展開で名前が被るとかでlisp-2ほどマクロが書きやすくないからだそうだぜ let over lambdaとかみるとそんな感じだぜ
おっと、clojureは、名前空間分けられるそうだ
斜め読みだけど ` が名前空間を保存する特殊形式(Syntax-quote)になってるから それで解決しようとしてるんじゃないの
22 :
デフォルトの名無しさん :2009/11/13(金) 22:17:49
黒蛇 あるいは 苦労蛇 あげ
24 :
デフォルトの名無しさん :2009/11/29(日) 16:12:07
25 :
sage :2009/11/29(日) 23:34:46
26 :
デフォルトの名無しさん :2009/12/03(木) 23:27:52
保守あげ
過疎ってるwww
まあ翻訳本が出れば少しは・・・
Clojureは今風かつ意欲的な機能が盛りだくさんで、 面白そうなんだけど、そのうえ型指定するとJVM用にカリカリ チューンされたプログラムも書けそうで実用性もgoodなんだけど、 なんというか…ぽっと出っていうかブームっていうか… 今は盛り上がってるけど、作者が飽きたりして急に駄目になったり しないかと思うと、ちょっと手を出しずらいなぁ。
>>29 その辺はオープンソースなので、作者が消えても受け継がれるさ。
>>30 KL0の事も思い出して上げてくださいね。
そんな 泡沫言語きいたことないお
33 :
デフォルトの名無しさん :2009/12/24(木) 07:35:00
一方Practical Clojureは2月に延期
37 :
デフォルトの名無しさん :2009/12/30(水) 17:11:07
1.1RC3
あけおめ。 1.1の正式版が出たよ。
あけおめ。1.1きたね。
clojure、これからのLispの本命だと思うんだが、国内では盛り上がらんねー。 動かしてる人がやたら少ない。shiroさんの翻訳本待ちかなぁ。
41 :
a36 ◆K0BqlCB3.k :2010/01/03(日) 17:08:47
golangが一段落したのでこっちにも手を出してみるぜ。 Lisp方言だから習得はしやすいな。
>>41 lispいがいにhaskellやらjavaやらもしってれば、楽だと思うよ。
あの本の原本はなかなかよいので、それで翻訳者が指折りのshiroさんって
こともあるので期待していいだろうね。国内では盛り上がらないのも普通
だろうな。右むきゃ右の民族性ゆえんだし。
>>42 新しい言語で2chにスレがたつ程度に有名な言語は大抵試しているが、
どの言語も満足できなくて本気コーディングは結局C言語とperlに戻ってしまうんだ。
>>43 なるほど、大体は試してるのね。じゃあ大丈夫だね。
cに戻るところをみると処理速度重視なんかな?
>>44 速度とプログラミングしやすさのトレードオフ。
Haskellとかprologとかいろんな言語があるけど、
たとえばHaskellはリストの処理はしやすいけど配列の扱いは面倒くさかったり、
par関数みたいなので簡単に並列処理ができるのはいいけど、
CSPみたいな形式手法やpi-calculusみたいな計算モデルを持ち込んだような処理をするなら
golangやscalaのほうがずっとやりやすい。
純粋関数型言語すべてにいえることだけどGUIや非決定的な人の介入があった場合の処理の扱いが
イマイチ確立していなくて、結局X11を直接叩いたりwxHaskellみたいなオブジェクト指向畑のライブラリを
移植したものが(やむをえず)主流になっている。
また、Javascriptはブラウザ上でしか動かないし、
PythonはIronPythonを使えば.NETにコンパイルできるけど
.NETはLinux上ではMonoを使わないといけない時点で嫌いだし、
インデント依存のせいで余計な行数を強要されるのも不愉快だし、
GIL問題のせいで並列処理に致命的な欠陥を持っているし、
今のところやりたいことが何でもできる言語というとC言語ということになるんだよ。
>Javascriptはブラウザ上でしか動かない サーバサイドJSとか微妙に流行ってるらしいよ 独立したインタプリタもあるし 主戦場は相変わらずブラウザ上だけど
>>45 GIL問題についてはUnladen Swallowプロジェクトの活躍に期待しましょう。
こういう周辺プロジェクトが現れるのはPython人口が多いからですね。
Clojureも、せめてこのスレぐらいは過疎から脱出して欲しいです。
MacRuby、GILをなくして平行スレッドを得る
http://www.infoq.com/jp/news/2009/07/macruby-drops-gil-threading >PythonにもRuby 1.9.xと同様のGIL問題があるのだが、
>Unladen Swallowプロジェクトは2010年までにGILをなくすと約束している。
ProjectPlan - unladen-swallow (A faster implementation of Python)
http://code.google.com/p/unladen-swallow/wiki/ProjectPlan >In addition, we intend to remove the GIL and fix the state of multithreading in Python.
>We believe this is possible through the implementation of a more sophisticated GC system,
>something like IBM's Recycler (Bacon et al, 2001).
> Rich Hickey 金持ちのヒッキーか。ふーん。
>>47 日本での夜明けはもうすぐだよ。1月25日だっけ?きっかけが作られる日を待て。
質問です 今のところClojureでのプロセスの扱いはJavaのスレッドを使うのが主流ですか?
51 :
デフォルトの名無しさん :2010/01/05(火) 18:37:13
>>50 JVMなんでスレッド。
自前でスレッド起こすより、Agentやfutureなどのインターフェイスから使った方が幸せになれる。
裏側でスレッドプール使って宜しくやってくれるので。
>>51 ありがとう
JavaのスレッドってErlangの軽量プロセスなんかと比べると驚くほど低速だったように記憶しているけど、
pi-calculusみたいにプロセスを使い捨てにするような処理は向いていないと考えていいのかな。
今調べたらparallel.cljというライブラリにparという並列処理関数が実装されていて、
それはJava7の新機能の細粒度並列処理軽量ライブラリを使って実装されているらしい。
Java7はまだ未公開だけどjsr166y.jarをダウンロードしてくればparも使えるらしい。
と思ったら
http://www.mail-archive.com/[email protected] /msg13838.html のとおり。
結局parを使うために環境整備するのが面倒くさい、俺乙。
1時間無駄にしたぜ。
プログラミングClojureは、いつになったらアマゾンで予約できるんだろう
windows上のmeadowでclojureつかってるのだけど、slime-eval-region中の日本語や中国語が通るようにするにはどうしたらよいのしょうか?
>> 55 どういう問題が起こったのかわからないんだけど、不慣れなエスパーしてみる。 手許の MacOSX 上の Emacs だと slime-net-send: Coding system iso-latin-1-unix not suitable for ... って言われたから、適当に slime のソースを grep して (setq slime-net-coding-system 'utf-8-unix) ってしてやったら slime-eval-region できた。 そういう問題?
clojureでclassファイル生成するにはどうすればいいの?
>>59 うお、おれ58じゃないけどサンクス!知らんかったよ
#()はマジで良い
>>60 そこの人、前もPython vs Clojureとか言って残念なPythonコード書いて
一部のPythonistaの反感買ってなかったっけ。
Rubyとか良く知らんけどdef files以下14行は
def files(rootDir)
Dir.glob("#{rootDir}/*/*") {|f| yield f }
end
でいいよね?
Clojureのコード例が悪くないだけに残念だなーと思う
>>63 あの手の比較をなん人でやってるか知らないけども、一人で作ってるならば
その言語を使いつづけている人の使い方をどれも実現するってのは、時間が
かかるんじゃないかと考えますね。無理がどうしても起るだろうね。できれ
ば、それぞれを主力として使ってる人に同じ問題を解かせて、それを検証す
るほうがフェアになるだろうとは思うよ。となると、ゴルフ系サイト(オイ
ラーとか)のもので検証してもよいかもしれない。ただ、ゴルフ系の最適化
は行数をみじかくするほうに流れがちだから、あれも特殊コードということ
もいえるかも。
オイラーってゴルフなのか?
67 :
っっあ :2010/01/16(土) 19:38:08
・Clojure in Action
ttp://manning.com/rathore/ Introduction to Clojure (Green Paper - PDF) メール登録
18ページ。字がちっちゃいような。
下記の本編と内容とだいたい同じような気がする…
Part I - Learning Clojure
1. Introduction to Clojure - FREE
The Joy of Clojureの作者Michael Fogus氏は日本語がしゃべれる 奥さんが日本人なんだってTwitterでゆってた
Translateしたわけじゃなかったんだな、あれ
すまん、Clojureを今日初めてさわった、setqとかsetfがなくて焦った 基本的にimmutableなデータが主で、mutableならstmとか使えとかだってしってないと結構びっくりする(だってlispだってきいたんだもん!) って人結構多いんじゃないかなぁ(俺だけ?)
>>72 clojureはhaskellっぽくやらないとlispっぽさがでない不思議がある。
なまじLispを知ってると混乱する
なまじSmalltalkを知ってると混乱するObjective-Cみたいなもんか
そうやなぁ。
>>75 c++のオブジェクトの扱いを知ってたらclosで面喰らう
というのと似てるかもな。でも知らないよりはゆうりだよ。
77 :
デフォルトの名無しさん :2010/01/19(火) 12:11:11
オブジェクト指向がどうのこうの言ってる奴がいると原始人に思えて仕方がないw
Lispって括弧内のデータ配列表現で全部書くから見た目が統一的できれいだね。 他の言語は書き方がいろいろあるせいでゴチャゴチャしてて見づらい。と、思うようになった。
>>78 むかしからずっとなんだけど不等号だけはパッと見で大小関係が把握しにくい
(> a b) の > aに着目しちゃうせいで b > aに勘違いしちゃう
clojureは結構ゴチャついてるよな 連打で括弧を閉じていきたいんだけど、括弧の種類を慎重に見極める必要があるw
Clojure、こいつは流行らないぞ
そろそろ店頭に本がならぶころかな。
30日とかじゃなかったっけ?>本
>>80 R6RS Scheme でも cond の節に [ 〜 ] を使ってて括弧の対応を間違えてる人を見たことがある
paredit.el みたいなのを使って構造エディタっぽくやっていれば大丈夫なんだろうか
それとも Clojure だと )))])) みたいに閉括弧が並ぶところで
種類を考えないといけないパターンは少なくなるようになってるのかな
87 :
84 :2010/01/20(水) 12:51:11
>>85 サンクス。30日とか変なデマ流してすまん。
88 :
84 :2010/01/20(水) 12:52:22
括弧の対応はエディタ任せって約束したじゃないですかー!
]は全部閉じるってじっちゃんが言ってた
>>80 emacsなら.emacsにそうかいとけ。
Clojure in Clojureはその布石ですね
clojureの前身プロジェクトってCLR用のDotLispなんだよなー まあCLRだとunixコミュニティのサポートが得にくいからjvmに移行したのは賢明だと思うけど
CLRならunix総力を上げて潰すのですね 賢明です
>>91 そこの原文を見たらちょっとニュアンスが違う。
> No. Clojure's tight integration with Java is key to its power.
> Of course I would welcome a functional Lisp tied to the .NET platform
> -- but it shouldn't be Clojure.
どうせおれなんて献本なんて貰ったことねーよorz
>>97 何かを手に入れたい、何かを目標にがんばろう、と思ってがんばっても、
それに手が届くところまで来れたときには、すでに必要なくなっている、
って良くあるよね。
俺の人生はすべてそうだった。
>>98 俺もプログラマカッコイイと思ってプログラマになったが、今はやめたくて仕方が無い。
献本もらってるのはレビューとかに参加した人達じゃね? バイト代みたいなもんでそ。
出版された本の誤植を報告しておくと次に別のレビューに誘われるかもよ あとは、書評の人として有名になってたりすると献本が送り付けられてくるかも
ok、レビューに呼んでもらえるようにブログに書評を書くことからはじめるよ 全然関係なくてもgaucheとかclojureとか書いてshiroさんに 拾ってもらえるようにがんばる
>>102 あと批判とかもすんなよ。
基本YESマン
>>102 今なら、clojureの日本語情報があまりないから、海外の情報をいちはやく
紹介してみたらいいかも? ただし、clojureのその他の本が出るのが早い
次期になるとは思えない。
オンラインでもオフラインでも良いが、勉強会を開くなどして目立っていけ。
れと、yesマンになる必要はない。
>>102 レビュアーとしては、誤字脱字レベルじゃなくて、内容まで突っ込んだ話ができると重宝がられると思う
用語が変だとか、想定される読者にはこういう言い方の方が通じやすいんじゃないか、とか
書評の方だとやっぱり目立つ人が強い
あの××が認めた、みたいな感じだとやっぱり評判になるし
そういう意味では単純な yes マンよりは、良い悪いをきちんと言える人の方が信用されると思う
『プログラミングClojure』ってそろそろ書店に並んでいるかな?
昨日はジュンク堂においてなかった
先ほど秋葉原の文教堂も書泉も置いてなかった
amazonは予約受付中だった(konozama?
今日取次搬入らしいから明日には並ぶのかな amazon も 1/26 発売としてるし
>>104 自分は公正・公平に判断している、と自称している人間でも、
たとえ筋が通っていたとしても批判されるとムッとなって意見を聞こうともしなくなる奴が結構いるけどね。
俺はそういう奴をリアルで何人も知ってるし、とりわけブログ書いているような奴らはそういうのが顕著。
たとえば池田信夫w
秋葉原の書泉ブックタワーで確保 隣に並べてあるScala本に比べると薄くて小さくてちと寂しい
最初の本としては薄い方がとっつきやすくていいな
>>111 池田はな…。進化で電波を飛している人としか思ってない。 アルファ系
といわれる人たちはそれがプライドになってるからな。ふんぞりかえる
ことと誠実なことの区別ができない人もいるが、プログラミング系のと
ころはyesマンの必要はないけども、個性がつよいってのはまちがいな
い。105に書かれているように、論理性だよ。ただし、それを取捨選択す
るのは著者だから。
電波って書いたのは「とんでも系」だって意味ね。それに、111の書いてる ダブスタ系の人は多いけど、そんな人はちゃんと信頼を失うという代償を払 うから、賢明ならば適当にながしておくことだな。器の大きな人か小さな人 かも判断できるしね。 ただ、筋が通ってる意見を言ったつもりでも、御互いにみてる視点が違った り同じことを言ってるのにお互いに理解できてなかったりもありますから、 おたがいにダブスタにならないように気をつけることだな。
>>115 ブログだとコメント承認制のところが多いから、批判系の意見は承認しないということも多いし、
仮に承認しても本文と日時を黙って修正して批判者が本文をよく読まずに誹謗中傷する頭のおかしい人だ
というレッテルを張ってくることもある。
有名な人でも時々それがあるから本当に困る。
批判者は俺じゃないんだが、昔のMatzもそんなことしていた時期があったよ。
ともかく、どんなに論理的な意見でも真っ向から批判するんじゃなくて、
YESマンを装いつつ自分の言いたいことを伝えるような難しい技術が必要なんだよ。
>>116 まあね。結構色々なブログをお読みみたいだね。承認制はおおくなったし、
批判に対して不寛容なところはおっしゃるように増えてるかもしれない。
有名人も含めて文字を通してのやりとりって慣れてないのと、心地良いもの
だけを惹き付けない癖がついちゃってとれない人もいるのは本当だろうな。
皮肉なことに第三者としてそれを見てるとその人の知性までみえてしまう
から恐しいものさ。
ただし、その人達が政治的なことを糸を引くようなところがあるとは限らな
い。まず、そんな暇があったらプログラミングしてるだろう。それがハッ
カーだし。それに、レビューとかそんなのを拾い上げる人ってのは著者だけ
ではないし、出版の編集者も関わってくることだよ。これは、111で書いて
るように公平性の問題かな。そこからはyesマンばかりではないのね。
上手に言いたいことを伝える技術はおっしゃるように重要だ。まずは、敵対
関係ではないことと、それをお互いに良くしようとしているという前提を
わすれない伝えかたを考えるってことだろう。それがyesマン風かと聞かれ
るとどうだろう?それを容易くするためには信頼関係を強くすることだろ
うよ。
同じ出版社のやつは、scalaも薄いですよ。(作者の熟練度もあるんでしょうが)
ttp://pragprog.com/titles/shcloj/programming-clojure Clojureの場合も、1,2年すればWeb開発とか分散系に特化した専門的な本も出てくる気はする。
ruby1.9 960p
ruby1.8 864p
erlang 536p
↑詳解
↓紹介
groovy 320p
clojure 304p
scala 250p
manning
- Clojure in Action 475p
- The Joy of Clojure 300p
apress
- Practical Clojure 350p
献本する側からすると関係者以外へ送るやつは宣伝費なので、要は宣伝として 有効なら良い。書評書いてくれそうで界隈にそこそこ有名であることは大前提 だけど、yesマンに書かせると嘘くさくて潜在的読者が引くのでyesマンは要ら ない。 かといって、影響力の大きいところに思いっきり叩かれると本当に売り上げに 響いて恐い。 だから、普段から技術的に価値の高い記事を書いていて、他人の本とか記事を、 良いところはよく褒めて悪いところはするどく指摘するという当たり前のこと をやってる人が献本しやすい。
Windows上なのにMeadow+Slime+clojure-mode+clojureで幸せすぎる もしかしてタダで使えるWindows上のlisp処理系で一番いい選択肢なんじゃなかろうか?
Hanchentootとかを動かしたくてCL覚えようとしたんだけどWin上だとThreadがダメだったり asdf-installがめんどくさかったりとものすごく敷居が高いんだ でもclojureで実用系の部分をjavaの資産つかっておけばあとは自分がやりたいことだけに専念できる気がするんでものすごくありがたいかも
>>122 うん。windowsでcommon lispを使うときは外部のライブラリに泣かされるからね。windowsを捨てても問題はないから捨てるのも一考だが。藁
abclもjava資産を使えるという意味ではよいだろうけど、ECLIPSE,NETBEANS
などのプラグインも開発されてそれを使えば、即ClojureのREPLまで使えるか
らインストールの負担は一番すくないからね。clojureのライブラリを生かそ
うとすれば、ほんの少し敷居があがるけどね。どのOSでもどのIDE/editorでも
環境が容易されているってのは強みだと思う。
ただ、Clojureの問題は、まったくの初心者向けの情報もあまりないことかも
しれない。
おいらはnewlispも結構いいなと思ってる
Amazon未だに予約受付中で涙目なんだけどなんでなんだぜ... 速攻売り切れた?
おれもだ。もしや届いていないかと急いで会社から帰ってきてしまった。 自宅と会社用にAmazon予約と地元の本屋で二冊買うぜ。
秋葉原の書泉では平積みだった もちろん買った
地方の本屋にゃ売ってなかったよ。まぁいい。 Amazonからの配達をワクテカして待つ。
『プログラミングClojure』帰りがけに駅ビル中の本屋によったら、一冊だけ有った。 うっかり買いそうになっちまったぜ、あぶないあぶないw
買ったら駄目なん?
明日あたり入るかな?@北海道
Clojureに興味持ってる人ってもともとLispかじってた人だけ?
133 :
デフォルトの名無しさん :2010/01/27(水) 19:52:42
Lispやってない奴は構文的にとっつきやすそうなScalaにいく気がするな...
scalaとclojureに勢力が分かれて どっちもメジャーになれないみたいな感じになるな
Common Lispで言う「クロージャー」の綴りは"Closure"だとせっかく覚えたのに 最近、"Clozure CL" だの "Clojure言語" だの紛らわしいのが増えてきて、困ったもんだw
名前を造語にするのは検索しやすいからよい 最近非常に検索しづらい名前の言語がでたけど、 きっと作ったところはそういうことを何もわかってないんだろうな
おっとJの悪口はそこまでだぜ・・・
>>133 lispに興味があって(無いならまず除けると思う)関数型言語に興味がある場合はこっちに来ると思う
マルチスレッドでの効率に関係して関数型言語に触れようとした場合で、最近の傾向を知っているならSTMが標準で準備されてるClojureに目がいくと思う
というかscalaはerlangとかがライバルなんじゃなかろうか?
ってなわけでscalaとclojureがバッティングすることってあんまり無いような気がする
つまんねえ比較どうでもいいよ。
キミという一個人が感じるつまらなさは、もっとどうでもいいんだけどね。
>>138 STMが関数型言語と関係しているみたいな言い方だけど、
これは一個人ではなくClojureの公式見解?
日本語でおk
北海道の片田舎だがようやく買えた さて読むか
>>144 CLだと割と短いコード書けるけど(トップには及ばないんだよなぁOTL)clojur
#てな訳で精進中(CL派はsetqにとりつかれているかも)
ちょっとOCamlっぽいな
Golf方面にはがんばらなくていいよ・・・
実数とか整数ってjava.lang.Doubleとかなのね
golfだけはな…。初心者が手を染めるものではないわな。 プログラミングスタイルに悪い癖が付いてしまう。
仕様よく知らないけど、 やっぱシンボルドット表記でクラスの階層参照するわけだよな? (かんたら(ref うんたら))形式はやっぱアホだよなあ やっぱ(うんたら.かんたら)だよなあ 翻訳したshiroさん自身はどう思ってるのかな
「 はよく知らないけど だからアホ」とか…はてなやTwitterで見慣れたけどね。 半可通って知ってるか?生半可な知識で通ぶるのは一般的には恥ずかしいことだ。
>>151 作者の意図を正確に掴んで、別の方法を提示した上で双方の手法に
利点と問題点を纏めて指摘できるようなやつなら、有名人になって
るかもな。所詮、テレビのコメンテーター気取りってだけの話。
>生半可な知識で通ぶる 知ってたら通ぶれないんだろ
iPhnoeとか、他のケータイでなんか遊べないんかな? 活用術みたいなのってない?
誤爆した
昨日からプログラミングClojure読みながらREPL動かしてるがすごいなこれ 予想よりもはるかにしっかり作り込まれてる (個人的には、大体のものはimmutable、seqは遅延評価、STM使えるという Haskellっぽいところが特に気に入った) 本気でClojure使う気がなくても、 「自分の使ってるLispでも同じ機能あったら便利だな、 マクロで似た機能作ろう」というアイデアを得る為だけとしても さわってみる価値はあるかも。with-metaとか 気に入らない部分もなくはないけど、 (数値や文字列はJavaのオブジェクトなのでメタデータつけられないとか) 大した事ではない・・・と思う多分
本読んでるだけでも楽しくなる
ベンチ代わりにふつーにフィボナッチやらせてみたらclispより2倍くらい遅かったw
わざわざJVM上に構築してるわけだから、速さは期待できないよな。 おもしろい構文とかJavaのライブラリを自由に呼び出せるのが魅力だろう。
javaの-serverオプションが効果的になるね
>>158 clojureでフィボナッチといっても、どんな関数を作ってやった?
再帰なのか無限シーケンスなのかそれとも?
clojureの再帰もclojureの流儀はちょっと特殊だけど、 それを無視した再帰を公開してるブログもあるよ。 もちろん、速さに影響がある。
time clj fib.clj って感じで測ってるなら重い重いJVMの立ち上げがあるからそのへんが軽いclispと比べても…
clojureの本に速いってかいてあったけど速いのか?
(def fibo (fn [n] (cond (or (= n 0) (= n 1)) 1 :else (+ (fibo (- n 1)) (fibo (- n 2)))))) (def beti (. java.lang.System (currentTimeMillis))) (println (fibo 40)) (def afti (. java.lang.System (currentTimeMillis))) (println (/ (- afti beti) 1000.0)) こんな感じで比べてみたんよ
再帰のところはrecurを使わなきゃ。でも、fibは再帰で苦手な例だったよね。 clispとの比較だから遅延はさせてないのかもしれないが。 遅延を効かしてないし、clojureの特徴はいかせてみると (defn fib2 [x y] (lazy-seq (when-let [foo (+ x y)] (cons x (fib2 y foo))))) として user>(def fibo-list (fib2 0 1)) user> (time (take 40 fibo-list)) としてごらん。
Windows上のClisp2.48とClojure 1.1.0だと Clojureのfibの方がちょっと速かったな。 (compile 'fib)したらClispの方が速くなったけど。 まあしかし色々書き方あって面白いね (defn lfib [n] (loop [a 1 b 1 i n] (if (= i 0) a (recur b (+ a b) (dec i))))) (use 'clojure.contrib.def) (defn-memo mfib [n] (if (< n 2) 1 (+ (mfib (- n 1)) (mfib (- n 2))))) (def fibseq (map first (iterate (fn [[a b]] [b (+ a b)]) [1 1]))) (time (prn :loop (lfib 40))) (time (prn :memo (mfib 40))) (time (prn :seq (nth fibseq 40)))
>>167 java -serverで起動するとclojureの方が早いよ
sbclはもっと早いけど
169 :
168 :2010/02/03(水) 22:51:55
java -client(こっちがデフォルト)とjava -serverだと普通に8倍くらい違う
>>2 で紹介してくれてるチュートリアル見てるけど面白そうだ。
練習問題集みたいなページない?
172 :
170 :2010/02/06(土) 21:36:17
>>171 たくさん紹介して頂いて有難うございます
ちょっと助けて、 [{ :id 1 :label "value1"} { :id 2 :label "val2" }] こういうベクターをそのままファイルに書き出して読み込もうとしたのだけど with-out-writeでprintしちゃうとダブルクォートが無くなって [{ :id 1 :label value1} { :id 2 :label val2 }] ↑の様になってしまうのだけど、意図したとおりにREPLでの表現と同じ形式でファイルに書き出すにはどうしたらよいのだろう?
一旦strで文字列化してから出力すればok
duck-streamのread-linesをwindowsのreplで使ってると うかつに最後まで読ませないでいると消せないファイルだらけになってしまうのね (let [ header (take 3 (read-lines (. fileChooser getSelectedFile))) ] ;headerのアタマだけなんかする ) repl抜けるまでファイル消せなくなって焦った こういうときってどういう風にするのがよいのかね?
>>176 なんというwindowsの罠・・・
同じようにやってみたら、よくexplore.exeがやるみたいに、
jreが開いたファイルをロックしっぱなしにしてた
直接ファイルpathをread-linesせずに、with-in-readerで囲めば、
そのブロックを抜けたらロック解除してくれる
(read-linesには引数として*in*を渡す)
ちなみに、unlockerというソフトで、ロックしてるかどうか調べた
本来は、explorer等によってファイルが無駄にロックされて困る時に
強制的にロック解除するソフト
windows使うなら入れといて損は無いと思う
>>177 ありがとう、with-*がC++のdestructerみたいな使い方するときのイディオムなのね
javaで扱えるunicode文字ならなんでもかんでもシンボルやらキーワードにできるのね contrib.sqlはダメかと思ったらそういう文字つかったテーブルとかすらもりもりと生成できてびっくらこいた
emacs-slime経由だとjavamailがセキュリティチェックに引っかかるorz
俺がアホだった、mailcapのファイル名まちがってたorz 回線切って寝る
ボーグなのかいw いや待て、ロキュータスなことに意味があるのかもよ?w
186 :
デフォルトの名無しさん :2010/02/10(水) 17:07:29
>>184 ちょっとまてPHPはダ○ン症か?道徳的に問題あるんじゃない?
rubyはやめといたほうがよさそうだ
自己紹介(common lisp)はないんかいw
よく見たらあった 眼科逝ってくる
ASP.NETってセクシーなんだな
>>186 あれはただの男の子だろ?小学生くらいの。
あぶなっかしいガキンチョじゃないかな >PHP
カークはないな。不純だが便利という意味でスコッティを推奨する。
ぅあ…がいないな…
>>193 その立場はEmacs lispがとったもよう
196 :
デフォルトの名無しさん :2010/02/11(木) 15:55:21
名前の由来は何でしょうか?
closure + java =: clo[j]ure
198 :
デフォルトの名無しさん :2010/02/11(木) 17:01:30
ありがとうございます しかしClojureの数多くある機能の中で なぜクロージャだけ名前に使われるほどフィーチャーされたのですか?
>>198 リッチなヒッキーさんに直接聞いた方がいいんじゃね?
>>198 s-exp + java で名前が s-presso とかだとガッカリするから
ダサすぎるw>s-presso そういや昔はコーヒーにちなんだ名前がたくさんあったな、今から考えると かなりカッコわるい
>>202 珈琲ならまだいい、javaが登場した当初はお茶とカレーのネタにうんざりしたもんだぞ
#t と currying のネタを思い付いたけど、書き込むのは止めておくわw
>>198 やっぱLISPを象徴する機能だからじゃないか? > closure
言語名は造語だとぐぐらびりてぃー的に良いよね。
“scheme”は今は結構まともだけど最初は酷かった>ぐぐる 2chスレのおかげだな
最近、hl=ja なぐぐるは色々と残念な希ガス。プログラムの話題は特に。 ぐぐる先生が悪いんじゃなくて、日本語で書かれたコンテンツが残念なだけかもしらんけど。
日本語だと残念な部分(言い回しとか)まではっきり見えるからだろ
期待するパッケージがずらずら表示されるぐんにょり感 qt とか洋物ツールの情報を探すのコツがいる、とか たまに yandex で引いてみたり naver で引いてみたりする
FORTHがセオドア・カジンスキー だってのもなんだろうね。 lisperにとってそんな脅威?
ユナボマー?
>>211 文明の発展にNOって感じなんじゃないの
FORTHの進化ってあんま聞いた事ないし
三段目がスタートレックなのはわかるけど 赤提灯ののん兵衛っぽいおっさんの元ネタが わかりそうでわからないのだった・・・ はすけるはどっくだぬばっくとぅざふぃちゃだぬ
221 :
デフォルトの名無しさん :2010/02/14(日) 22:53:33
>>205 Lispを象徴する機能って言ったらマクロじゃないですか?
macro ↓ jacro mjcro majro macjo macrj
>>222 どれにしても"カッコ"悪いと言う事ですねw
↓ macjo maclj macloj macloju aclojur clojure ↓ clojure
225 :
デフォルトの名無しさん :2010/02/15(月) 21:22:52
おい
西洋版まっくろくろ助みたいな
>>226 どうでもいいけど「まっくろーどはーすばらしい〜♪」ってCMソングが想起された
さらにどうでもいいけど、clojureのおかげでsolaris-linux-bsd-windows全部の環境でSLIMEでreplができて幸せ
commonlispの時はwindowsだけスレッドがつかえねぇとかものすげぇ不便だった
229 :
デフォルトの名無しさん :2010/02/17(水) 00:57:01
JVM前提でLispとかwwwwwwww だったらJava使えばいいだろってはなしwwwwwwwwwwwwwww クソってるwwwwwwwwwwwwwwwwwwwwww
>>229 ライブラリがほしいだけだと思う、JVM がほしいわけじゃないと思うよ
欠陥言語使う気になれない!とくに floating 関係の仕様バグ > Java
>>230 >floating 関係の仕様バグ
もしかして以前 Lisp スレに出没してた人かな?
結局大した欠陥なんて無かったんだよな
なんだ、ここにまで馬鹿ちんこが来たのか
Youメール出しちゃいなYO!
>>233 >Strong mathematical and analytical skills
優秀な数学的かつ分析的能力
お前らにはむりぽ
そうじゃないと何かに耐えられないのでは。
clojure楽しいけどちょっとした処理のツールを作っておくとかだと起動が重たいって欠点が目立ちすぎるね やはりサーバ立て向けなんだろうか?
中村さん、べた褒めしてるね。 ところでInfoQに作者のインタビュー があるけどかっこいいなと思ったのは俺だけ?
>>239 正三郎?
あのひと普段の言動が軽いからべた褒めしてても話半分の半分位にしかきこえねぇ
名前になんか言うのやなんだけど、リッチなヒッキーさんって本名だけでしびれる
>>238 起動時間が、通常1.8秒のところがAOTで0.4秒になった。
意味ないけど、perl 0.007秒 python,php 0.02秒 sbcl 0.09秒
os: linux centos5.4 x86_64 java: jdk 6u16 clojure: 1.1.0 の環境で、
Excelsior JET 7.0(AOTツール)の体験版(betaは棚卸中)を試したら、
real:0.438s user:0.081s sys:0.167s
java -cp clojure.jar clojure.main -i /dev/null
real:1.819s user:1.322s sys:0.171s
ちなみに、java -jar clojure.jar -i /dev/null だと2.0秒
制限少ないJVM向けのAOTあれば、そういう用途も使いやすいんだけど・・
user=> (map println '(1 2 3)) (1 2 nil 3 nil nil) こんな風になってしまうのですが、clojureでは リストの要素を表示するにはどうすればいいのでしょうか?
>>243 こう?
user=>(print (apply str (interpose "\n" '(0 1 2 3 4) )))
0
1
2
3
4
nil
245 :
デフォルトの名無しさん :2010/02/23(火) 14:25:55
>>243 Clojureではシーケンスの多くが遅延評価される仕様になってる
その例では、REPLが(map println '(1 2 3))の結果のリストを表示しようとする
タイミングで初めて各要素についてprintlnされるので、そんな結果になる
このような場合、dorunが使える
user=> (dorun (map println '(1 2 3)))
1
2
3
nil
mapした結果を捨てたくないなら、doallを使う
user=> (doall (map println '(1 2 3)))
1
2
3
(nil nil nil)
sage忘れた。すまん。
>>243 (doseq [x '(1 2 3)] (println x)) かな
Clojure 本を見ると、 doall と dorun はほとんど必要にならない、って書いてあるな。 Clojure 本体のコードを見ると doall は clojure.walk で使っているけど、これは木構造の葉を先に評価しておきたいからだと思う。 dorun は doall を実装するのに使っているだけ。 doseq は 30 箇所くらいで使われてる。 map + dorun / doall は結果の Seq が必要なときだけ使うのが標準的なスタイルみたい。
250 :
デフォルトの名無しさん :2010/02/23(火) 22:30:12
JVMが必要とか腐ってるな
clojure-crlって使い物になるの?
ちょっと触ってみた感じだと、 ・clojure-contrib他ライブラリーがjava依存部分を書き換えないと いけないので、使えない場合が多い。 ・clojure.jarのカバー率はそこそこあるみたいなので、 基本機能と.netのAPIで作りたいものがあれば、ありかも。 ・REPLの起動までもちょっと遅いと思う(Debugビルドしか作れないから、詳細は不明)。 ・速度もngen使っても2,3倍ゆっくりだった。開発者もIL(バイトコード)の時点で最適化されない 部分が結構あって、計算量のオーダーが変っちゃうのを嘆いていた。 こんな感じでした。
253 :
デフォルトの名無しさん :2010/03/03(水) 17:07:17
俺もそれやってみたが駄目だった GAEのappengine-java-sdkのバージョンが上がって appengine-cljと互換性がなくなったのが原因のような気がちょっとする 結構試行錯誤したんだが・・・
swank-clojure で slime-autodoc 活かすと repl が固まるのはうちだけ?
>>256 history見てると、1.3.1対応って明記してるのこれだけだった。
>>257 埋もれて申し訳ない。
260 :
254 :2010/03/05(金) 01:09:45
>>259 appengine-cljをsnewmanのに変更したら動きました!
ありがとうございます!
sbclから乗り換えるなら、今まで書いてたコードいろいろ書き変えないとだめ? 自動変換ツールとかないのかな
便乗だけどclojureからabcl上のclコード使うと 面倒なだけなんかな
>>261 そらまぁそうだわな
>>261 > 自動変換ツール
ないだろうな。作る気もしない(clojure は lisp1, CL は lisp2)
Schemeからだって自動変換するようなものじゃない。 再帰の扱いや遅延評価の活用を考えると、既存のLispとは別物と考えるべき。 Clojureに乗りかえようとおもって本腰いれたけど、置き換えじゃなくて共存になった。
Clojure勉強しようと思って図書館から「プログラミングClojure」借りてきた。 言語の学習は当然ながら処理系が必須。Clojureをインストール。 git先端をantしてmvnして・・・swank-clojureが動かないからquackで・・・ とか、苦労して実行環境を構築(普通はサクッとできるんでしょうな(泣))。 Hello worldとかちゃんと動くぞ・・・と喜んだのも束の間。サンプルを落とさなきゃだ。 サンプルを落としてサンプルのルートでClojureを起動すると立ち上がらない(;_;)。 良く見るとサンプルにClojure本体からContribから起動スクリプトから全部ある。 普段使いのClojreとは別にサンプル専用のreplを起動するようにして学習再開 ← 今ここ
javaでlisp処理系って昔から割とあったけど、本格的になってきたなあ
abclもclojureもjavaが動けばどこでも動くのですごくうれしい インタラクティブ環境って使っていること自体が楽しくて困る
前者は別にメリットとは思えないな。
ご自由に
CLISP も割とどこでも動くからな… Clozure CL も現実的によく使われている環境はカバーしてるし ブラウザ上で動かしたいとか、PaaS みたいなのだとまた変わってくるけど
>>268 ,270
LTK無くてもwindowを扱えるのでちょろっとしたツール作るのにも向いてる
ThreadもWindow操作もunixとMSwinとmacの間で書き換えが必要ないってだけで嬉しい
他にこれ満たしてくれるのACLしかないような気がする
GUI はそうだね。SDL や OpenGL を使っても限界があるし。 スレッドは Clozure CL でも行けると思う。
リッチなUI(透過や非矩形ウィンドウ)を取り扱うのってclojureできるのかな? swingとかは無理そうで、JavaFXだと手軽にできるみたいなんだけど clojureはjavaFX扱えるんだろうか?
275 :
デフォルトの名無しさん :2010/03/28(日) 19:33:52
clojure.contrib.duck-streams すげー。
(read-lines "
http://www.2ch.net ")
って書くだけでhtml引っ張ってきてくれる。びっくりですよ。
>>275 しらんかった
HTTPリクエストまじめに書いちゃった
読み出しをduck-streamで
orz
phpのfile_get_contentsみたいなもんか。
細かいこともできるのはいいね。
>>276 頑張れw
278 :
デフォルトの名無しさん :2010/03/29(月) 09:41:32
>>277 手探りでしたいことから探していくと上位機能の存在しらないままいたりするからねぇ
一度contribのソースとコメントに目をとおしたほうがよくないかな
>>276
contribどころかclojure.coreのコードも見てないぜっ
duck-streamは、clojure-contrib-1.1.0のapiドキュメントの方に載ってますた
>>275 は!?なにがすごいの?
read-lines関数に与えられた文字列がURLだったらそれ用の処理してるだけじゃん???
こんな事は大昔から誰かがやってたであろう事だし
clojureが出来るんじゃなくて
clojure「でも」出来るようになってるってだけのことじゃん
このclojureスレ興ざめなんだけど
たったその程度でclojure褒めたたえるのやめてよね
それ用の処理を標準に組み込んだところを評価してるんじゃね
>>282 clojureが凄いんじゃなくて、clojure.contrib.duck-streamsが凄いんでしょ。
それも、言語的に凄い・・・とかじゃなくて、使えば凄く楽ができる・・・って感じでは?
socketさえあればそんな糞ライブラリすぐ作れるだろ。 libcurlくらいの機能があるものならともかく。
貴殿のコミットをお待ち申しあげます
あて先はこちら
ファイルの読み書きはJavaのクラス利用するの?それともclojureのライブラリにそれ系の関数群がある?
Javaのクラスをそのまま使ってるコードはよく見かける。
masterと1.1.xってどっちのが新しいのかわからん
>>293 そうするとduck-streamsはどこにいっちゃったん?
contribになければ、まだないということ。
間違えて消えたのか、元を間違えたのか・・・ テスト系には、requireにclojure.contrib.duck-streams残ってるよー
richhickey-clojure-15a2b2e\src\clj\clojure\test.clj(196): clojure.contrib.duck-streams/writer. richhickey-clojure-15a2b2e\src\clj\clojure\test\junit.clj(35): clojure.contrib.duck-streams/writer)." richhickey-clojure-contrib-af2a730\clojurescript\src\clojure\contrib\clojurescript.clj(14): (:require [clojure.contrib.duck-streams :as ds])) richhickey-clojure-contrib-af2a730\clojurescript\src\clojure\contrib\clojurescript\applet.clj(17): (:require [clojure.contrib.duck-streams :as ds])) richhickey-clojure-contrib-af2a730\clojurescript\src\clojure\contrib\clojurescript\cli.clj(16): (:require [clojure.contrib.duck-streams :as ds])) clojure/testとclojure/contrib/clojurescriptだけ、手が回ってないのかな。
richhickey-clojure-contrib-af2a730\src\main\clojure\clojure\contrib\io.clj 1行目: ;;; duck_streams.clj -- duck-typed I/O streams for Clojure ;; CHANGE LOG ;; ;; May 13, 2009: added functions to open writers for appending 48行目: (ns #^{:author "Stuart Sierra", :doc "This file defines \"duck-typed\" I/O utility functions for Clojure. いろいろ、そのままだった。
最後のは、勘違いのような気がしてきたので、スルーしてくだしあ・・・orz
Scalaがにぎわってるみたいだけど、こっちも盛り上がって欲しいね
>>312 slime経由だからって訳じゃないと思う、wgetをwindowsの環境で実行しても此処まで遅くなかったんでちょっと原因がわからなくて
>>312 のように普通の結果が得られてるって事は自分の環境がおかしいって事だと思うので別の視点から調査してみるよ
ものすごく感謝してる
ドット対ってどうやって作るの? (cons 'a 'b) がエラーになるんだが。
(cons 'a '(b))
ドット対などありゃあせん
listでないconsが作れないのと、car,cdrがないのが寂しい。 firstとrestは文字数が違うのが気にいらない。
1.2の目玉機能は何?
1.2 が出ることです。:-p
protocols ってなんぞ。
JAVAでいう(実装と分離するための)インターフェースの代わりにつかえて、 動的に対応するインターフェースを生成するらしい。 あとから拡張できるらしい? 余計にわからんな。
誤訳かもしれんが、 追加する主な動機は、Clojureで書いたClojureコンパイラをClojureでリーズナブルに コンパイルするのに何が必要かを考えていて、高速で自前のデータ型を操作できるような 機構を追加しようということらしい。
なるほど。わからん。
名前からすると Objective-C の protocol に近いものだろうか
型的にはtraitsのような機能で、 ディスパッチの実装を抽象化するために作られた。 ということみたい。かなり実装指向の機能。
329 :
デフォルトの名無しさん :2010/06/07(月) 07:11:53
clojureで日付を扱いたいと思ってます。 それで (def dates '((4 (1 2 30)) (5 (1)))) こんなのを用意して (make-days dates) -> ((2010 4 1) (2010 4 2) (2010 4 30) (2010 5 1)) このように出力する関数を作りたいんですが (defn make-days (map #(interleave (repeat 2010) (repeat (first %)) (last %)) dates)) と定義すると (make-days dates) -> ((2010 4 1 2010 4 2 2010 4 30) (2010 5 1)) となってしまい、ここで詰まってしまいました。 うまく整形する、又はもっとうまい方法はないでしょうか? 初心者的な質問で申し訳ありませんがお願いします。 clojureで日付を扱う人ってどうしてるんでしょう。 java.util.GregorianCalendar使うのが一般的なんですかね。
(defn make-days [date-list] (mapcat (fn [e] (map #(list 2010 (first e) %) (second e))) date-list)) (defn make-days [date-list] (mapcat #(map list (repeat 2010) (repeat (first %)) (second %)) date-list))
今年中に1.2が出るとして、コードが動かなくなるのは、 githubから落としてtestが通らなかった contrib.duck-type (ioに移動)ぐらいかな。
334 :
デフォルトの名無しさん :2010/06/07(月) 23:22:21
>>330 すいません。どうもありがとうございました!シーケンス関数についてもっとよく勉強します。
>>332 名前空間の移動だけならAliasとかサポートしてほしかったりとか思うんだけどそういうものじゃないのかな?
安全な並行処理を売りとしてる割には、 並行処理自身の仕組みが乏しいように見受けられますが、どう実装するのがよいでしょうか? 例えばconsumer-workerパターンのような処理をする場合は agentを使うのとjava.util.concurrentを使うのと、どっちがよいか、です。
>>330 はポイントフリーで
(def make-days (partial mapcat #(map (conj [2010 (first %)]) (second %))))
のように書いた方が良いのだろうか。
lisp系つかうのはslime@emacsって決めてるからなぁ、いまさらvi系覚えるの辛い ;;決めたのはもちろんスライムに服を溶かされるヨーコさんのbastered!が原因だ!
いやっほ〜い
350 :
デフォルトの名無しさん :2010/08/01(日) 01:15:10
1.2 RC1 age
きたわよ
βとれたー!お目でとう! でもjvmの将来が暗くて涙目>>ボラクル死ね
まとめWikiなんてあったのか
そろそろexitが個人的にはほしいところなんだが。
357 :
デフォルトの名無しさん :2010/09/15(水) 08:36:35
eclipse、netbeans、intellij、emacs+slime、vimとかあるようだけど、 どれが使いものになるの?
Emacs一択。
EmacsにSLIMEって要る? Inferior Lispで十分じゃ。
362 :
デフォルトの名無しさん :2010/09/19(日) 22:36:20
Clojureって何でこんなに不人気なの? そんなに悪い言語じゃないと思うんだけど。ライブラリも充実してて実用的だし。 何か大きな欠点があるの?
Javaの人はLispが嫌いなのかも
364 :
デフォルトの名無しさん :2010/09/19(日) 22:58:55
>>363 Javaの人は、Clojureなんて使わずにはじめからJavaを使うでしょ?
Javaじゃない人が、何でClojureに来ないのかな?
個人的にはJVMを使いたくないってのがあるけど。
>>364 俺逆にJVMだから使い始めたのにSUNが飛んじゃったあとのOracleの対応みててどうしようかマジで悩んだ
複数プラットフォームでマトモに動く唯一のVMなんだよねJVM
>>362 やっぱLisp系ってことで引いちゃうんじゃないかな
情報が少ない
368 :
デフォルトの名無しさん :2010/09/20(月) 01:15:50
なるほど。 確かにJVMの今後の不安はあるね。 Lisp系ってことで敬遠されてるのか。 俺はWindowsプログラミングをしたいから MSが Visual Clojure Express とか出してくれればうれしいんだけど。
F#w
>>370 L#とか初期にさわっちゃったから悲惨なイメージしかねぇなぁ
言語そのものを育てる気はあんまりないせいでOpenSourceで立ち上げた場合初期段階でもうピヨピヨな状態だからこまっちゃうのよね
言語仕様固まった奴をさわって周辺そろえるの好きだけど、裸の言語育てるのがすきって人ってそんなにいないよねぇ?
>>365 お前は俺ですか?
VMだけじゃなく、クロスプラットフォームなライブラリも山盛り揃ってる。
IDEもイイッ!! GUIなんかNetBeansでぽいぽい部品置きゃコードできてる
(できてるコードはJavaだけど簡単に呼び出せるから問題ないね)。
せっかくの快適極楽な世界なのに、Oracleのやり方見てると、いつまで
この世界が続くかすげー不安。
かとって、ライブラリーがさっぱりなCommon Lispの世界にゃ戻りたくねーよ。
>>368 >Windowsプログラミング
ClojureじゃなくClozure CL使ってCFFI経由で
バリバリWindowsプログラミングがんばれ!!
374 :
368 :2010/09/22(水) 01:32:53
Clojure本買ってきた。 ネイティブWindowsプログラミング出来ないけど、 パフォーマンスが必要だったり、配布したりは当面しないから とりあえずこれ使ってみる。
言語仕様の安定性がウリだと思ってた
>>375 Oracle信者乙としかいえない今の状況に涙する
わりと飼い殺しするからなぁ、Sun買ったあとのjava.sun.comの扱いとかちょっと前までひどかったじゃろ?
買収したBEAのWebLogicやJRockitが利益になってるからSunも買収した訳で... MSみたいにOS(OEL, SunOS)+JVMでもっと儲けたいとは思ってるだろうけど
future を呼ぶと(最後に System/exit 呼ぶとかしないと)プログラムが終了しなくなるのですが、これそういうものなのでしょうか。 (Thread/ActiveCount)の値の変化を見ると future で作られた JVM の Thread が走り続けているのが原因のようなのですが。
380 :
デフォルトの名無しさん :2010/09/26(日) 12:46:29
1.3 Alpha 1 age
>>379 clojure単体でみればそんな馬鹿なってキモチになるかも知れないけどjvmの規定からはそれで正しいです
382 :
379 :2010/09/26(日) 13:45:21
>>381 さん、どうもありがとうございます。
futureの値が確定したら対応するJVMのThreadを終了してくれてもよいような気がするのですが
そうなっていないのは理由あっての意図的な仕様なのでしょうか、あるいは単なる実装上の都合?
leiningenのフォルダ構造に対応してライブラリのロードとかいっぺんにやってくれる開発環境ってありますか? 今はslimvを試用していたのですが、これだと編集中のソースしか評価できないぽい?のです。
なんでJVMで動く言語にしてしまったんだ。ネイティブなら最高な言語だったのに
>>385 それで今のjvmの動く環境全部で同じように動くならいいけど、どうせwin32はダメとかその逆ばっかりになるんじゃやっぱりイヤじゃない?
すいません。日本語利用に関して質問があります。
Windows + emacs23.2 + slime-20100404 でやってます。
日本語が含まれているファイル(UTF-8)を読み出します。
hoge.txt
============
1
2
3
4
あ
============
(slurp "hoge.txt") => "1\r\n2\r\n3\r\n4\r\n?\r\n"
すると「あ」の部分が文字化けで?で表示されてしまいます。
これをきちんと表示させるにはどのようにすればよいでしょうか。
(require 'slime)
(setq slime-net-coding-system 'utf-8-unix)
(slime-setup '(slime-repl))
と.emacsに書き、
>>56 を参考にELPAで取ってきたslime.elに
(setq slime-net-coding-system 'utf-8-unix)を入れてみましたが変化ありませんでした。
clojureというよりemacs,slimeについての質問になってしまいますが、
日本語を上手く使えている方がおりましたら是非アドバイスを下さい。
よろしくお願いいたします。
ちげーよ clojureのslurpがデフォルトのエンコードで読み込むからwindows上でutf-8をslurpで読ませるは (slurp "file.txt" "utf-8") と第二引数に文字コード入れないとダメってだけだ
ちなみにslimeつかってると user> (slurp _ の段階でminibufferに引数のリスト表示されないかな?
390 :
379 :2010/10/13(水) 05:27:57
futureの件はSystem/exit呼ばなくても、しばらく(手元の環境だと1-2分)放置しておけば
(Thread/ActiveCount)の値が減っていってプログラムが終了することに気付きました。
>>384 どうもありがとうございます。不勉強でよくわかっていないのですが、clojureでのスレッド
はJVMでのスレッドをスレッドプールする形で実装されているためclojureの字面上でのスレッ
ド終了はスレッドプールに該当するJVMのスレッドが戻されるだけなのでJVMのスレッド終了
とは直結しない、みたいなイメージでよいのでしょうか。
391 :
387 :2010/10/13(水) 07:24:06
>>388-389 ありがとうございます。
しかし(slurp "file.txt" "utf-8")としても
"1\r\n2\r\n3\r\n4\r\n??\n" と表示され文字化けされたままです。
文字コードを指定してもダメってことはemacs本体の問題でしょうか。
書き忘れてしまったのですがreplで数値やアルファベットは問題ないのですが
user> "あ"
と入力すると評価されず、ずっと待機状態になってしまいます。
無理矢理強制終了するしかないのですが、日本語の扱いがどうも変なようです。
>>391 すまんうちMeadowだから若干挙動ちがうかもしらん
393 :
387 :2010/10/15(金) 20:28:03
(use '[clojure.contrib.duck-streams]) (let [lines (line-seq (reader "data.txt")) output "output.txt"] (println lines) (write-lines output lines)) こうしてファイル読み込み+書き込みをやると日本語は正常通り出ました。 ただしprintlnでreplで表示される日本語は化けてしまいました。 replで日本語が扱えないのは痛いので何とかしたいところです…。
394 :
デフォルトの名無しさん :2010/10/19(火) 21:26:49
おい、末尾再帰可能なVM上で作りなおせよ。早急に。 JVMなんてクソ使うな。
.NET上にLispライクな言語って何か実装されてなかったっけ?
Schme.netなかったか?
去年からRCのまま
勢いでバーッと機能を実装するのは楽しいが 細かいバグ取りみたいのは全然楽しくないからなぁ
>>394 recurがそんな目障りか? trampolineがそんな不自然か?
再帰をlazy-seqで書き換えるのも楽しいじゃん。
それでもというなら…OpenJDKのDa Vinci Machineプロジェクトが
VMレベルで、末尾再帰や継続を使えるようにがんばってるから、
まぁ待て。そして、それらが使い物になったら、
>>394 自身が
好きなようにClojureを作り直すのだ!!
400 :
デフォルトの名無しさん :2010/10/21(木) 00:10:38
recurなんて使うくらいなら、もうforループでいいじゃんって感じ。
dalvik 上で使えるといーなー
402 :
デフォルトの名無しさん :2010/10/29(金) 07:39:24
1.3 Alpha 2 age
405 :
デフォルトの名無しさん :2010/11/08(月) 00:13:10
1.3 Alpha 3 age
clojure planet追ってるとClojure大会議 conjがあった後だからか、 開発者同士で会話に花が咲いたようでそこから派生した内容の記事、 振り返ってプロジェクトの生い立ちや意義、解説みたいな記事がいぱーい
408 :
デフォルトの名無しさん :2010/11/14(日) 19:13:27
オラクルのVMを基本的に前提としているのが残念過ぎる。 monoをメインにすればいいのに。
ClojureCLRってのもあるぞ。 いまのところ、VisualStudioがないとビルド出来ないと思うけど。 あとは、最適化したIR(アセンブリ?中間言語?)はいてくれないみないなのも。
411 :
デフォルトの名無しさん :2010/11/15(月) 22:36:48
2010/9/15までで1.2.xブランチとまってるから masterブランチは、JVM実装の1.3開発版を追っかけてるのかな
clojureの関数だけでclojureがコンパイル出来るのも目標にあるからjavaのAPI直接叩いてるコアライブラリは減ってきてるはず。 最近はshellやioまわりで依存してるライブラリ名にはjavaが入ってきてたりする
>>413 ソース見ると、clojureで書いてる部分も、
バリバリJavaのAPIラッパーなしで使ってるみたい。
なので、ClojureCLRへの移植は意識してない気がする。
417 :
デフォルトの名無しさん :2010/11/20(土) 14:12:24
clojure-crlってVS上で使えるの? 補完とか効く?
420 :
デフォルトの名無しさん :2010/11/20(土) 21:30:14
すばらしい
421 :
デフォルトの名無しさん :2010/11/21(日) 10:35:12
ごめん、基本的な質問なんだけど
JVMが不満という件について
・Oracleが信用できないという意味での不満なのか、その場合OpenJDKは問題を解決できないのか
・JVMの仕様に対する不満なのか、その場合
>>399 の挙げたDa Vinci Machineやその他のプロジェクトは問題を解決できないのか
どうか教えて欲しい
422 :
デフォルトの名無しさん :2010/11/21(日) 14:31:06
Oracleが信用できない
Oracleの買収に関わる部分と分けて分類した方がいいんだろうな ワンライナーやバッチ多用したいのに、起動がもっさりだよ派 - 大規模なVMで起動が重い - イメージファイルからの起動が出来ない あたりかな
424 :
デフォルトの名無しさん :2010/11/21(日) 15:15:22
Windowsメインだから、JVMなんて使いたくないよ派
>>421 単純にJavaに反感を持っている。
って人が多いみたい。
CLR版はうまくいかないんじゃないか。 今だかつてLisp系の言語で、 Windows派生版もまともに維持されたのは、 商用の処理系しかない。
428 :
デフォルトの名無しさん :2010/11/21(日) 17:36:24
商売ができるなら立派なもんだ。
【Good】 IronClojure 【Better】 Clojure# 【Best】 Visual Clojure# express
俺はどのプラットフォームでも動く点でjvm大好きなんだがなぁ どうせ起動したらslime と一緒にずっと居座るんだし。 CLRだとwinとmonoだけだっけ?、monoって使い物になる速度出るようになったの?
>>419 その手順通りにやってみたけど
6.) Open the vsClojure solution. で
「このバージョンのアプリケーションではサポートされないプロジェクトの種類(.csproj)です。」
と出て開けないんだけど、上手くビルド出来た人いる?
>>430 monoは、C#とCLRを使えないこともないですってレベル。
434 :
デフォルトの名無しさん :2010/11/21(日) 20:16:17
ありがとう、どちらの理由もあるんだな 個人的にはマクロやSTMのような言語の特徴と、移植性やJavaと互いを呼び出しあえるといったJVM由来の特徴 両方が融和しているのがClojureの魅力だと思う CLRへの移植が無意味だとは思わないが、どのVM実装でもJVMとCLRが自由に呼び出しあえるようにならない限り あまり嬉しくないというのが本音だ
436 :
デフォルトの名無しさん :2010/11/22(月) 00:10:12
Clojureは魅力的だが、Javaなんかに関わりたくない。 .NETのライブラリを使いたい。
.NETしつこく書いてるの一人だろw
ここまで全部俺の自演
仕事だと社内向け以外.netライブラリべったりってまだ結構少ないだろ? (俺の廻りだけかもしらんがinternet経由のだとまだjava関係の方が多いよ)
社内向け以外という括りがよく分からん。 例えばデスクトップアプリの土俵で.NetとJavaを比べたら、有意じゃないだろ。
JVMとCLRのどちらが優れているのかは知らないが ・Clojure on JVMで書いたコードが修正無しにClojure on CLRで動く ・Clojure on CLRで書いたコードが修正無しにClojure on JVMで動く これを実現できないとClojureが分裂してしまう、それが嫌なんだ つまりrequireはどちらの実装でも両方のライブラリを扱えて 標準ライブラリも2セットあって その他の部分でもインピーダンスミスマッチを起こさない そうじゃなきゃVMに押し付けたはずの「環境依存」が戻ってくる
分裂を心配する前に、普及を考えたほうがいいと思う。
443 :
デフォルトの名無しさん :2010/11/22(月) 07:53:48
どのくらい普及すればいいんだ? オライリーが本を出すくらい? 「皆さんご存知○○はなんとClojureで書かれています」と言えるくらい? マジキチ信者とマジキチアンチが付くくらい?
dmilterさんが可哀想 まあ真実だとおもうが
>>444 やりたい人が勝手にやるのは自由だからムダって言いきっちゃうのは酷いと思うぞ
ちゃんとやり遂げるならすばらしいことだと俺は思う
#つか.net環境は一度も使ったことないけどさすがに444の言い分は酷いと思う
オラクルのプロプラであるJVMに対応するほどの無駄はないだろ。 CLR対応が正解。
>>444 はリソースの分散を危惧してるんじゃね
FLOSSはいくら有意義でも意欲のあるかどうかが分かれ目だから
やりたい人がいるのは良いことだと思うがな
; ここは2chだからちょっとくらい非道い表現は気にしないようにすると楽
>>448 CLRの最も高品質な実装はプロプライエタリだし、JVMの標準的な実装はオープンソースだが
それとも標準化の話?
いや、JVMがオープンソースだというのは訂正する 将来は分からないが少なくとも現時点では完全ではない
452 :
デフォルトの名無しさん :2010/11/23(火) 00:54:56
ClojureでGUIソフト作るのってどうするのって、どうするのが一番手っ取り早い?
答えを待つ前にとっととプログラムを書くのが速い。
454 :
デフォルトの名無しさん :2010/11/23(火) 01:06:13
そんなことは聞いていない死ね。
456 :
デフォルトの名無しさん :2010/11/23(火) 02:13:21
GUIエディタみたいなのってある?
REPL立ち上げてSwing(じゃなくてもいいけど)を使う方がよくね
つまりSpin Upとかいうよく分からんことを考えなくてもなんとかなるようになったのか
測定せずにパフォーマンスの話をするのが愚かなのは承知で推測を言うが それはあっても無視できる程度じゃないかな>>コスト stringライブラリを使わずにJavaのメソッド読んだ方が桁違いに速いならコスト大きいかもしれないが むしろうまく設計すればよりClojureっぽいコードが書けて幸せになれる ; MLでも言われてるがJavaとのつなぎ目が滑らかすぎて「Javaのライブラリ呼べばいいや」と思ってしまう甘い罠
>>452-458 を読んで思ったんだがLispでいう……なんというか
・RAD環境
・WYSIWYG
・GUIビルダー
みたいなアプリケーションには興味があるな
特に、許容範囲内の綺麗なコードが出力できるのかとか
自分で書いたコードも壊さずに扱えるのかとか気になる
それとも他の言語のようなソースコードを生成するものではなく
もっとLispにあったやり方を考えるべきなのかな
465 :
デフォルトの名無しさん :2010/11/29(月) 21:27:18
>>464 自動生成部分のコードの可読性は気にするものじゃないよ。
Let Over Lambdaではfooを作る過程の試行錯誤を foo% foo%% (中略) foo←完成品 と表記してたけど Clojureではこう表記することが多い、って表記はある?
Java 7は出るのかな LibreOfficeみたいに開発者がOracleにキレてforkしないと出ないような気がする
>>470 ありがとう、割と近そうだな
ライブラリとVMが改良されればそれで十分なんだが
半分は冗談だけど
インタビューを出版のプレスリリースとして要約すると、Clojure Wayの本出しますかな。
コード入れると確かに4割引になるな。
475 :
デフォルトの名無しさん :2010/12/15(水) 02:51:42
1.3 Alpha 4 age
476 :
デフォルトの名無しさん :2010/12/15(水) 21:42:00
(AA略) Clojureのプロジェクトを開始する前に言っておくッ! おれは今やつの設計思想をほんのちょっぴりだが体験した い…いや…体験したというよりはまったく理解を超えていたのだが…… あ…ありのまま 今 起こった事を話すぜ! 『おれはClojureのコードを書いていたと 思ったらいつのまにかJavaのコードを書いていた』 な… 何を言ってるのか わからねーと思うが おれも何をされたのかわからなかった… 頭がどうにかなりそうだった… FFIだとかインラインコードだとか そんなチャチなもんじゃあ 断じてねえ もっとおもしろあぶないものの片鱗を味わったぜ…
>>447 それclojureやない、clojureの皮を被ったjavaや!
もしかして:Scalaを使うと聞いたのに蓋を開けたらvarの嵐 C++なのにテンプレートどころかクラスさえ使ってない
>>479 もしかして:辛そうで辛くないちょっと辛いScala
#一応書くけどからいじゃなくてつらいだからね!
>>481 Rって統計用のアレ?
折れちゃた人には悪いけど、必要な人には必須でも必要ない人の方が多くをしめるから国内Clojure好きで食指が動く人って確率的に少ないんじゃ?
利用者がライセンス程度でRから乗り換えるわけなかろう。
Rもマルチコア対応だとか、もっと広いメモリ空間使えるように弄ってるひといるから、ライセンスは興味あるテーマかもしれんが、競合他社はみんな商用ライセンスだし… てかこの業界だとプログラムよりデータのが大事だからGPLで問題ないだろ。基本本体はいじらんし。
R とかは、「これ、計算正しいの?」と聞かれたときに、「R の……という関 数を使ってます。……先生も論文で使ってました。」と言えるのも重要だと思う。
コントリビュータが一人のは入ってないらしいけれど、 Incanterや、ztellmanのライブラリは、異色なんだなと思った。
Clojureって自前でリーダマクロを定義できないらしいけど、 デバッグプリント用のリーダマクロはないのかな? Gaucheでいうところの#?=みたいなやつ。
494 :
デフォルトの名無しさん :2011/02/27(日) 02:33:54.96
ClojureはCLRに開発リソースを集中して仕切りなおしたほうがいい。 JavaVMなんて誰も使いたくない。だから流行らない。
495 :
デフォルトの名無しさん :2011/02/27(日) 07:24:44.29
オレがClojureに興味を持ったのはJavaVMだからなんだが・・・
Java, Scala, Clojure, Groovy, 動的型付け(ネイティブから移植) C#, F#, Boo, ClojureCLR, 動的型付け(ネイティブから移植)
>>494 2chのスレで粘着するくらいならcontributeした方がいい
498 :
デフォルトの名無しさん :2011/03/10(木) 10:05:56.24
代入のやり方がわからない!! setf使えないの???
入門読め
500 :
デフォルトの名無しさん :2011/03/10(木) 12:43:44.63
>>499 ぐぐってもでてこないんです!
そんなこといわないでおしえてください!
>>499 CommonLisp的な代入は無い
ref,ref-setで構造体にアクセスはできるからこれについてぐぐれ
503 :
デフォルトの名無しさん :2011/03/10(木) 14:32:11.58
504 :
デフォルトの名無しさん :2011/03/10(木) 14:59:35.83
505 :
デフォルトの名無しさん :2011/03/10(木) 15:48:50.96
ごめん解決した。 set! やなくて set-property! だった
『Clojureの質問だと思ったらClojureじゃなかった』 な…何を言ってるのかわからねーと思うが
>>504 Web上には日本語のチュートリアルはないみたいなので本を読むことをおすすめします。
ちなみに何をやりたいのかは分かりませんが、そのコードはあまりよくないです。
例示するのが多いかな それで、問題ない気がしてきた
それなら
>>2 の文書のコードだけ拾って読んでも分かるんじゃないの?
JDK付属のツールも結構使える Clojureのデバッグというか内部を覗く作業は $が含まれる名前が頻繁に出てきて、慣れるまで少し戸惑う
だれかRubinius上で動くClojureライクなLispつくってくれないかなあ
>>513 期待してるよ
Rubiniusは日本語の方のGC本で取り上げられてたからちょっと興味はある
TCOがあるのならRubinius VM上にLispを実装するのも悪くないと思うがどうなんだろう
Ruby好きでもない限り、わざわざそんなマイナーなVM選ばないだろ。
RubiniusってLLVMじゃないの? 独自VMダッケ?
バックエンドがLLVMなだけど、独自VM命令セット。 Rubyとオブジェクト/クラスモデルが違う言語を乗せるのは困難。
ところで、1.3 alpha 6はもう試した?
未だ1.2すら触ってないよ そろそろ1.2にいくべかな
1.2はメンテナンスリリースの1.2.1が予定されてるからそれを待ってもいい もちろん先に移行を済ませて1.2.1リリース時にすぐ更新できるようにしてもいい
The Joy of Clojureの紙版ももうすぐ発売されるらしい Lisp is Not an Acceptable LispのSteve Yeggeが序文を書いたのはなんか意外 それともClojure is an Acceptable Lispなんだろうか
clojureってLispの皮かぶってるけど実態はLispじゃないよね
Lispとはなんぞや
何をもって実態がLispじゃないと言ってるの リーダーマクロのユーザ定義を制限してる所? 副作用を隔離しようとしている所? 変数と関数の名前空間が同じ所? carとcdrがどっか行った所? 下の言語が剥き出しになってる所? あとは……
526 :
デフォルトの名無しさん :2011/03/30(水) 00:21:31.66
JavaVMがメインってところで終わってる。 .NETにしておけばこんな事にはならなかった。
サーバー側のプログラムを書くんだったらVMがなんだってOKでしょ。 CLR版だって作ってるみたいだし、気長に待てばいいじゃない。
いつもの.NET厨だから構っちゃダメ
>>523 そうだね。lispの皮をかぶってるね。それをひんむくと、なかから
やや黒ずんだjavaが出てくる。いや俺はhaskellを尊敬してるんだ
という声も聞こえてくる。そうゆう言語だ。
lispはS式
clojure=JVM+不変データ構造+S式
533 :
デフォルトの名無しさん :2011/04/30(土) 02:13:11.23
ライブラリレベルで取り込めるような新機能だと存在意義が怪しくなるぞ Clojureが失速したのも他の言語が真似できるような機能しかなかったからだろ
leiningenのwindows版ができてどこでもclojureできるようになってうれしい
俺はLeiningenよりCakeの方が……どっちにしろWindowsでも使えるけど
leiningenのwindows版 :repositories で標準外のリポジトリ指定すると落ちやがる
>>535 cakeはwindwos7の64bitだとインストールでチョロく挫折できる
539 :
536 :2011/05/01(日) 10:26:26.04
いくつかのプラットフォームで試した結果leinningenのバージョンで落ちる落ちないが確定した lein か lein.bat の LEIN_VERSIONが1.3.x だと:repositoryで別リポジトリ指定できた 今試したのは1.3.1が入れられている環境だと動いたので他のleinのバージョンを書き換えてself-installして試したのだけど githubの1.6系も動かないので結構泣ける。 他の人でこの問題にぶちあたった人いる? #皆mvn installで我慢してんのかな?
ディレクトリ指定について機能毎に初めて使った人が発見しているようなイメージが… windowsのディレクトリ名統一的に扱えてないのかな。 githubソースの該当箇所探せば、間違え見つかるんだろうけど…
>>540 539の事?
ubuntuでもダメだったんよ
通ったのsolarisとosxだけだったのでそのleinのバージョンに会わせたらwin,ubuntuどっちも通ったの
全体的な問題なのか。 そのバージョンだけOKって、一度治って、その後デグレしてんのかな?
>>543 全部確認してないけど
1.5.2(win32用のzipに入ってる奴)と1.6.0(githubからcloneしてbuildした奴)はダメだったLEIN_VERSIONの値
clojarsでJSONライブラリ探したらもの凄い数があって困った 使ったことある人でおすすめのってあるかな?
Clojureは終わったコンテンツなのか
547 :
デフォルトの名無しさん :2011/05/03(火) 23:06:07.11
Clojureはコンテンツなの?
そもそも終わる前に始まったの?
Clojureのシンボルである太極は全ての物事の始まりと終わりを含む。 始まりでもあるし終わりでもある。
Clojureもっと流行ってくれないかなー どないしたもんか
試す前にインスコがめんどい
実用性無さ過ぎる。
しらんかった、ありがと
>>553 1.2.0にしてみたLeiningenなのでインストールはチョロかった
contrib.jsonで十分だとわかってなんていままで1.1から1.2へ自分のコード変更するほうが楽っぽい。
leiningenが逆にわからなかった clojureそのものを機動する事には成功した
非Lisperな上司にLispの採用を承諾させる方法:『Lisp』と『S式』という単語を使わずにLispの評価を行う
>>559 納品はjarですか?
だけで通った緩いIT会社万歳な俺
メンテツールもcompojurでweb経由とかにしてるのもあるが、その入り口がjettyなので無問題だった
引き継ぎ関係資料も全部書いてだしたらそのまま通ってしまったのでびっくりしている、と言うのもプロトタイプ作成が数日ですんでしまったせいでもある
巨大プロジェクトだとダメでも中小規模ならインタラクティブ開発でjar納品できる仕事だと通りやすいかもしれない
なにしろ全部javaで書いたら倍じゃすまない人的コストだったんで。
どこかswingをバリバリに使ってるGUIなアプリのサンプルコードありませんか javaのを書き直そうとしたら難しかった 例えばimportでワイルドカード使ってるのをclojureでは実名で全て登録してたり clojureやる為にjavaまでマスターするんではなく clojure+swing or awtで終わるような ないか…
>>562 STMと定数性のために主にweb関係が発達してるよね、jvmで動くのでgoogleのサーバで使えるのも大きいみたいだけど。
実際スタンドアローン系はあんまりないし
>>562 githubにあるニコ生アラートアプリはClojureで書かれている。
>>564 横からだけどサンクス
JavaとのinteropをSwingで練習しはじめたところだったんだ
567 :
562 :2011/05/07(土) 22:49:54.93
参考にします 有難うございました
@functional2ch ってなんぞ
ツイッターで勝手につけたタグっぽい
こういう拡張もあるんだな。
https://github.com/david-mcneil/defrecord2 Enhance clojure records to:
- print in an eval'able form
- provide clojure function as constructor
- accept named parameters (maps) in constructor
- participate in pre/post walk multi-method
David McNeil August 2010
Update May 2011:
- record zipper support
- record matchure support
- dissoc2 preserves record type
- universal record constructor
- defined record? predicate
571 :
デフォルトの名無しさん :2011/05/11(水) 00:36:24.31
JVMと心中か。残念だな。
clojureは海外では流行っているの?
流行してない
(source fashion?)
プログラミングClojureって本を読んでたら、JVMは動作が速いから良いって書いてあったけど、いつの間にか世間はそんな認識になってのか
>>575 JVMの実行速度は十分はやいぞ
遅いと感じるのは起動時のロードのせい
BoehmGCだった、、、
>>575 遅かったらサーバーサイドで使われるわけないって
phpやrubyは使われてるじゃん
>>579 いや、遅くてもいいからメモリリークなどで落ちないって理由で使われ始めたんだけど・・・
今はかなり本格的なアクセス数多いサイトでも使われてるしな。 phpやrubyは単純なサイトばかりでしょ。 というかrubyはもうほとんどないんじゃ…on railsが移植されてしまったし。
clojureで作ったclassファイルをTomcatで使ってる人っていますか?
compojure使えば簡単にwarが作れる。
うっワー!!
>>585 だじゃれかい
陣営間で仲が悪いのかとおもったじゃないか
Tomcatでサーブレットが動いてるから、そこでclojureで作ったサーブレットが動かせるか試したい 動くなら、順次、clojureサーブレットに置き換えていきたい
>>588 サーブレットengineがtomcatならcompojureを使ってleiningen作ったwarがそのまま使える
tomcatを使いたくないって話ならcompojure+jettyのstandalone.jarをleiningenのuberjarでそのまま実行可能サーブレットにできるよ
サーブレット作ってみたけど、java と比べて特にコードが短くなるわけじゃないのね write.println の部分と例外処理の部分が逆に見づらくなった
これ、LISPよりもSchemeをベースにした方が良かったと思う
オライリーに出させたら大したもんっすよ
2chにスレが立ったら四流 日本語訳がおかしいA5サイズの本が出たら三流 オライリーから本が出たら二流 オライリーから日本語の本が出たら一流
>>598 おらいリーの本の翻訳ってだれでも立候補すればやらせてもらえるのかな?
おれやっちゃおうかな?英検2級もってるし。
オライリージャパンがまだ誰かに声をかけてないなら問い合わせることはできるだろうけど 自著か翻訳で既に何冊か書いてるとか、Clojureのコミッタとか、FLOSSのプロダクトの作者とか そういう「成果が他の人から見られる」状態でないと難しいかもしれんね
>>598 何をもって一流と言っているのかわからんが、広く受け入れられているという意味では
「最強○○の××をこれ一冊でマスター!」的な首を傾げたくなるあおり文がついた
翻訳じゃない本が何冊か出る所までが一セットだと思う
>>600 そこまで求められないよ。翻訳したことあるけど。
ただ監訳者をつけられる/つけてくれる可能性はある。
昔オライリーの翻訳でトライアルに落ちたことがある。 嫌な思い出だ。
どこが悪かったのか聞けるから貴重な体験じゃね?
マなら翻訳本買うな
>>605 そういうくだらないオナニー発言はマ板でして。
607 :
uy :2011/05/15(日) 21:40:49.01
マ板にもくんな 電波お花畑いけ
608 :
デフォルトの名無しさん :2011/05/15(日) 21:49:15.64
1ch.tvでやれ
>>608 懐かしいURLを見た
どうでもいいけど#{}に出し入れして有無をチェックするコードはjava.util.HashSet使う方があきらかに速くて泣ける
loop->recurでPersistentHashSetを何度も作るよりmutableなjava.utilHashSetの方が軽いのはしょうがないけど、やっぱり泣ける
Java触ったことがなくても、Clojureなら、GUIアプリが作れるんじゃないかな ってところまでいければイイね。って感じです。
すっとCommonLispばっかりだったんだけぢ、Leiningen楽すぎてClojure大好きになってしまった 昔先輩に借りたHP電卓でHP以外使えない体にされたときみたいな感じだ
これ、ホントにLispか?
614 :
デフォルトの名無しさん :2011/05/16(月) 20:12:06.76
何故?
その言葉はNu辺りにこそ相応しいな
>>609 URLじゃなくて単なるホスト名じゃん…
Javaとの連携を言い訳にしておかしな構文を導入するくらいなら、はじめからLISPだなんて言わなければよかった
えーと…
619 :
デフォルトの名無しさん :2011/05/17(火) 00:31:38.16
LISPコンプレックスが紛れ込んでるな
.お気に入り..vimやEmacsを「使いこなす」なんてやっていいのは20世紀までだろ
ttp://togetter.com/li/130686 >Software Design のvim/Emacs特集をきっかけとした、生越さん、くさかべさんらによる> vi/Emacs 談議です。
621 :
デフォルトの名無しさん :2011/05/17(火) 00:49:41.24
怖がりすぎー:)
どんなにおかしな構文でも、それが S 式ならどうにかなる。
オゴってこんなにバカだったっけ?
624 :
デフォルトの名無しさん :2011/05/17(火) 00:55:44.03
年を取ったんだよ
>>620 viやemacsに例えて、自分たちの事を語ってるわけですね。
おごは昔からちょっと変なこと言うの好きな奴だったよ。 スーパーアスキーとかLinux Japanとかlinux-usersとか。
1.3 Alpha 7
https://gist.github.com/3048d90328d3118583a4 >>589 の返信にあったコード実行してみたら、clojure 1.2.1と1.3.0-alpha7ではほぼ変わらないけど、HashMapの動作速度が32bitと64bitで違った。@JRE 1.6.0_24 osx10.6.7 C2D2.4GHz 4GB
lein new bench && cd bench
rm src/bench/core.clj && vim project.clj && vim src/bench.clj
lein deps && lein clean && lein compile && lein repl
(defproject bench "1.0.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.2.1"]]
:main bench
;:aot [bench]
:jvm-opts ["-d32" "-server"])
bench=> (atom-bench)
"Elapsed time: 22582.318 msecs"
bench=> (hash-bench)
"Elapsed time: 19815.965 msecs"
(defproject bench "1.0.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.2.1"]]
:main bench
;:aot [bench]
:jvm-opts ["-d64" "-server"])
bench=> (atom-bench)
"Elapsed time: 21286.149 msecs"
bench=> (hash-bench)
"Elapsed time: 83514.001 msecs"
MLに送ってくれ
630 :
デフォルトの名無しさん :2011/05/19(木) 01:45:35.74
CLR版のclojureっておまえら試してhatena blogとかに書いたりしないの?
Windows7では、32bitと64bitでメモリの使用量が2倍近く違う以外差はなかった。 i7 2.8GHz(4core/HT OFF) RAM 8.0GB 32bit bench=> (atom-bench) "Elapsed time: 8136.5177 msecs" bench=> (hash-bench) "Elapsed time: 19145.019634 msecs" 64bit bench=> (atom-bench) "Elapsed time: 7236.694997 msecs" bench=> (hash-bench) "Elapsed time: 19267.321383 msecs"
contribも大部分がJAVA呼び出してるので、ClojureCLR向けには全く手がつけられてない。
>>630 MONOで実用稼働してくれないとWin以外結局動かないので苦労する甲斐が見いだせないから使ってない
もちょっとプロジェクトが進んでくれたら惜しまず使うかもしれないが、プラットフォームがjavaとかぶるし、javaオブジェクト使ったコードも結構作るから魅力感じないんだよね
自分はASP.Netとかのプロジェクトで使えるときが来るまでは手ださないと思う。
.NET環境ではF#あるからそこまではって人もいるな。
初心者なんですが構造体に関数を持たせることはできないんですよね?
record/protocol/typeについて調べるといい
ありがとうございます。調べてきます。
F#ってML系じゃなかった?
>>639 ML系、Lisp族だとL#ってのが居るけどこれどうなったんだろう
641 :
デフォルトの名無しさん :2011/05/21(土) 10:45:39.76
IronSchemeがある
leiningenってwin7だと動くけどXPだと不具合でるんだけど何が原因なんだろう
フォルダ名とか?
関数型言語って、カプセル化して実装の詳細を隠蔽する考えがあまりないよね? 関数にhashmap渡して処理するにも、 どういう構造のhashmap渡せばいいか知らないといけない。 こういうところはCに似てると思う。 これはコード書いてみて困らない? 関数の外部が実装の詳細に引きずられ過ぎる面はない?
Haskellのtype classほど強力な機構を持っている言語は他にない。 Java, C#系の言語のinterface関連の機能が超充実。
>>649 関数がどんなデータを入出力するかということと、それをどうやって処理しているかということは関係ないでしょ。
大体、関数型じゃなくても渡したりもらったりするデータがどんなものなのかわからなかったら何もできない。
>>651 OOならPersonクラスを要求されれば
Personの内部は知らなくてもそのインスタンス渡すだけでいいでしょ。
Clojureみたいにハッシュマップに情報詰め込んだのを渡すスタイル(よくやる)は
どういう構造のデータを渡すか意識する必要あるよね?
datatypeも値を隠蔽しないし。
ADTを知らないとかか
>>652 そんなんでよければdefprotocol,deftypeで事足りる
状態の隠蔽なら、基本的にデータがイミュータブルだからそもそも必要ないし、実装とインターフェースの話なら、関数型がどうのというより、静的型チェックがあるかどうかって話なんでないの。
型に関するエラーを実行時まで遅延できるかどうかと
インターフェースと実装を分離できるかどうかは直交する
Clojureは
>>652 、Haskellは
>>650 、F#はC#と同程度にはそういうことができるだろう
で、OK?
>>649 というか、Cでも構造体への操作はヘッダに記述された関数を通して行って
どういうフィールドを持つのかを利用者は知らなくてもいいようにする
ってスタイルはあるよな
pimpl使えばCでも完全に実装部をライブラリの中に閉じ込められるからね。
>関数内部でハッシュマップからデータを取り出す時のキー名を変更したら、 >外部も変更しないといけないでしょ。 それ普通のオブジェクト指向だとコンパイルとおらねぇってことじゃんよ
660 :
デフォルトの名無しさん :2011/06/11(土) 17:48:14.67
1.2.1 age
>>659 >>658 の言いたいのは、OOであればデータと操作は一緒に提供されているからユーザーは内部の変更を気にする必要がないということだと思う。
確かにそうだけれど、作る側からすればどちらにしても同じこと。
>>661 データ生成をOO的に扱うなら普通は(make-foo bar baz)みたいな生成関数作ると思うが?
それを操作関数側のキーだけ書き換えるとか言われたら
>>659 になると言う事じゃないのか?
663 :
662 :2011/06/11(土) 18:56:37.40
追記 生のhashmapデータを直接書くことなんてdbのコネクションパラメータみたいな外部から与える物くらじゃね?
Clojureではありとあらゆるところで使われてるよ。
ClerやSchemerが見たら目をむきそうだな
CLでも考えが固まってない時にまず属性リストとかで書いてみて 良さそうだったら操作をラップしたりクラスにすることはある Clojureの場合、protocolやtypeが1.2で導入された(例えばpcljは1.1リリース前)から 今は知ってる人は使うレベルだけど、浸透したらシーケンスとの使い分けも定着するだろう キーや順序に特殊な意味があるシーケンスの操作をラップするのは 上で出た構造体の詳細を隠すのと同じで、やらずにルーズなコードも書けるって話 やるのを妨げる理由は特にない
ある意味定点観測的でオフィシャルなインタビューだから、 翻訳サイトに載せてもらいたいな。 infoqに英語サイトに要約が載って その後翻訳されそうな記事っぽいけど。 開発サイトも少し翻訳すれば 雰囲気分かって良いんだろうな〜
Lightning Fast Clojure
http://www.oscon.com/oscon2011/public/schedule/detail/20020 Aaron Bedra (Relevance, Inc.)
1:40pm Wednesday, 07/27/2011
- Profiling with YourKit
- Using Clojure’s built in reflection warning system
- Refactoring functions with poor running time complexity
ボトルネック(速度)のデバッグの公演、面白そう。
671 :
デフォルトの名無しさん :2011/06/13(月) 00:04:37.72
いよいよJVM切り捨てて、.NETに一本化か。
Scalaの構文糖衣は分かり辛いのに、Clojureなら許せてしまう不思議。
前置構文は人を選ぶけど、構文糖衣は特に想像を裏切るものじゃないと思う リスト内包表記は他の言語とは順番が違うが、個人的には [[x, y] for x in range(n) for y in range(n) if x != y](Python。Haskellも順序は同じ) は for x in range(n) for y in range(n) if x != y を読んでから [x, y] に戻ってくるのに対して (for [x (range n) y (range n) :when (not= x y)] [x y]) は単に頭から読んでいけるから読みやすく感じる 英語圏の人にはより英文っぽいPythonの方が好きな人も多いらしくて 「リスト内包表記についてはPythonの方が先を行ってるな」って意見を読んだことがあるけど
clojureCLRは開発進んでるのかな? MicrosoftがL#だしてくれてもいいんだかが…
CinCが進まないと各バックエンドのdiffが大きくて困る ClojureでなくていいならIronSchemeとかL#とかDotLispとかあったと思うけど IronScheme以外は最近活動してないような気がする
JVMで使えば何の問題もない。
CInCも移植が目的では無いと思う
おお、そうなのか
AWS Beanstalk CloudBees @run (旧stax) Google Appengine (ほかにIaaS)とかもあるから、やってみたどまりなのかな?
HerokuのClojureスタックはJARをアップロードするのではなく Rails同様にソースコードのリポジトリをpushして配置するようだな Leiningenでビルドできるようになっていないといけないが
685 :
デフォルトの名無しさん :2011/06/16(木) 14:43:26.97
686 :
デフォルトの名無しさん :2011/06/16(木) 15:02:39.27
ちげー 6/20まで絶賛投票受付中だった。
>688 If Clojure disappeared tomorrow, what language(s) might you use as a "replacement"? 拒否する!とか思った。 今実用中の一番お気に入り言語なんだもの。 CLとかもFFI使えばライブラリを使えるけど、FFIは正直めんどくさいし、間違えるとチョロく飛ぶし java資産そのまま使えるなんてうれしすぎてもう他のLispにもどれん
>>690 オライリーのガイドライン、初めて読んだけど面白いな
私たちはこういう本を望みません:
我が社の既刊と著しく重複する本
巨大なユーザベースを持たない独占的な技術の本
オープンソースであっても、非常に小規模(個人的、初期)な製品の本
その品質の高さにも関わらずほとんど売れなかった本がある分野の本
(良い本が以前ほとんど売れなかった分野(例えばLISP、LaTeX、Webラーニング)の場合は
あなたの提案を明確にするためにより高い要求が課せられます。
なぜその分野への関心が再燃しているのか、もしくはなぜあなたのアプローチが
廃れた分野にもかかわらず関心を刺激するのかを私たちが納得するようにしてください)
他の出版社が却下した本の大半
ラフカット版ポチってきた
694 :
デフォルトの名無しさん :2011/06/17(金) 19:37:21.96
そっちってcontrib.*以下だけだよな? core.logicみたいな新しい名前空間のリポジトリは 1.3 Alpha 4以降もコミットされてるし
builg.clojure.orgやclojars入れない場合の話なのか?
Lispじゃ今一番熱いがjava的にはそうでもないのかねぇ 最近実務で使って凄い便利なんだよね、REPLで開発するとこんなに楽なんだと痛感する(slimeの関与もでかいけどさ)
704 :
デフォルトの名無しさん :2011/06/24(金) 23:19:42.59
早くJava何かと縁を切れ。
>>704 javaのライブラリが使えるのが魅力なのに何で縁きらんといかんのだ?
論理的に説明してもらいたい
REPLっていっても移行しやすいのは、Scalaだよね。 Clojureは、やはりどこかでS式のレクチャー受けてないと、 馴染みにくいのではと想像する。 最近の大学の情報系でも必修ではML/Haskell/F#が多いらしいし。
型推論とタイプマッチング使う体系があれば、 新しく覚える言語として勧めやすいとおもう。 S式は利点として置いておくとして。
ScalaのREPLを使ったことがある? あの完成度はひどいよ^^;
REPL単体じゃどれもつらい Clojureはslimeのサポートがあるから良いのだと思う、これがあると事実上のIDE統合環境だもの ところでNBかEclipse+Clojureの環境の人って居る?
counterclockwiseとeclispseは 印象としてClojureの動的言語という特徴を 生かしきれてない。EClipseはやっぱり性的片付け言語向けなんだろうな。
Slimeでエラーからの途中復帰のしかたがわからんのだが、もしかしてミリ?
性的言語
sexp
716 :
デフォルトの名無しさん :2011/07/05(火) 07:46:20.80
If you would like to get your story on this page, send an email with a brief (one paragraph) description of how you've used Clojure to clojure-advocacy@クロージャ.コム. Optionally, send along an image and a link that we can post alongside the description. だと。
>>719 三番目のBackTypeは昨日か一昨日にTwitter社が買収したスタートアップだな
Y Combinatorも支援してたという
あら、買収されたのね。 Twitterの分析が中心だったから、より良い広告条件探して提示するのに使われるのかな。 中の人は、Twitterの分析だけに飽きたらまた新しい分析にフォーカスした 会社起こしてほしいな。
727 :
デフォルトの名無しさん :2011/07/08(金) 11:52:31.03
javaなんてもういいよ。
??
>>726 そりゃするでしょ。誰か必ずやると思う。
groovyとscalaは166y(Fork/Join)使えるようになってるのに、clojureは寝かせてるんだな。
jsr166y.jarを使うプロトタイプならclojure.parallelにあったと思う
JSR166yをclojureメインラインのオプションにしてない理由は、 clojureメーリスに載ってた気がする。
このwikiに1.2と1.3のチェンジログの翻訳もあったらいいよな。
>>719 銀行: citi(用途不明), banksimple
クオンツ取引: pico
価格決定(セール・保険): ruma, weatherbill
航空システム(遅延解析): FlightCaster(next jump)
計算生物学(分子生物医学): マックスプランク研究所
リアルタイムweb解析
(インフラ): akamai
(ソーシャル): backtype(twitter), appvise, compass
(セマンティック): revelytix
その他: コンサル、ゲーム、サイト作成、webサービス、レコメンド
事例分けしたら、リアルタイム系の銀行、トレード、データ解析とWebサービスからHPCな科学計算まで結構多様だった。
Matzは『言語設計者たちが考えること』でもClojureに軽く触れたけど、その時もどちらかと言えば誉めてたし
そのインタビューでもNode.jsやClojureを気に入ってるように書かれてるから問題ないと思う
今回の件でHerokuが注目されて「RubyとNode.jsは知ってるが、一緒に並んでるClojureってなんだ?」と興味を持つ人もいるんじゃないかな
俺はそのニュース自体がどうこうというよりは
http://blog.heroku.com/archives/2011/7/12/matz_joins_heroku_japanese/ の画像が顔写真じゃなくて笑った
ClojureはRelevance社がClojure/coreを通してスポンサーになってるけど、Matzへのインタビューを見ると有り難い事なんだなと思う
これ、Herokuの名刺だよねw 取引先に出すのは恥ずかしいw
>>737 > いろいろなJVMで、clojure1.2.1動かしてみた。
どんなベンチやったかくらいか書けよw
2011 Clojure利用調査結果がきましたよ。
http://cemerick.com/2011/07/11/results-of-the-2011-state-of-clojure-survey/ ・主な利用用途は?(複数)
web開発 62, 算術/データ解析 42, NoSQL 27, BigData 17, RDBMS 17
・clojure他のメイン言語は?(ひとつ)
java 31 , ruby 16, python 16, C# 7, common lisp 5
・clojureが明日消滅したら、変わりに何を使う?(複数)
scala 39, haskell 36, common lisp 34, scheme 24
ほか、clojureへの不満など諸々あり。
(もしかすると仕事も)メインにruby,pythonの人の割合高いんだね。
あとは、haskellへの親近感が高くて結構ブレイク前なのかなとおもったり。
744 :
デフォルトの名無しさん :2011/07/15(金) 10:03:08.28
おれもhaskell好きだもん。common lispとclojureとhaskellだけでいい。
今週のNY Clojure Meetupはwktkらしい
clojurescript きたな
いきなり英語であるベンチャーからメールが来てた。どうやって 俺を見っけたのかしらん。 ring+compojureを使ってるみたいだが、俺は使ったことがない。 使ってると表明してるところじゃなかったから、案外裏で使おうと してるベンチャーは多いんじゃないかとも思った。 英語のブログやgithubを作ってれば、clojureで仕事したい人は 寄ってくるんじゃないか?みんな頑張って英文ブログをすればいいよ。
753 :
デフォルトの名無しさん :2011/07/23(土) 11:35:31.30
いまは寄付を受け付けてないんじゃなかったっけ? なんかわがままな顧客に悩まされた みたいな話が出て?
寄付?金銭の寄付のことか? Contributor Agreement(貢献者同意書)はパッチを送る際に必要な 「著作権を自分で保持したまま、プロジェクトに自分の貢献に対する一定の権利を許諾する」 書類のことだから、金銭の寄付とはあまり関係がないと思うんだが……それともCAの受理が止まったのか?
>>752 日本のプログラマって会話で損してる人おおいよ、自分みたいなカタコトの英語でも海外の仕事請け負う事あるから一度飛び出せばいいとおもう。
#現場でもっとカタコトのシナ人が一番意思疎通楽(漢字スゲー!)ってのも笑い話だけど
>>755 台湾の人も大陸の人も日本と違う感じの漢字じゃなかったかと思っていたのですが、そんなに困らないんですねえ。漢字すげえ。
757 :
752 :2011/07/24(日) 09:05:20.52
>>755 英語の読み書き自体は得意ではないがひどく苦手なわけでもない
OSSに参加しようと思ったら、Anthyみたいな日本語話者が対象のプロジェクトや
Rubyみたいな日本人がコアチームに多いプロジェクト以外は基本的に英語だしな
ただ、日本語でさえブログ書かないのに英文ブログは重たい
少なくともソースコードのコメントは英語で分かるように書くことから 始めればいいよ。プログラムを書くときは日本語を捨ててね。
コメントは必要がない限り英語で書くもんじゃないのか 頻繁にIMを切り替えるのめんどくさいし
You should write your comments in English when you post your codes to github.com . This sns provides a good way to make opportunities getting good jobs throughout the globe.
>>760 I'm writing comments in English wherever possible, since switching the input method is an overhead of coding.
It's not straightforward but I think it simply represents my thought.
Not under special needs, We used to write out comment text in English. Switching input methods frequently is troublesome.
もし英語のブログをするなら、wordpress.comをオススメしておく。 最近、syntaxhighlightに対応したから。(clojure未対応だが。)
ああ、そう
>>765 意味ないじゃないか〜!
コードはgithubしかだめぽ?
Pygmentsを使えるブログはないのかと思ったが、JekyllがPygmentsを呼び出せるのか ブログ管理ソフトウェアというよりはHTMLを出力するフィルタだが、データベースにあれこれ入れないのは少し面白い
チラ裏ですまんが、これ使って開発してるとなんか癖になる。 やめられん。 寝る間も惜しいくらい楽しい。
>>771 それはなぁ。。。アルゴリズム以外のくだらないところをプログラミング
する必要が少ないからだ 難しいことをこねくり回しているよりシンプル
だからな。
>>772 外界とのやりとりが少ないというように聞こえる。
実際はどうなの?
外界とやり取りすることを強く意識した言語
>>773 外界とやりとりするところをdosyncで囲うと例外飛ぶのですごく助かる、あとslimeのおかげでコードをテストしながら書けてうれしい。
leiningenでtestもすぐかけるし。
Visual Age for Javaとかsmalltalkみたいにコード断片をコンパイルせずにチェックできるのがありがたいんだと思う>>Slime
実は、leiningenよりcakeのほうがストレスがたまらない。 あまり知られてないようだけど、cakeはバックグラウンドで 動いてくれるから、一回起動したら、lein replより速く動く 当然、lein testも速い。cake swank としてcake replとすれば、 swankサーバーとコマンドラインからのreplが共有出来たりする。 お試しあれ
lein test -> cake test
>>779 興味深いが完成までじっと見守る俺
emacsenは業の深い生き物なんだ
OracleのページでJDK7の配布はじまった。 あわせるような雰囲気のParブランチ統合はじめるんだろうか? JDK6のバックポートも大して変わらないだろうから、作業的には1.3との差を埋めるのが大きいのかな?
当面は切り捨てられんでしょ。<5,6
ClojureScript launched
InfoQの和訳は時々文の繋がりが分からなくなって原文を見に行く羽目になる 訳者によって違うのかな
twitterまでclojure を活用し始めたみたいね。
scalaもhaskellも複雑すぎて文法がわからない
複雑なのと難しいのとは違うぞ
少し前に話題になった、ClojureのSTMは遅くてカスっていうのは本当のことなんですか?
>>796 自分では確認してないからコメントできないけど、あのブログの
プログラムの書き方はlisp系のものではないなと思った。
やはりClojureを使うんだったら、標準のコーディングにしてもらいたいと思ったかな。
そもそもSTMって、もともと書き込みが10-100倍とか遅いので、書き込みが50%ならシングルでも5-50倍遅くなる。 DBと一緒(?)だね。 mapreduceみたいに、書き込みはスレッド分散して集計するような設計する方がいいんだと思う。 そういう設計が記事かいた人のWebアプリに向いてないのかわからないけど。
波括弧とセミコロンの言語によくある括弧の閉じ方、なんて呼べば良いんだろう? 呼び方は分からないがあのスタイルで書いたSchemeコードをSRFIで一度見た
今月のPragPubは、CoffeScriptとClojureScriptか、 そんなに界隈広くないんだろうけど、すごい勢いで広まったね
PragPubは先月がClojure特集だったからちょうど取り上げやすかったんじゃない? なかったらCoffeeScriptだけとか、何か別のものを代わりに入れてたはず
JVM言語だろうがCLI言語だろうが基盤の中心グループと関連の強い言語がプライマリなのは当たり前 LLVMにとってのClang、ParrotにとってのRakudoと同じ Apacheのドキュメントがどうこうというのもよく分からない GroovyのライブラリをリリースすればGroovyの名が載るだろうし、ScalaのツールをリリースすればScalaの名が載るだろう
GroovyってClojureマイナー感強いですよね
いみふ
806 :
デフォルトの名無しさん :2011/08/07(日) 23:59:12.44
JVMなんかを使ってる限り普及は無理だろうな。 よく出来た言語仕様だけにもったいない。 早くJVMは切り捨てて、CLRに特化して欲しい。
えっ
>>806 最近javaからc#に仕事上乗り換えたけどどちらにも対応してくれると
ありがたい。
ところて、CLRに対応できればmonoとかも使えるようになるんだろうか?
CLRだと今のところクライアントサイドに立たざるを得ないからなぁ でりゃ使うかもしれないが、javaのサーバサイド向けライブラリの充実度とか見る限りCLR版はお寒い状況に陥るとおもうぞ
scalaみたいにikvmでもそこそこ動けば、速度でないながらもサードパーティーライブラリに対応出来るが、 clojureで昔試したときはいろいろ無理だったな。
苦労じゃー
fantomっていう、jvmや.netで動く中間コード(?)言語があるけど、動作の感じがなんかしっくりこないんだよな。
この話題で、CinCでそうならなければいいなあと思った。
http://ja.wikipedia.org/wiki/Fantom_ (%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
ここの開発してた cascalogが変な矢印を関数名にしてたから、 Hadoopラッパーを比較してる記事で Clojureが変態言語みたいに見えてワロタ。
core.incubatorにも-?>とか.?.とかあるし……
Haskellのことか
オーム社のHaskell本は\をλと表記したりするから 本として読むときは悪くないが、キーボードで入力しようとするともたつく
慣れれば半角の¥と半角の\の同一視と変わらない
Preview of Storm: The Hadoop of Realtime Processing
http://tech.backtype.com/preview-of-storm-the-hadoop-of-realtime-proce 2. Runs any programming language: Even though Storm runs on the JVM (and is written in Clojure)
We've added support for Ruby and Python,
--all you need to "add any langs" is code a ~100 line library which implements a simple communication protocol with Storm.
やっぱり実装はclojureだった
最近ベルリンとシンガポールでもユーザーグループが結成されたみたいだね
もっとひっそりしてるのかと思ってた 意外と活発だな
javaからClojureへ転向して思った事 leiningenとか便利すぎる 実務で使ってるけど、開発が楽しいの久しぶりだ
swankが何回やっても動かない
>>825 emacsならELPAでswank-clojureとslime入れてleiningenのdev-dependenciesにswank-clojure指定すれば普通につかえるよ
windowsでも動いたし
>>824 mavenは使ってた?mavenとどう違うの?
>>827 mavenはXMLだけど、leiningenだとその部分がまるっきりclojureの表記そのものなのと、XMLでのタグ表記に比べて1つのリストですむのがめちゃくちゃ楽
mavenもleningenもビルド関係のコマンドは同じように楽なんだけど↑の部分のセットアップが違いすぎる
mavenのリポジトリも同じように使えるのがありがたい(この部分はmavenにおんぶにだっこで作り込まれてるけどね)
ただ、windowsだと:repository指定するとleiningenが落ちるのでローカルリポジトリ指定はpom.xml生成してローカルインストールしないといけないのが寂しい このバグが治ればWeb関係のロジックを扱うのは全部clojureに移したい。
Clojureやってから変数可変な言語使うと不安になる。
>>831 そんなコマンドねぇとかおもってたら lein upgrade してversion上げたらhelpが増えてた
ありがと
ホント苦労じゃで困ってる slime-connectで毎回つなぎたくない
Jolt Awards: The Best Books
The six best books every developer should read
Jolt Finalist: The Joy of Clojure: Thinking the Clojure Way, by Michael Fogus and Chris Houser
http://drdobbs.com/joltawards/231500080?pgno=4 軽い入門書だと思ったら、考え方の本だった。
受賞ではないけどJoltの肩書きは付いたんだし、翻訳してくれないかな
>>834 表紙が胡散臭いからパスしてたんだけど、どこかでチェックしてみよっと。
839 :
デフォルトの名無しさん :2011/08/19(金) 23:52:15.98
ぬこかわええw
ところで、
>>472 の記事の40%引きコードってちゃんと使えるんだね。
Ebookで買ってみようかな。
Manningの紙本はEBookが無料でついてくることが多いから注意 The Joy of Clojureはついてくる
>>840 送料含めて40ドルくらいだね。
26.99+12.95=39.94
paypalでもカードでもOKか。
ちなみにamazon.co.jpで3,287だから あまり変わらない。 ただ、 amazonのはEbookつきかどうかわからない。
紙は別にいらないかも
ebook版を購入した、今から読む でも表紙のおっさん宇さんっくさいのは同意
未だにh抜きなんかやってる化石がいるんだな
どっちでもいいだろ。どうせ専用ブラウザだから関係ないし。
ごめんね 化石の分際でセンス云々語ってるのがおかしくてつい^^;;;
hを抜くかどうかも表紙も割とどうでもいい 重要なのは背表紙と内容
Amazon.co.jpをご利用いただき、ありがとうございます。 お客様にご予約いただいている以下の商品の発売日が変更されたため、お届け予定日を変更いたしましたのでお知らせいたします。 Chas Emerick, et al "Clojure Programming" お届け予定日: 2011-10-09 - 2011-10-11
sage
オライリーからもうすぐClojure本が出るんですよね? 円高だし、英アマゾンで買ったら安いのかな。
>>856 それPreview版で買った。
後半が結構読み応えあるけど前半はShiroさんの翻訳物読んでるとかぶることもあるので軽く飛ばせるけどね
ここのところ毎日のようにclojureをつかっているにもかかわらずリストの最初をfirstでなくcarと呼んでしまう、そしてrestでなくcdrと言ってしまう というかREPLで書いてしまって ショボーン
860 :
デフォルトの名無しさん :2011/08/29(月) 07:24:04.01
ジュンク堂の池袋行くと、著者や訳者直筆ポップがいっぱいあるが、もう揃いも揃って下手くそなきったねえ字ばっかりなんだよな。 山本和彦は丁寧に書こうという気はあるみたいで比較的マシだが、やっぱり下手だ。
電算関連の人間は手書きで文字書かなくなるからな、習字やってたけど今じゃもうものすげぇ下手文字になった
862 :
デフォルトの名無しさん :2011/08/29(月) 13:55:48.29
むしろ手書きしないから、漢字かけない、字が下手自慢とかしそう
>>862 流石に無いとおもうぞ
むしろ結婚式とかで自分の名前書くたびに落ち込む
DS美文字トレーニングやっとけ 一度体験してコツが分かれば体が覚える 字を書くのが楽しくなるぞ
こういうスレでそう言われると 素直にトライしまいそうな自分がいる。なぜだ 安くなった3DSと一緒に買ってみようか
866 :
デフォルトの名無しさん :2011/08/30(火) 01:13:19.85
1.3 Beta 2
1.0や1.1から1.2の変更するよりも、 1.2から1.3への変更の方が、 プログラム動かない事が多いのかな (特にプリミティブサポートまわり)
>>871 のスレッドでも結論でてるけど
1.2で^:dynamicと書いたコードを動かすと:tagメタデータの値が:dynamicになる(既に:tagメタデータを指定していればそちらが優先)だけで文法エラーになったりはしない
そして1.2ではすべてのvarが動的(→再束縛できる状態)なので、:dynamicメタデータは1.3以降で正しく解釈されれば良い
メタデータで言うと、1.0の#^から始まる文法でメタデータを書いてるコードは1.3でも動くはずだけど
1.1の頃からいつか^に統一すると言われてるので、古いバージョンで動かす予定がないなら^で書くと良い
なるほど
http://groups.google.com/group/clojure/browse_thread/thread/b18f9006c068f0a0 1.3関連のスレッドでよく見かけるSean CorfieldがScalaのプロダクトをClojureへ移植すると決めた時の体験談
これによると、Scalaで書いた時は50000件程度の規模でOut of Memoryに遭遇したが、Clojure版は300000件のテストでも問題なかった
(Scalaデフォルトのアクター実装が原因の一つらしく、Akkaのアクターへの移行も検討した)
ScalaでもFP寄りなコードを書いていたからほとんどのコードが元のコードと対応しているが、いくらかリファクタリングした
Scala版と比べてClojure版の行数は1/4くらい、文字数は1/3くらい
これは俺の推測だけど、Scalaだと}だけの行があるから文字数に比べて行数が減りやすいのかもしれない
>>875 ほう、コード量も少ないのか
clojure1.3にも何事も無く移行出来るといいなぁ
>>876 その辺は問題ないんじゃない?
Seanは「他の人の疑問に答える側」として1.3関連のスレッドでよく見かける人だし、アルファ版の頃からテストしてるようだから
おお、日本で言えば出会い系サイトの運営なのか たしかに、アクティブなデータ量は多そうだ。
build.clojure.orgからビルド状況確認できるが、 余りよくわからないで見てる
881 :
デフォルトの名無しさん :2011/09/13(火) 18:41:35.68
これってlispコードをJavaコードの中にかけたりする?
Javaコード中に文字列としてClojureコードを書いて、それをClojureコンパイラに食わせることならできる javacがJavaとClojureの混在した謎コードを読み込めるようになったりはしない
883 :
デフォルトの名無しさん :2011/09/13(火) 23:45:09.69
1.3 RC0
javaの中で食わせて実行できる・・・JSPの代わりにHTML生成に使えば面白そうかも?
普通にClojureで書いてJARやWARにすればいいんじゃないか? .classにコンパイルできるんだから
Allegro終了のお知らせですか。。
ClojureとCommon Lispは別の言語だし、Clojureを学んだけどやっぱりCommon Lispを使うという人もいる 俺はClojureが好きだけど、それは俺の話であってAllegroの顧客の話じゃない
clはミュータブルな分、 速度は速いんじゃないかな? 専用のオブジェクトDBやセマンティックDBあるようだし、 顧客層もまだ完全には被らないと思う
Clojuerで用意されているライブラリでJava屋から見て便利なもんってあるんかい?
lambdaがあすからlispは並列に向いてるなんて聞くけど ラムダだと何で並列処理が得意なのさ?
継続とかじゃね?
サーバサイドでLispパワーをJVM上で解放出来るのは強いのだろうが。
>>890 質問の意図がよくわからない
JavaからClojureへ移行する決め手になるライブラリって意味?
そうだとしたら、人による
Javaの資産を活用できるようなライブラリって意味?
そうだとしたら、ClojureそのものにFFI的な機能があるし、逆にクラスをClojureで書ける
>>891 初めて聞いた
C#でラムダ式がタスク並列ライブラリに活用されてるのは知っているが
897 :
775 :2011/09/17(土) 09:40:41.93
話があったから→のような話と同じじゃないかな、だった。
defmacro使えるの?
使える ただし、使う記号はCLと一部違う 具体的には、,fooは~foo、,@fooは~@fooと書く また、意図しないシンボルの捕捉が起こらないように、構文クオート中のシンボルは名前空間で修飾される シンボルの捕捉を起こしたい場合は意識して名前空間の修飾を回避する必要がある また、gensymを呼ばなくてもfoo#のように#で終わるシンボルを書けば展開の度に違うサフィックスが付いてくれる(自動gensym)
901 :
デフォルトの名無しさん :2011/09/19(月) 02:57:39.08
Clojuerだけで記述できるWebアプリのフレームワークでも出ればはやるかも
既にいくつもある
>>887 Allegroユーザーだけど終わる連絡きてないよ?
>>904 slime推奨
というかslime clojureなかったらclojure使う価値半減しちゃう
javaの資産云々より即時テストしたコードを作れるのってスゴイ便利
とくにwebデベロップとかで楽すぎる、phpは書くのは容易でもチェックが繁雑だし、jspは重いし。
できればこのままマイナーで居てくれれば俺みたいな泡沫デベロッパーはウハウハだけど、それじゃclojureの未来が暗いので悲しすぎる。
vm上で動作する言語はいろいろあるけれど crojureは何が優れている??
>>908 それ読んでたら銀河ヒッチハイクガイドの読者なのかなーと思わせる一文があってわらった。
また延期かよ Amazon.co.jpをご利用いただき、ありがとうございます。 お客様にご予約いただいている以下の商品の発売日が変更されたため、お届け予定日を変更いたしましたのでお知らせいたします。 Chas Emerick, et al "Clojure Programming" お届け予定日: 2011-11-09 - 2011-11-11
>>910 safari booksでpreview版買っちゃえば?
PDF版で十分だったし、新原稿が上がるとアップデートのメールも来るし。
知らない人向けなので、
>>906 に一つあるプレゼンテーション(pdf)も参考になるような気がする
>>912 Product Detailタブに、最新表記があった。
Print: November 2011 (est.)
Rough Cut: June 2011
Pages: 400 (est.)
>>909 ギークにとって「銀河ヒッチハイクガイド」は必読書だからなー。
phpで書かれたclojureが欲しい
そこに気付くとは……
まあ、Strange LoopとICFPじゃ関心のある人の層が違うだろうし
英語圏じゃClojureは書籍を何冊か出してるけど、日本語ではClojureオンリーは一冊だけ
そういえば、Strange Loopに合わせてTwitterがStormをOSSにするって話もあったな
https://github.com/nathanmarz/storm これが公式リポジトリでいいのかな
>>904 cakeでいいよ。cake replでreplとして使えるけど、cake swankとすれば
slimeとの連携もできるし、emacsとターミナルで同じVMを共有することも
可能だ。もちろん、cake testを使えば、テストを書いておけば一瞬で済む。
1.3きましたね
実運用なので当面1.2.0使うと事になるけど、ステージング環境ではテストしてみたい
ところでみんなClojureScript使ってる?
使いどころが思いつかない
起動時間にもよるだろうけどちなみにどのくらいかかる?
>>927
今1.2.0が必要な理由あったっけ
[ANN] Clojure 1.3 Released On Sep 23, 2:44 pm, Christopher Redinger wrote:
We are pleased to announce today the release of Clojure 1.3:
http://clojure.org/downloads For maven/leiningen users, your settings are now:
:dependencies [[org.clojure/clojure "1.3.0"]]
This release includes many significant features and performance
enhancements, documented here:
https://github.com/clojure/clojure/blob/1.3.x/changes.txt Chris
Clojure/core
ここで話題になった変なおっさん本(The Joy of Clojure)を通読してみた けど、既にClojureで簡単なプログラムを組む人向けという印象だよね。 だから、中級者なら喜ぶTipsを含む宝箱と言った本ですよ。
934 :
デフォルトの名無しさん :2011/09/28(水) 01:30:38.35
お宝
add-watch/remove-watchって使うの難しいな。 これを使うとソースの可読性が落ちる。使い方間違えると 捉えにくいバグの温床になりそう。
なるほど、変更にフックする機能か
>>935 自前でいちいちコード書くよりずっとまし。
可読性落ちるなら本質的に必要ないところで使ってる。
>>937 必要ない所で使うのもあり得るけど、デバッグにも使えるね。
CLOSのデバッガがデーモンメソッド使ってた。
>>936 うん。この手のことは 変なおっさん本に 載ってる。deliver/promise
とかpersistent!/transientの使い方とかもね。futureとかも扱われてた
>>937 自前でいちいち〜 というのが何を指してるのかわからんけど、本質的に
必要でないような所で使うってのは分かる気がする。
というかHaskellのほうの説明やったのは日本人じゃなかったからなw
めんどくさくって1.3にしてへんけど、1.3のつかいてのみなはん つかいがってはどうでっかぁ?
>>946 あたまがおかしなひと? どうでもええわ このてのごみにれすをもらっても
うれしゅうないな。
あ、かんさいじんきらいなんか レイシスト いらん。
うるさいっちゃ。どっかいけっちゃ
>>948 なにがレイシストだよ馬鹿
関西人の分際で…
だべ?
つぅか、ひらがなだらけだからよみにくくてきらわれるんじゃないのかな?
オーバーフローはCのような「黙って溢れる」方式ではなく、例外が発生すること 多倍長整数へ自動昇格する関数は元の関数の末尾に'を付けた名前になったこと bigintがBigInt、bigintegerがBigIntegerを返すこと も説明した方がいいと思う あと、多倍長整数リテラルxxxNは1.2までなかったと思うけど
> 関西人の分際で… レイシスト丸出しのバカをレイシストと言ってなにが悪いw
余所でやれ
関西人のくせにClojureやってる奴ってなに考えてるんだろ VBでもやってろって感じなんだが
関東の人はすぐ怒らはるさかいかないまへんなぁホンマw 関東人ゆうたら「Scalaは難しい(キリッ」とかで、twitterで盛り上がってはったらよろしいのにw こっちこんといて欲しいわぁホンマ。
>>959 標準語で騙るのが関東圏の人間だと思ってる段階で田舎者だってわかって欲しいものであるが
>>955 そうでした、オーバーフロー例外でしたね。
pidigitsいじったところだと、型ヒントについて気をつけるところは
・関数(戻り値)につける付け方は将来廃止予定
・引数に付ける方法を推奨してるが、いまのところ4つまでみたい。
(超えたらワーニングがでた)
(defn foo
([x] x)
([^long x ^long y] (+ x y))
([^long x ^long y ^long z ^long a b c] ()
)
>>961 1.3のchanges.txt、2.33のことを言ってるなら誤解してる
2.33は引数に型ヒントを付けることを推奨してるんじゃなくて、引数ベクタに戻り値の型ヒントが付けられるようになって
関数名に型ヒントを付けるより、引数ベクタに型ヒントを付けた方が良いという話
つまり、こう書くと1引数と2引数で戻り値の型ヒントが別々に付けられる
(defn foo
(^String [a]
(str (foo a 65536)))
(^Number [a b]
(*' a b)))
もちろん引数の選択肢が一つしかなくても引数ベクタの一つ前を型ヒントにすればいい
>>961 あと、その警告が「fns taking primitives support only 4 or fewer args」のことなら
プリミティブ型でなければ4つより多くつけても構わない
なるほど、プリミティブ型の場合ですか。
968 :
デフォルトの名無しさん :2011/10/11(火) 20:45:32.82
1.2でいうcontribになったは、1.3の開発が始まってからだとおもう。
(1.2でも使えるみたい)
http://dev.clojure.org/display/doc/Clojure+Contrib ここで、formalyってついてるのが、1.2からあったやつ。
core.logic (miniKanren prologみたいなやつ)
core.match (パターンマッチング)
core.unify (ユニフィケーション)
あたりは、何人か勝手にschemeやらから移植で作ってたやつが何種類かあったけど、なんかの経緯(clojure-devとか追えばわかるかも)
ばらけたcontrib(1.3にあわせて仕組みが変わった1.2/1.3向けのcontrib)に追加されてる。
http://clojure.org/concurrent_programming pool (Executors/newFixedThreadPool nthreads)
スレッドプール使うサンプルに覚えがないか意識からスルーしてたんだけど
最近変わった?それとも昔からあった?
1.3は周りのライブラリがまだ未対応でなかなか手が出せないな 来年の4月くらいにはClojarsのライブラリも1.3に対応するだろうけど、今はForkしてパッチあてた同名のライブラリが群雄割拠で大混乱中だわ
原作者にパッチを送ったっていいじゃないか、おーぷんそーすだもの みつを
>>973 送ったら当面はForkしてローカルリポジトリで踏ん張ってくれって返信きたでござる。
というような人が皆githubでforkしてるんだろうってのと、さらに頑張る人がClojarsリポジトリにのっけてるんじゃなかろうか?
テンプレ終了 あと加えたいところがあったら、上のものを改変してここに投稿してね。
誤:テンプレ (5連続投稿はできないので4つまででまとめてます。) 正:テンプレ (5連続投稿はできないので4つまでにまとめてくださいね。) -- とりあえず3つにまとめてあるので、後1つは余裕があります。:-)
h抜きは止めにしても良いんじゃないかなあ
980超えると24時間程度でスレ落ちするので 適当なところで移行できるといいな
h抜きはやめにしたいんだけど、ある一定以上httpがあれば書き込めない板 があるので(ここでは試してない。)多分、難しいかと。
labreplおすすめなのか
一年目300レス、2年で1スレ。 倍になったので、つぎは半年で次スレ。
labreplはそのものがClojureで作られたwebサーバーだから 自らサーバーを立てて、そこで使い方を学んでいく形式。 ごくごく簡単なことだけなんだけど、Clojureだけでこんなことができるのか と感じられたらいい。残念ながら日本語化はされてないけど 平易な英語で書かれてるので、英語の学習も含まれてる。
一回さわってみようかな。 チュートリアル系を動かしながら翻訳するのは、理解力アップの秘訣な気もするので、やる気ある人に譲ってみる。
勉強した後は、labreplのソースをハックすれば、ringサーバーなど Clojureのwebサーバーの使い方も勉強できる特典がついてます。;)
ume
ume
clojure-devのスレッドがいくつか賑わってる
fogusが優先順でfork/join(parブランチ)引き合いに出したりしてるけど、こっちもjava6(5は不明?)で動かすならbackport必要。 java7が登場した結果、急にscalaで 先回りしてやっていたJSRのバックポートが必要な話しが増えて、java拡張まわりの計画追加をスピードを盾に突き上げ喰らってる感じになってる。
梅
このスレもそろそろ
クローズじゃ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。