
Javaで自動テストを書くときの労力の大半はオブジェクトの初期化をするところにある気がする。 よいリテラル構文があればそれは大幅に軽減されるとも思うよ。
2015-09-16 12:06:38
初期化子みたいな専用の言語機構をオブジェクトにもコレクションにも用意して個別に覚える必要があるのに比べて、applyが省略可能とい1個のルールのみでその辺までカバーできるシンプルなScalaが複雑だと言われるのは何故なんだぜ?
2015-09-16 12:18:33
@nagise なるほど。言語機構の数が少ない分、組み合わせて表現する事が多いので、一つの式で使われる構文とか言語機構は多くなるのは確かですねー
2015-09-16 12:29:10
でもそれは言語の複雑さなのだろうか? その式が複雑という話かな。で、Scalaで書くと複雑な式が多くなりやすい、から転じてScalaは複雑 って表現になるのかな
2015-09-16 12:30:28
@gakuzzzz JavaScriptのゴルフとか見ていると「なんて複雑な言語なんだ!」と思ったりするのと似ているのかも。言語仕様のボリュームで言えばJSのほうがJavaより遥かに小さいのに
2015-09-16 12:30:36
糖衣構文もリテラルも無く愚直に初期化するしかないケース、むっちゃ冗長だけれど複雑ではないというか。
2015-09-16 12:30:44
何かひとつルールを導入するだけでこれだけのことが出来るんですよと言うの素晴らしいんだけど、ルールがひとつ導入されるぶん、導入しないよりは複雑になるというか。
2015-09-16 12:31:32
@gakuzzzz 個人的には apply 省略されると, どこでその省略が起きてるのか見失うので苦手です. (他の言語でも同様) apply のレシーバに自由度がある分,「これは何の apply だ?」と考えなきゃなので, そこを複雑と感じます.
2015-09-16 12:33:37
@kamekoopa 導入しないよりは複雑になるの確かですけど、大抵の場合、同じ事実現するのに別のめっちゃ細かいルールが大量に導入されている印象が
2015-09-16 12:34:39
applyが省略できるとかunapplyという名前であるルールでメソッドが実装されてるとパターンマッチでいい感じに出来るとか引数が一つだと括弧が省略できるとか高階関数の仮引数のアンスコ化のルールとかドット省略とかメソッド名セミコロン中置とか型パラメータ中置ルールとか
2015-09-16 12:34:44
@gakuzzzz よく分かってないのですが, "=>" という記号は複数の場面で異なる意味 (関数リテラルとか self-type とか) で使われるように見えるのですが, これも実は同じルールで解釈できたりするのでしょうか?
2015-09-16 12:36:17
@cocoatomo 括弧なしメソッドの戻り値に対してapply省略して呼び出すと、あたかも引数ありのメソッドのように見えるとかその辺ですかね?
2015-09-16 12:36:32
@gakuzzzz そもそも呼び出し括弧の省略が苦手です. Ruby や Haskell でもよくそこで引っ掛かります.
2015-09-16 12:38:00