プログラミング言語 S ..
[2ch|▼Menu]
113:デフォルトの名無しさん
08/03/29 10:23:43
機能的にはリッチ版だよ。
name conflictやmutliple pathを解決するための機構をプログラマに対して与える。

どれもがコンクリートクラスになりがちなクラス指向のプログラミングモデルから、
機能mixinを集めてくっつけて実用クラスを構成する〜モデルになる、というかする。

name conflictやmutliple pathはmixする時に解決できるから、
このクラスとあのクラスはうまく多重継承/結合出来ないというケースがぐんと減る。

代用とかじゃなくて、機能が増えたのがmixin。
元祖はLisp Machine LispのFlovors。
基本フレーバーを調合して、香水を作るって考え。
コンポーネント志向が強い。

もちろんmixinなくても同じことはできるよ。
アセンブラあればなんでもできるという意味では。

114:デフォルトの名無しさん
08/03/29 10:39:13
え、ちょっとよくわからない
どの辺が多重継承よりリッチなの?

115:デフォルトの名無しさん
08/03/29 10:56:30
つ 版

116:デフォルトの名無しさん
08/03/29 11:03:09
版?

117:デフォルトの名無しさん
08/03/30 00:34:31
機能は多いだけじゃだめだとおもう。わかりやすくないと。
Rubyはその辺のバランス感覚に優れているからね。

118:デフォルトの名無しさん
08/03/30 00:53:52
Ruby信者もバランス感覚を覚えて欲しい

119:デフォルトの名無しさん
08/03/30 12:21:15
だからもっと具体的な話しろよ
Scalaの仕様のどこがいいとか悪いとか、mixinの話も>>111に答えてやれよ

と嗾けるだけでもなんだから
俺がScalaで良いと思ったのはカリー化と無名関数だな
Rubyのブロックはへんてこ構文だったけど、Scalaはすっきりしてると思う

120:デフォルトの名無しさん
08/03/30 17:56:01
部分適用はあるが、カリー化なんてあったっけ?

121:デフォルトの名無しさん
08/03/30 18:02:14
カリー化はFunction.curriedでできるが、
ここで俺が言いたいのはカリー化された関数を直接書けるということだな
言葉足らずですまんが

122:デフォルトの名無しさん
08/03/30 18:12:43
これか

def add(a: Int)(b: Int)(c: Int) = a + b + c

add(1)(2)(3) // 6

123:デフォルトの名無しさん
08/03/30 18:18:28
>>119
それならお前が答えればいいのに

124:デフォルトの名無しさん
08/03/30 18:26:14
>>122
うん、それ
Rubyではわざわざブロック構文を導入しているが
Scalaではそれと無名関数を組み合わせて、
同じようなことがすっきりとできるじゃん
というだけの話なんだけど

>>123
いや、俺はmixinは制限付き多重継承だと思ってるから
だから>>113が答えてやれよと
まあ多重継承の定義の問題なんだろうな

125:デフォルトの名無しさん
08/03/30 20:11:51
> 俺はmixinは制限付き多重継承だと思ってるから

kwsk

126:デフォルトの名無しさん
08/03/30 20:25:14
mixin 多重継承でググれば、mixinは多重継承の一種だという説明が多い
Rubyのまつもとさんによれば、mixinは多重継承のサブセットらしい
俺もそう思っていたというだけの話
Scalaのmixinに何か特別な機能があるかどうかは知らない

127:デフォルトの名無しさん
08/03/30 22:16:06
>>126
基本的にそういう認識(mixinは多重継承のサブセット)でいいと思う
Scalaのmixinに何か特別な機能があるかと言えば、たぶん無い
俺がScalaで好きなのは、ExtractorとViews、implicit parameterだな
これらの機能がある言語は、今まで見たことがなかったので新鮮だった

128:デフォルトの名無しさん
08/03/30 22:20:39
開発効率の話について言えばScalaがRubyに遠くおよばないなんて
ことは無いと思う。静的言語ゆえの制約(evalできないとか)はもちろんあるけど、
そもそもそういうのを濫用したプログラミングはそうそうする必要は無いし
for-comprehensionやextractorなどRubyに無い便利な機能もあるし

129:デフォルトの名無しさん
08/03/31 06:33:34
Scalaのmixinは多重継承にならないよう配慮してるね。
別クラスから継承して作ったtraitはmixinできないとか。

130:デフォルトの名無しさん
08/04/02 20:45:51
>>128正論だとはおもうが、そゆ発言はRuby厨を刺激するのでは

131:デフォルトの名無しさん
08/04/03 23:51:57
簡潔にかける!=わかりやすい、というのを体現した言語だなあ。
確かに個々の機能は優れていると思うが、表現の幅がひろすぎて自分とスタイルの違う書き方がほんと馴染まない。
Rubyのほうがコードの一貫性という意味では良いのかもしれないね。

132:デフォルトの名無しさん
08/04/04 00:32:15
文法的にはRubyにforとパターンマッチが入った程度だろうに
ほんとにScala使ったことあるのかよ

133:デフォルトの名無しさん
08/04/04 00:45:09
>>131
Rubyと違って仕様が一貫してそうですが

134:デフォルトの名無しさん
08/04/04 02:23:30
>>132
>文法的にはRubyにforとパターンマッチが入った程度だろうに
あなたもちゃんと使ったことがあるのか疑問があるんだが
どうせ、ちょっとTutorial見ただけで、決め付けただけなんじゃないの?

135:デフォルトの名無しさん
08/04/04 02:29:46
特にScalaの型システム(implicit conversion, higher-kind generics, path-dependent typeなど)
調べてみれば、とてもRubyにforとパターンマッチが入った程度なんて言えない
もちろん、それらがどれくらい使い勝手に影響があるか、という評価は必要だが

136:デフォルトの名無しさん
08/04/04 02:33:36
>>134
ちゃんと使ったことあるというのがどのレベルかはわからないがプログラムはある程度書いたよ
他にRubyよりわかりにくくなるほど簡潔にかけるところあるか?
型絡みは簡潔にはなるという方向じゃないでしょ

>>135
だからViewsやジェネリクスでRubyより簡潔にはならないでしょ
>>131は簡潔に書けすぎたり、表現の幅が広すぎてRubyより一貫性がないって言ってんだから
そういうレベルの話だよ

つーか、なんで俺が文句言われるのがわからん

137:デフォルトの名無しさん
08/04/04 06:45:15
相変わらずRuby厨が無駄に湧くスレだなぁ

138:デフォルトの名無しさん
08/04/04 10:52:07
阿呆は放置推奨

139:デフォルトの名無しさん
08/04/04 22:50:01
逆にRubyやったことがある人に向いてる言語と思うんだけどなあ。

140:デフォルトの名無しさん
08/04/04 23:10:57
Rubyと比較しただけでRuby厨呼ばわりはひどいですね。
Rubyから来た私とJavaからの移行組の同僚のコードがスタイルバラバラになったんで感想を延べただけなんですが。


141:デフォルトの名無しさん
08/04/04 23:27:13
同僚って、もう仕事でしかも共同開発って使ってるの?すごい

142:デフォルトの名無しさん
08/04/05 01:02:21
Scalaで仕事?

143:デフォルトの名無しさん
08/04/05 01:30:16
>>140
コーディングスタイルについては、Rubyだってかなり幅が広くて、
書く人によって全然違うコードになったりすると思うんだが、違う?
というか、○○言語だったらコーディングスタイルを均質化できるというのが
そもそも幻想な気がする

144:デフォルトの名無しさん
08/04/05 01:31:53
馬鹿だから厨と言われてるんであって、Rubyはむしろ被害者。

145:デフォルトの名無しさん
08/04/05 03:14:08
>>139
Rubyなんて触ったことすらない

146:デフォルトの名無しさん
08/04/05 08:32:24
>>143
そのとおり。というか>>131は、
Rubyでしか一貫性のあるコードが書けない(書く気がない)という気がする

147:デフォルトの名無しさん
08/04/05 22:34:48
確かにrubyに似ているんだけど、{}スタイルのブロックは俺には必要だなと再認識した。
haskellでみた変態的コーディング表記も緩和されてわかりやすいスタイルになっている。
一部なんとなく気にくわない所もあるけど仕様上しかたないことなのかな?(arrow回り)
それと変数名が先にくるのは後で何かよいことあるの?
あとdefineじゃなくてdefならさー、objectじゃなくてobjくらいにしてくれたほうがいいなぁ。

と、c++もjavaもrubyもhaskellもMLもlispも全然できないvb6厨の俺が見た目だけで評価。

148:デフォルトの名無しさん
08/04/05 23:04:56
>>147
型宣言が後置で良いことがあるかと言えば、まあ好みの問題なんで
なんとも。ただ、一般論として型宣言が後置の方がパーザ書きやすくなるという
話はある。

149:デフォルトの名無しさん
08/04/05 23:43:18
なんか、配列やマップ(ハッシュ)の参照も()なのが紛らわしい・・・
なんで同じにしたんだろ。

150:デフォルトの名無しさん
08/04/06 00:00:27
リテラルじゃなくてapplyで実装されてるからな
Rubyみたいに大クラス主義ならリテラルと相性が良いと思うが
Scalaの場合、Javaのものと合わせて大量にコレクションクラスがあるから、
リテラルの恩恵があまりないという判断なんだろうな

151:デフォルトの名無しさん
08/04/06 01:07:40
ツアーを読み始めてからjavaのよく分からない
機能(アノテーションとかジェネリック?)とかを調べ始めているうちに
まったく放置していたC#って言語が出てきて、これにも結構近いなぁ。
c# extends c++ interface 関数型言語,vm
に対して、
scala extends ruby,java,変態的言語

C++0xもおもしろそうだがまだvb6の総合的な簡潔さにはかなわない気がする。

152:デフォルトの名無しさん
08/04/06 02:56:08
>>149
genericsのために、既に[]は使っちゃってるからぶつかる
っていうのが主な理由じゃないかと

153:デフォルトの名無しさん
08/04/06 02:58:53
ところで、()使うのがそんなに紛らわしいかな?別に区別が付かない場面なんて
そうそう無いと思うんだが。あと、実用上のご利益として、関数引数を
要求してるとこに、配列やらMapをそのまま突っ込める、というのがある
val f : String => Int = Map("A" -> 1, "B" -> 2, "B" -> 3)
なんてのがOKなわけだ

154:デフォルトの名無しさん
08/04/06 04:06:22
これって知らなかったが、PartialFunctionを先祖で継承しているからなのか?
関数を継承してるコレクションって珍しいな

155:デフォルトの名無しさん
08/04/06 04:39:06
>>154
YES。
確かに、単に関数っぽい、じゃなくて、実際に関数として扱うことができるコレクションという
設計はあまり見かけない気がするね

156:デフォルトの名無しさん
08/04/06 07:38:00
>>149
Fortranと一緒だと思えばいい

157:デフォルトの名無しさん
08/04/06 10:56:18
〜.run()とか〜.invoke()じゃなくて〜()って出来る

こういうのが浸透してきたから、
コレクションの要素取得にも一般化したんでしょ。


158:デフォルトの名無しさん
08/04/07 14:41:16
他に、関数と配列で同じ表記使う言語あったかなと思ったら、
BASICもそうだったなw

159:デフォルトの名無しさん
08/04/07 17:44:31
なんか、型推論があれば、
動的型付けなんかいらないみたいな事が書いてあったけど、
本当にそうなの?

160:デフォルトの名無しさん
08/04/07 18:07:32
>>159
動的型付けや型推論の定義によるけど
動的型と言っても結局実行時には何の型であるかを決めて変換しないと実行できないので
それをコンパイル時にやってるのが型推論ということだとすれば
実行時まで型がわからない状況以外は全部型推論で片付くことになる
ただ実行時まで型がわからない状況ってevalくらいしか思いつかないのだが・・・

161:デフォルトの名無しさん
08/04/07 19:50:51
動的型付けだと、状況によって型が違う関数とかが発生するでしょ。
例えば Lisp 系なんて、何でも入るリストがデータ構造の基本なんで、多くの関数の型は引数とかに依存する。
型を決めて変換するってよりは、型に応じて分岐処理したりするような世界だから、推論は難しいと思うけど。

162:デフォルトの名無しさん
08/04/07 20:09:32
型に応じて分岐処理ってポリモーフィズム?

163:デフォルトの名無しさん
08/04/07 20:11:42
>>161
何でも入るっていっても、本当に実際に何でもつっこむような使い方って
Lisp系でもそんなにしない気がするんだが、どうだろう。Lispのエキスパートじゃないので
自信があるわけじゃないけど。で、もしこれが真ならvariant(VBのじゃなくて、MLとかの
やつね。Scalaで言うとcase class)があれば大体事足りるのではないかと

164:デフォルトの名無しさん
08/04/07 20:40:31
>>159
「型推論」じゃなくて「強い型付け」の間違いですか?

165:デフォルトの名無しさん
08/04/07 20:50:26
Scala at Waves (SaW):
 問題をガリガリ破壊していくフレームワークのような何か。白装束を着ないと自分も破壊される。

166:デフォルトの名無しさん
08/04/07 20:54:14
なんでgenericsに<>使わないの? Foo<Bar<Bazz>> ←ここの問題とかだったりしたら orz

{ブレース}使って見た目の「普通感」があるのはJavaneseに取ってもいいことだと思うんだけど、
それをメリットとして軽く触れられた後で<>が[]です、[]が()です、型は後置です、って言われても
やっぱり見慣れない感が。
理論的・技術的に問題ないのと、今までの目の慣れにやさしいかは別問題。

167:デフォルトの名無しさん
08/04/07 21:01:41
C++はC++0xで>>とくっつけて書いていいようになりました。
要するに文脈依存でlexer頑張れと。

168:デフォルトの名無しさん
08/04/07 21:07:30
>>167
lexerに文脈を表す状態を持たせる必要……この道はいつか来た道。 ←ruby/parse.y orz

169:デフォルトの名無しさん
08/04/07 21:11:48
<>でも[]でもどっちでもいいじゃん

170:デフォルトの名無しさん
08/04/07 21:24:44
{}でもdo..endでも でもどっちでもいいじゃん

171:デフォルトの名無しさん
08/04/07 21:34:19
それは{}でお願いします

172:デフォルトの名無しさん
08/04/07 22:14:10
>>166
Javaのgenericsにその問題はないから別の理由だろ

173:デフォルトの名無しさん
08/04/07 22:25:20
>>166
本当のところ、理由はわからんが、記号がかぶらん方が、パーザにとって
色々都合が良いという話はある。例えば、 A[B] Cという式があったとして、
これがA<B> Cだったら、記号表みないと、A < B > Cという式と区別つかんとか。

174:デフォルトの名無しさん
08/04/07 22:29:23
>>173の例はミス。A[B] Cだとまずかった。書き直すと、

a.b[C](d)という式があったとして、これがa.b<C>(d)だったら、
記号表みないと、a.b < C > dという式と区別つかんとか。

175:デフォルトの名無しさん
08/04/08 00:34:40
>>174は処理系実装と言語仕様の思考分離を(ry

176:デフォルトの名無しさん
08/04/08 01:11:10
>>175
いや、もちろんわかってるよ。ただ、処理系(というかパーザ)の実装のしやすさを
考えて、問題無い程度に構文を変えるというのは普通にあり得る話だと思う

177:デフォルトの名無しさん
08/04/08 01:28:03
D 言語なんかまさにそうだな。
実装しやすいような言語仕様にするってのを1つの柱にしている。
D 言語は構文解析と意味解析が 100% 分離可能。
逆に C++ とかは泥沼。全言語の中で最もパーサが作りづらい。

178:デフォルトの名無しさん
08/04/08 18:22:34
>>176
同意。ただ>>173のような例が「問題がある」程度の実装の難しさを引き起こすかな。
テーブル見る必要があるのはスマートじゃないけど、見慣れた記号の意味が変わらない、というのは
一つのメリットになり得るから、トレードオフとして検討する価値はあるんじゃないかなぁ。

けど、[とか]が単独で演算子として使われたことはないだろうから、それを<と>の代替として選んだ
Scalaの中の人は確かにちゃんと考えてるなーと思う。

179:デフォルトの名無しさん
08/04/08 18:23:45
>>177
C++なぞ問題外 (^^)

180:デフォルトの名無しさん
08/04/08 18:35:02
とりあえず参考資料 っ

> * Features of Ruby
>  + Simple Syntax
(from README)

Pseudo simplicityとか言い張ってるやつだな。どこがpseudoって、parse.yの大きさ見れば分かる。

Rubyの主張は、見た目の良さと実装難易度は直交するということじゃまいか。
たしかにBrainf**kなんか挙げればそれっぽい気もするが、ある程度の複雑さを備えた実用的な
言語仕様でも上記が主張できるかどうかは、意見が分かれるところだろう。
(見た目がシンプルなら実装も簡単になりやすいんじゃないか、等々)

181:デフォルトの名無しさん
08/04/08 18:37:23
>>180
「見た目の良さ」だと曖昧だな。理解のしやすさ、くらいか。まぁその指標自体が曖昧だが。

182:デフォルトの名無しさん
08/04/08 21:54:49
>>174
不等号を連続させられないようにする、という選択肢もあるね。

183:デフォルトの名無しさん
08/04/08 23:21:05
>>180
> Pseudo simplicityとか言い張ってるやつだな。どこがpseudoって、parse.yの大きさ見れば分かる。

それだけだと単にyaccが適切な道具じゃなかったという可能性が否定できないよ。

184:デフォルトの名無しさん
08/04/08 23:25:20
>>183
Rubyの文法は、lexer/parserを分離する事が前提の構文解析アルゴリズム
は向いてない可能性はあるね。

185:デフォルトの名無しさん
08/04/08 23:52:00
Cが駄目だね。> 分離


186:デフォルトの名無しさん
08/04/10 23:23:22
>>183
LALR(1)が、なら同意だけど、単にyacc(bison)が、ならあんまり同意できないかも。
parse.y覗いたことある? あんなことやってたら他のパーザジェネレータ使ってもコードが太りそう。
結局は>>184のが本質ついてるのかも。

187:デフォルトの名無しさん
08/04/10 23:34:41
とりあえず誰か、Scalaの超絶技巧を使って[Type]を<Type>と書けるようにするライブラリの実装ヨロスコ
// TypeじゃなくてKlassか?

188:デフォルトの名無しさん
08/04/11 00:03:10
>>187
さすがにそりゃ無理があるw
Camlp4みたいに標準的な構文拡張のための方法が用意されてるならともかく
Scalaではそういうのは無いはずだし

189:デフォルトの名無しさん
08/04/11 00:15:09
>>186Rubyをわかってねーな。プログラマのためにあえてあーなってんだろうが。

190:186
08/04/11 01:55:57
>>189
んと、言語として「プログラマのためにあーなって」るのは否定も嫌悪もしてないっす。
ただ、とりあえず現状の(というか「lexer/parserを分離する事が前提…」であると?)
実装は、大変そうだな、と。lex_stateとかlex_stateとか。

だからといって、プログラミング言語の文法に置ける、人にとってのsimplicityの定義:
  LALR(1)に収まること。
っていうのは違うよなぁ。

おぉっと、Scalaな話からそれてしまう。いいかみんな、共産ゲリラたちが発する電磁波は……

191:デフォルトの名無しさん
08/04/12 00:27:00
>>189
Ruby書きづらいし遅くて使い物にならないけど

192:
08/04/12 01:23:41
Scalaの日本語版Wikipediaには影響を受けた言語にRubyが入ってるけど、英語版にはない。

193:デフォルトの名無しさん
08/04/12 01:48:56
>>192
それはひどいな
捏造かよ

194:デフォルトの名無しさん
08/04/12 03:18:59
もうRubyはいいって。
内容のある比較もないし。

195:デフォルトの名無しさん
08/04/12 08:57:01
>>191
負け惜しみ乙。どこがどう書きづらいんだよw

196:デフォルトの名無しさん
08/04/12 12:30:55
てかscalaとrubyってユーザそんなに被らないと思うけどなあ
RoRとかが出てきてから流行に乗っかるような「現実的な」ユーザにとっては
今のscalaはまだ使う価値がないと思うし

197:デフォルトの名無しさん
08/04/12 12:59:55
Ruby信者はRubyより優れている所があると言われる言語にでていく習性があってだな…
格下認定(HSP,PHP,LISP,VBあたり)されるか、信者(HaskellとかErlang?)が突撃してくるかくらいしか選択肢がない。

198:デフォルトの名無しさん
08/04/12 16:37:37
>>195
うわぁ・・・Ruby信者いいかげんにしろ

199:デフォルトの名無しさん
08/04/12 17:42:28
こたえられないんですね。

完膚なきまでに論破。

200:デフォルトの名無しさん
08/04/12 17:47:39
信者なのかアンチの嫌がらせなのかの区別がつかない。
どちらにしてもScalaの絡まないRubyの話は
Ruby関連のスレかLLスレでやってほしい。

201:デフォルトの名無しさん
08/04/12 21:26:20
Railsにブチ切れた外人がフレームワーク作った模様

InfoQ: David Pollak氏 lift と Scala を語る
URLリンク(www.infoq.com)

202:デフォルトの名無しさん
08/04/12 22:17:14
>>189,191,198,199あたりはRubyを貶めようとする輩の自作自演の可能性が高い。
本当のRuby信者がRubyの心証が悪くなるような行動をするわけがない。

203:デフォルトの名無しさん
08/04/12 22:23:48
まつもとゆきひろが率先してやってる件について

204:デフォルトの名無しさん
08/04/12 22:25:39
>>202
>>195が抜けてるけど>>195ですか?

205:デフォルトの名無しさん
08/04/12 22:29:16
すまん、訂正する。>>189,191,195,198,199あたりはRubyを貶めようとする輩の自作自演だろ。

206:デフォルトの名無しさん
08/04/12 22:56:28
なんでもかんでもアンチのせいにしてごまかそうとしてるな酷すぎる

207:デフォルトの名無しさん
08/04/12 23:21:34
>>202-206
>200
>どちらにしてもScalaの絡まないRubyの話は
>Ruby関連のスレかLLスレでやってほしい。

どうでもいいけどRubyスレのほうが盛りあがっててワロタ
良く釣れる連中だから遊んでもらえるんだな

208:デフォルトの名無しさん
08/04/12 23:26:34
そんなことより2.7.1RC1が出てるぞ
バグフィックス中心だけど、簡単な正規表現ライブラリも追加されている

209:デフォルトの名無しさん
08/04/12 23:30:28
正規表現だってー!!

210:デフォルトの名無しさん
08/04/13 10:26:23
java.util.regex.*でいいじゃん...

211:デフォルトの名無しさん
08/04/13 12:18:10
鬼車キボン

212:デフォルトの名無しさん
08/04/13 13:23:47
またRuby厨が沸きそうなネタを…

213:デフォルトの名無しさん
08/04/13 14:12:42
PEGの方がいいじゃん

214:デフォルトの名無しさん
08/04/13 14:45:28
>>210
いや簡単なjava.util.regexのラッパー

215:デフォルトの名無しさん
08/04/13 15:19:47
自前LL作るときにJVM利用する価値があるのは同意する。
しかしライブラリまでラッパでおk、ってのはいかがなものか。
たしかにJavaの豊富かつ実績のあるライブラリが使えるのはすげーメリットだが、
自前言語に合った、使いやすい物をもっと作れるはずだろ。インタフェース的な意味で。

藻前らが独自言語を設計してもJVMの命令列に落とすのと同じだ。
独自インタフェースのライブラリを設計して、標準ライブラリを利用しろよ。
Java標準パッケージ脳乙。

ということを繰り返し書いている漏れは……うー。
もしこれ以上雑多な拡張が必要になる将来が来るなら、それよかPEGにしたらいいと思う。 >regex

216:デフォルトの名無しさん
08/04/13 16:23:42
なんだregexリテラルくらい作ってくれればいいのに

217:デフォルトの名無しさん
08/04/13 17:42:33
>>216がフラグ立てた。(リテラルっぽい表記をライブラリで実現する的な意味で

218:デフォルトの名無しさん
08/04/13 18:00:15
まあ、"abc".r で正規表現オブジェクトができるから短かくは書けるけど

219:216
08/04/13 19:53:32
>>217
Scala触ったこともないんだけどだいぶ待ってもらっていい?
……と書こうとしたら>>218でオワタ

220:デフォルトの名無しさん
08/04/13 20:12:23
/abc/と書けないのは中途半端だな。

221:デフォルトの名無しさん
08/04/14 00:17:16
>>213
scalaにPEGライブラリってあったっけ?

222:デフォルトの名無しさん
08/04/14 00:35:08
>>221
無いけど、Parser Combinatorがそれに近い

223:デフォルトの名無しさん
08/04/14 07:24:37
PEGとParser Combinatorってどうちがうの

224:デフォルトの名無しさん
08/04/14 16:41:54
>>218
いっそのこと、文字列から正規表現への暗黙の変換を定義するというのはどうだろう
以下のような感じで(2.7.1.RC1じゃないと動かないので注意)

import scala.util.matching.Regex
implicit def string2Regex(s :String) :Regex = new Regex(s)
for(r <- "[0-9]+" findAllIn "123 456 789") println(r)

225:デフォルトの名無しさん
08/04/14 20:45:38
> 文字列から正規表現への暗黙の変換

実にPerlish……けど型が保証されるから問題無しか。すげ

226:デフォルトの名無しさん
08/04/14 22:06:50
毎回やるのは嫌すぎるぞ。Emacsのようにキャッシュ利かせるとかしないと。

227:デフォルトの名無しさん
08/04/14 22:09:35
個人的にはこのくらいで変換はしない方がいいと思うが
じゃあどういう基準で変換すべきかというのがわからんな
新技術はこういうところが困る

228:デフォルトの名無しさん
08/04/14 22:17:09
キャッシュねえ…こんな感じ?

import scala.util.matching.Regex
import scala.collection.mutable.HashMap

object RegexConversion {
private val cache = new HashMap[String, Regex]
implicit def string2Regex(key :String) :Regex = {
cache.synchronized {
cache get key match {
case Some(regex) => regex
case None =>
val regex = new Regex(key)
cache(key) = regex
regex
}
}
}
}
import RegexConversion._
for(r <- "[0-9]+" findAllIn "123 456 789") println(r)

229:デフォルトの名無しさん
08/04/14 22:18:34
>>227
まあ、自分で書いといてなんだが、俺もこういうケースで
implicit conversion使うのが良いかっていうのはちと疑問ではある
ただまあ、実害があまり無い使い方ではあると思う

230:デフォルトの名無しさん
08/04/15 00:16:55
これはひどい

231:デフォルトの名無しさん
08/04/15 01:06:52
>223
PEG: 文法の記法
Parser Combinator: パーザの実装方法の一つ(ちょっと違うけどそんなもん)


232:デフォルトの名無しさん
08/04/15 07:34:18
パーザコンビネータつうのは文法とか文法解析のアルゴリズムとは独立してるもんなの?

233:デフォルトの名無しさん
08/04/15 11:00:07
>>232
実際に使えるパーザコンビネータはほとんど再帰下降型(+バックトラック)だと思う
ただ、LRなどのボトムアップ型も作れないことは無い、はず

234:デフォルトの名無しさん
08/04/17 23:59:23
ScalaってWindowsでまともなプログラム書けますか?
サーバーサイドじゃなくって
Scala.netって止まってるような気がするけど・・・

235:デフォルトの名無しさん
08/04/18 00:04:09
うぜぇ。文句があるならRubyでも使ってろ。

236:デフォルトの名無しさん
08/04/18 00:19:33
WindowsユーザはScala使うな

237:デフォルトの名無しさん
08/04/18 00:23:10
知的水準の低い人はScalaを使わなくて結構です

238:デフォルトの名無しさん
08/04/18 00:34:56
なんだ。関数型言語ってやっぱり学者しか使わないか・・・

239:デフォルトの名無しさん
08/04/18 00:51:52
ごめん、嘘です。気を悪くしたらスマソ。

「自分がやられて嫌なことは、他人にしたらいけない」って死んだ猫いってたのを思い出した・・・

240:デフォルトの名無しさん
08/04/18 14:23:55
何この流れw

241:デフォルトの名無しさん
08/04/18 19:13:35
>>234
ScalaでWindowsのGUIプログラム書けるかって話なら
Swing/AWT使うか、SWT使うくらいしか選択肢は無いんじゃない?

242:デフォルトの名無しさん
08/04/18 19:26:24
「まとも」=「GUI」!

243:デフォルトの名無しさん
08/04/18 19:55:27
>>241
.NET対応がちゃんとしてくれるんなら、それでいいっす^^

244:デフォルトの名無しさん
08/04/18 20:04:12
>>242
234の文章から、234の考える「Windowsのまともなプログラム」を推測すると、
俺もそうなる。

245:デフォルトの名無しさん
08/04/18 20:18:19
>>242
>>244の書いてる通り、234の文章から、234が考える「Windowsのまともなプログラム」
=GUIプログラムのことと推測したまで。俺自身が「Windowsのまともなプログラム」=
GUIプログラムのことだと考えてるわけじゃない

246:デフォルトの名無しさん
08/04/18 20:27:57
SWT使えば見栄えも問題ないよ

247:デフォルトの名無しさん
08/04/19 09:26:39
あんな低レベルのGUIに満足してるの?

248:デフォルトの名無しさん
08/04/19 09:44:53
俺はGUI全く使わない。

249:デフォルトの名無しさん
08/04/19 10:36:08
GUIも使えるけどあえて使わないってこと?今だにキャラクタベースのUIのほうが玄人っぽいとか、そんな発想?
あなたのような人には文字ベースで十分なのかもしれないけれど、一般的な用途にはGUIが必要とされる時代なんです。いい加減わかってください。

250:デフォルトの名無しさん
08/04/19 10:59:27
お前のことはお前が決めろ。

251:デフォルトの名無しさん
08/04/19 11:10:36
>>247
世の中はOSと違うインターフェースは敬遠されるらしい

252:デフォルトの名無しさん
08/04/19 11:13:56
必要なものを自分で作る能力のないプログラマが飛び付く言語じゃない。

253:デフォルトの名無しさん
08/04/19 12:20:38
>>242>>244
おそらく、>>234=>>243なので、さらにその内容を合わせると
>>234の考えるまともなプログラム
 =「.NET Framework を使ったGUIプログラム」
というように読める。

254:デフォルトの名無しさん
08/04/20 17:51:36
どちらかというと言語がプログラマの要求についてこれれてない部分があるっつーことでしょ。
その辺を他言語と比較されるとすぐファビョりはじめる奴がいるのが困りものだね。

255:デフォルトの名無しさん
08/04/20 21:28:40
.NET対応ってそんなに要求あるのかな?
Java VMで十分な気がするけど

256:デフォルトの名無しさん
08/04/22 21:33:18
Introduction to SDT
URLリンク(www.codecommit.com)
期待。

257:デフォルトの名無しさん
08/04/23 00:55:30
Emacsにも補完つけてほしい

258:デフォルトの名無しさん
08/04/23 01:33:45
Stream.const がはじかれるんですが、これっていつからの関数ですか?

259:デフォルトの名無しさん
08/04/23 01:54:41
Stream.consのことか?

260:デフォルトの名無しさん
08/04/24 02:41:40
>>259
いや。実際にStream.constというメソッドがある。
たとえば、Stream.const(1)とすると、1のみを含む無限Streamが生成できる。

261:デフォルトの名無しさん
08/04/27 11:00:01
ふと聞きたいのですが、Scala以外にどんな言語に興味ありますか?

Scalaを使ってらっしゃる方が普段どんな言語つかっているのか知りたいです。

262:デフォルトの名無しさん
08/04/27 11:42:13
JavaとRuby

263:デフォルトの名無しさん
08/04/27 12:39:15
JavaとRubyかな。最近はErlangに手を出し始めてる

264:デフォルトの名無しさん
08/04/29 15:46:25
>>193
small talkも知らない馬鹿が書いているんだろwww
無視しろ。

265:デフォルトの名無しさん
08/04/29 20:12:31
ScalaはRubyの影響をうけているよ。

266:デフォルトの名無しさん
08/04/29 21:23:18
>>265
まあ、受けてる可能性は否定できないけど、明らかに影響を受けてる
という程じゃないなあ。Groovyくらいそっくりだったら、話は別だけど。

267:デフォルトの名無しさん
08/04/30 02:42:57
>>264
他人を罵る前にだ。

Smalltalkを区切るな、ボケw

268:デフォルトの名無しさん
08/04/30 22:17:30
>>264
くだらない釣りはヤメロよ

269:デフォルトの名無しさん
08/04/30 23:05:54
JJUG Cross Community Conference の Scala のセッション、えらい盛況でワロタ:-)

270:デフォルトの名無しさん
08/04/30 23:14:43
URLリンク(shootout.alioth.debian.org)

271:デフォルトの名無しさん
08/05/04 19:50:05
既出かもしれんけどscalaの動画が紹介されてた。
関数型言語mlのすれ

272:デフォルトの名無しさん
08/05/06 16:48:05
Scala 2.7.1.final
URLリンク(www.scala-lang.org)

273:デフォルトの名無しさん
08/05/07 19:49:29
>>271
Scalaの動画ってこれか

URLリンク(www.youtube.com)


274:デフォルトの名無しさん
08/05/09 23:39:00
>>271
ニコニコ動画で見つけました。
関数型言語Scalaの動画もう一つ
URLリンク(www.nicovideo.jp)

275:デフォルトの名無しさん
08/05/10 14:28:21
>>274
>>1乙wwww

276:デフォルトの名無しさん
08/05/10 14:33:51
>>1 なのかwww

277:デフォルトの名無しさん
08/05/10 14:34:18
Rubyの人とけんかしてるので仲良くして欲しいwww

278:
08/05/10 18:50:55
記法が柔軟性あるみたいだけど、そのためIDEのインテリセンスつくるの大変そうだね。
EclipseのJavaエディタ並みの賢い開発環境があればJavaから乗り換えたいけど。

279:デフォルトの名無しさん
08/05/10 20:20:11
>>274
「スレを立てる」クソワロタ
その結果がこのスレかwww

280:デフォルトの名無しさん
08/05/11 03:07:41
emacsで充分

281:デフォルトの名無しさん
08/05/11 12:09:33
>>278
開発中のEclipse用プラグインが割と頑張ってる感じ

282: 
08/05/12 07:55:41
>>281
そうなのか、使ってみる。

283:デフォルトの名無しさん
08/05/12 13:55:30
Eclipse で実行のたびに Run Configuration が増殖するのは仕様ですか?

284: 
08/05/14 04:39:03
Scalaって文の区切りに;が必要ないの?
なんか怖いです。

285:デフォルトの名無しさん
08/05/15 14:44:24
誰でもはじめては怖いもんだ

286:デフォルトの名無しさん
08/05/15 21:35:10
>>284
関数型言語などでは ; が必要ない方が普通。
HaskellやOCamlなんかでも;は必要ない。

287:デフォルトの名無しさん
08/05/15 21:49:16
ありますよ。

288:デフォルトの名無しさん
08/05/15 23:52:14
必要だけど必要じゃない。

289:デフォルトの名無しさん
08/05/16 03:05:20
Lispだとセミコロンはコメントアウトだな。

290:デフォルトの名無しさん
08/05/17 08:43:04
JavaとRubyとScalaの比較
URLリンク(codezine.jp)

291:デフォルトの名無しさん
08/05/17 15:35:15
Scalaの文法でDみたいなネイティブコンパイラって作れないかな。

292:デフォルトの名無しさん
08/05/17 18:38:06
単にネイティブバイナリがほしいだけだったらgcjであれこれ挑戦してみたら委員では

293:デフォルトの名無しさん
08/05/20 10:25:32
inforno :: Scalaでスタック指向言語をサクッと実装する
URLリンク(inforno.net)

294:デフォルトの名無しさん
08/05/21 23:03:40
scalaって遅延評価あるんだな。
最初からそれ言ってくれたら切り捨てたりしなかったのに。

295:デフォルトの名無しさん
08/05/21 23:11:11
お前の方が切り捨てられたんだよ。

296:デフォルトの名無しさん
08/05/22 18:11:38
煽られたら乗るよ?
scalaに意志はないから切り捨てるも切り捨てないも人の意志にゆだねられる。
scalaと人を混同しないでくださいね。
それとも、scalaたんとかいって擬人化してるキモオタくんですか?

297:デフォルトの名無しさん
08/05/22 20:11:14
scalaたんの擬人化マダー?

298:デフォルトの名無しさん
08/05/23 05:02:26
>>296
君、さぞ国語の成績が悪かったろうな。

299:デフォルトの名無しさん
08/05/23 05:38:47
>>296
乗るにしてもその乗り方はないだろ。
>scalaに意志はないから切り捨てるも切り捨てないも人の意志にゆだねられる。
って、どんな返しだよ。

というか、返しにすらなってないか・・・。

300:デフォルトの名無しさん
08/05/23 05:48:16
>>296
煽られたら乗るよ?
> scalaに意志はない(後略)
まず、議論の前に、どのような哲学的立場をもとにしているのかをハッキリしてもらおうか。

301:デフォルトの名無しさん
08/05/23 05:48:24
>>296
scalaにはMartin Oderskyの意思が宿っている

と返して欲しかったんですね。
わかります。

302:デフォルトの名無しさん
08/05/23 05:54:40
キモオタとか言って煽ってる本人が
なんか凄くオタクに詳しいっぽいのがたまらんね

沸いた頭で煽りを書き殴ったら、自分が普段言われてるモノが出てきました、みたいな

303:デフォルトの名無しさん
08/05/23 07:50:20
どんな言い方してみても>>294が付いて行けなかった事にかわりはない。

304:デフォルトの名無しさん
08/05/23 08:44:58
>>294の書いたscalaたんが観たかった…

305:デフォルトの名無しさん
08/05/23 09:27:29
codezineのメルマガのタイトルに scala が出てきて吹いた

◆【Web】私がScalaを選んだ理由
最近自分の中でScalaという言語が熱い。RubyやPython等のスクリプト言語や、
JavaやC#等現在のエンタープライズ領域を支える言語、HaskellやErlangといった
関数型言語もある。そんなにいっぱいいい言語がある中で,なぜ今Scala
なんだろう?そんな理由を解説してみたいと思います。
URLリンク(codezine.jp)

306:デフォルトの名無しさん
08/05/23 11:33:17
>>303
scalaを一見したらどう見えるかというと、
・JAVAのクラスファイルはくの?つまり所詮はJAVAの亜種ってこと?JAVAにはウンザリなんだよなぁ
・クラス?なんだ、またオブジェクト指向言語か。ツマンネ。
・アルジェブライックデータタイプなし?キモ。おいおい、どこが関数型言語だよ。
・しかも見た目は完全手続き型言語っぽい。

遅延評価以外これといった特徴無いですよね。

307:デフォルトの名無しさん
08/05/23 17:23:39
>>306

英語docの読めない香具師はScalaに手を出すなw

308:デフォルトの名無しさん
08/05/23 17:35:11
>>307
既存のプログラミング言語が多すぎて新しい言語が出てきても大して興味もでないのに、
ドキュメントまで見ようと思うわけがないだろ?w
ブログを見ていて、たまたま言語の紹介があったら読む程度。
言語に興味を持つか持たないかが決まるのはせいぜい5分程度だ。
まぁ、言語の特徴を説明しきれていない糞ブロガーが全部悪いわけだがwww

309:デフォルトの名無しさん
08/05/23 17:39:56
そうやってすぐ雑草を生やす

310:デフォルトの名無しさん
08/05/23 17:58:10
まぁ、小物アプリ作者の俺としてはネイティブ吐いてくれない時点でアウト

311:デフォルトの名無しさん
08/05/23 18:04:47
遅延評価以外これといった特徴無い言語に興味を抱いて、ここに来たの?

312:デフォルトの名無しさん
08/05/23 18:06:31
>>311
遅延評価が実装されている言語を挙げてみろ。
思いつく限りでは片手に収まる。

313:デフォルトの名無しさん
08/05/23 20:16:42
>>312
Haskell
Scala
Clean
UnLambda

314:デフォルトの名無しさん
08/05/23 21:21:34
>・JAVAのクラスファイルはくの?つまり所詮はJAVAの亜種ってこと?JAVAにはウンザリなんだよなぁ
>・クラス?なんだ、またオブジェクト指向言語か。ツマンネ。
さすがにこの釣り餌は、おいしそうじゃないな。

315:デフォルトの名無しさん
08/05/23 21:27:18
じゃあ食いつくなよw

316:デフォルトの名無しさん
08/05/23 21:29:16
ごめw

317:デフォルトの名無しさん
08/05/24 01:10:13
自分が食いついた餌の低質さをいくら口にしたところで、相手のレベルじゃなく
「そんなのに食いついた自分のレベル」の低さをアピールするだけなのにね(相手には1ポイント入る)。

318:デフォルトの名無しさん
08/05/24 01:17:48
ごめん、わるかったって

319:デフォルトの名無しさん
08/05/24 01:45:38
>>312
OCaml
pypy

320:デフォルトの名無しさん
08/05/24 03:59:21
>>306
頭悪そうだね

321:デフォルトの名無しさん
08/05/24 04:00:25
>>312
> 思いつく限りでは片手に収まる。

なんて無知な…

322:デフォルトの名無しさん
08/05/24 12:58:25
なんだここの奴ら・・・
まだHaskellスレの方が「できた」人間が多いぞ・・・

323:デフォルトの名無しさん
08/05/24 12:59:02
スレ住人の人間性を見てもわかる。
この言語はJavaの系列なんだな。

324:デフォルトの名無しさん
08/05/24 14:11:12
Javaじゃないのが最大の利点。

325:デフォルトの名無しさん
08/05/24 15:03:27
JVMに縛られたローカル言語

326:デフォルトの名無しさん
08/05/24 15:08:52
>>322-324
Haskellの名前だけ挙げてPD.Martin Oderskyに直接何も言えないのって恥ずかしいよな

327:デフォルトの名無しさん
08/05/24 15:09:00
もうJVMを次期windowsに埋め込めばいいんじゃね?

328:デフォルトの名無しさん
08/05/24 15:11:55
>>326
俺はscalaのこと何もしらねーもん^^
俺が批判してるのが言語scalaだと思っていたら大間違いだぜ。
お前らを含めたコミュニティと広報活動全般についてなんだよ。
「外」の人間がどう感じるか感想を言ったまでさ。
お前ら被害妄想ひどすぎwww

329:デフォルトの名無しさん
08/05/24 15:25:30
>>328
> 俺はscalaのこと何もしらねーもん^^
( ´,_ゝ`)プッ

330:デフォルトの名無しさん
08/05/24 15:42:11
>>329
頭の可哀想な子に触るの禁止ーーー!!

331:デフォルトの名無しさん
08/05/24 15:46:29
俺が思うに、コミュニティが健全であるためには、Javaとのつながりを完全に切った方がいいと思うんですよ。
>>329-330のような奴らをJavaに隔離すべきだと思うんです。

332:デフォルトの名無しさん
08/05/24 15:47:06
っていうかさ、数学出来ないやつが関数型言語さわるなよ^^^

333:デフォルトの名無しさん
08/05/24 15:47:46
「このマスにとまったら、ム板のScalaスレを荒らしてくる」
とかいうゲームなんだよ。

334:デフォルトの名無しさん
08/05/24 15:49:36
>>328
> お前らを含めたコミュニティ

2chをコミュニティ認定しないでくれ


335:デフォルトの名無しさん
08/05/24 16:49:54
>>334
馬鹿にそんなこと言っても始まらないだろ。

336:デフォルトの名無しさん
08/05/24 16:57:08
>>334
妄想がどうのと言い出す人が、むしろ自分こそ激しい妄想を前提としているのはよくある話。
つまり、自分が言われると致命的な指摘を、先に相手になすりつけておく手法。

337:デフォルトの名無しさん
08/05/24 17:01:32
自己投影化ですねわかります

338:デフォルトの名無しさん
08/05/24 18:38:40
>>328
人間やコミニティまで批判するのはやめような。
フレームにしかならないよ

339:デフォルトの名無しさん
08/05/24 18:53:07
>>338
ああ悪かったな。
「活動」を批判すべきだったなw

340:デフォルトの名無しさん
08/05/25 04:52:14
もう引くに引けなくなってるのねw

341:デフォルトの名無しさん
08/05/25 06:57:59
>>332
関数型さわって慣れてから、数学勉強するのでいいと思う。

342:デフォルトの名無しさん
08/05/25 22:50:07
興味持てないのにいちいち荒らしにくる>ツンデレ

343:デフォルトの名無しさん
08/05/26 02:18:42
というか、このところのScalaの取り上げられ方を見て
「なんか落ち着かない気分になった」Ruby信者では。

344:デフォルトの名無しさん
08/05/26 06:35:01
序盤に遅延評価を連呼していたあたり、遅延評価で切り捨ての子じゃないのか?

345:デフォルトの名無しさん
08/05/26 18:19:49
C#並にIDEの支援が充実してくれるといいんだが・・・・

;が省略可なんて仕様はIDEにとって厄介者にならないのだろうか?

346:デフォルトの名無しさん
08/05/26 21:27:38
;を書かなくていい言語が変に思うヤツは、プログラミング言語知らなさすぎ。
他の言語も知っといた方がいい。勉強しろ。

347:デフォルトの名無しさん
08/05/26 21:42:27
勉強の問題じゃないが。

348:デフォルトの名無しさん
08/05/26 21:49:59
アホが勉強しろとか言ってるの見ると滑稽でたまらん

349:デフォルトの名無しさん
08/05/26 21:50:08
そういや、VBのインテリセンスは完璧だったな

350:デフォルトの名無しさん
08/05/26 22:11:23
Haskell知ってるヤツと、Javaしか知らないヤツのコードを見ると、同じScalaでも全然違う。
あたりまえだが。

351:デフォルトの名無しさん
08/05/27 20:28:26
荒れてるなあ
とりあえず、Algebraic data type相当の機能はScalaにもあるよ
あと、Scalaの特徴と言ったらやっぱりimplicit conversion/parameterとか
Extractorとかじゃないかと個人的には思う

352:デフォルトの名無しさん
08/05/27 20:29:35
>>345
Visual StudioとかEclipse並にはまだ程遠いけど、Scalaで書き直された
新Scala Eclipse Pluginは結構補完頑張ってるよ。implicit conversionで
追加されたメソッドとかも補完してくれる。

353:デフォルトの名無しさん
08/05/27 20:48:15
>>343言い得て妙だな。まさにそんなのが身近にいるのでツボった。

354:デフォルトの名無しさん
08/05/27 22:15:41
またいつもの浮気癖か>Ruby信者
浮気するくせに浮気相手にRubyを求めるからなあ。

355:デフォルトの名無しさん
08/05/27 22:27:06
;と{ばかりの言語しかやったことない俺涙目
そんな人は何からやればいいですか?やっぱりHASKELLとかですか?

356:デフォルトの名無しさん
08/05/27 23:15:50
あと、SmalltalkとSchemeかな。

357:デフォルトの名無しさん
08/05/27 23:20:30
>>354信者のふりしたアンチに騙されてるんだよ。Rubyistは向上心のある人格者が多い。

358:デフォルトの名無しさん
08/05/27 23:42:38
間を取って、Ruby信者とRubyistは違うということでこの話はお開き。

359:デフォルトの名無しさん
08/06/02 18:18:44
>355
ここは forth で

360:デフォルトの名無しさん
08/06/10 10:17:32
本家ホムペ落ちてる!><;

・・・

大幅リニューアルということか?

361:デフォルトの名無しさん
08/06/10 20:53:23
>>360
いつまで落ちてたのか知らんが、もう復旧してるよ
Webページのデザインは以前と特に変化無し

362:デフォルトの名無しさん
08/06/10 21:15:06
1つだけ、def という適当な予約語が気に入らない

363:デフォルトの名無しさん
08/06/11 01:07:42
じゃあdefunで…

364:デフォルトの名無しさん
08/06/11 02:02:47
>>362
じゃあ、defineだったら良かった?予約語って特に頻繁に
使用するものは、省略形を使ってでも短くした方が良いと思う
どうせ予約語の数なんて知れてるし、覚えることの労力よりも、
短くすることのメリットの方が大きいと思う


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4918日前に更新/158 KB
担当:undef