トップページ⇒tech
1001コメント356KB

やっぱり動的型付け言語は大規模開発で効率が悪い 4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/11/21(月) 11:48:03.35
大規模と書いてドカタと読む。


やっぱり動的型付け言語は大規模開発で効率が悪い 3
http://hibari.2ch.net/test/read.cgi/tech/1320832914/
0175デフォルトの名無しさん2011/11/28(月) 01:50:47.66
静的型チェックを導入することで諦めなければならないことが無い問題領域なら
静的型チェック機構があれば便利なのは自明じゃないの?
0176デフォルトの名無しさん2011/11/28(月) 01:52:51.47
>>174
既存の静的型チェック機構は大なり小なりなんらかの問題を抱えているもんなんじゃないの?
0177デフォルトの名無しさん2011/11/28(月) 01:56:44.95
ML系の型チェックはJavaなんかよりはマシだよね。そのぶん制約も増えるけど。
0178デフォルトの名無しさん2011/11/28(月) 02:09:51.04
JavaでもEnum値で分岐するswitch文は網羅性を検証できるよ。

言語仕様としてEnum値を網羅していない場合をエラーとしていないだけであって
(網羅していないswitch文を書いたっていいじゃん)、検証自体は文法的に、静的に
出来るし、そういうツールだって書ける。実際Eclipseでオプション一つ変更すれば
Enum値を網羅していない場合をコンパイル時にエラーとしてはじけるわけで。

じゃあ何故Enumを使った場合は自動的に網羅性を検証するよう言語仕様そのもの
を変えないのかと問われれば、これは歴史的な経緯としか言えん。
もともとJavaのEnumは後付けでswitchは整数型で分岐するものだったから網羅性
のチェックといってもコンパイルの手間を考えるとdefaultの有無を確認する程度
しか現実的な解は無かった。
その後Enumでも分岐できるようになったものの、整数型の場合の動作と揃えて
網羅していない場合もエラーにならない、そういう判断になっただけの話。
0179デフォルトの名無しさん2011/11/28(月) 02:18:06.48
まとめ
- 大事なのは、静的型付きであることより静的型チェック機構の有無。
- ドカタに任せられるレベルのコードでは動的型付きのメリットは皆無。というか変に使われると逆に困る
- したがって、静的型チェック機構による制約も気にならないしメリットのほうがはるかに大きい。
- 制約を増やせばより確実な型チェックが可能になるが、その分ルールや出来ない事や場合によっては記述も増える。
- 出来ない事や記述の増加は問題ないが、ルールが増えてしまうと当然ドカタは使えなくなるから本末転倒。
- だからドカタ向けにはJavaやC#程度の型チェックでおk。
0180デフォルトの名無しさん2011/11/28(月) 02:25:35.33
>>178
せっかくenum使ったswitchの網羅性をチェックしても、
enum型変数の値をnullにするだけで
ぬるぽ発生してどの分岐も通らないJavaは素晴らしい
0181デフォルトの名無しさん2011/11/28(月) 02:33:12.34
そりゃ非nullを静的に検証する問題だから直交した話だわな。
0182デフォルトの名無しさん2011/11/28(月) 05:46:05.30
>>180
nullケースも必須にすればいいだけ。
0183デフォルトの名無しさん2011/11/28(月) 05:50:01.13
>>161
ああドカタ君にはまだ解らないか…
難しいこと言って、ゴメンね♪
0184デフォルトの名無しさん2011/11/28(月) 06:57:12.81
>>183
「同じ問題」の例示を求む。
0185デフォルトの名無しさん2011/11/28(月) 07:16:41.29
>>181
非nullを静的に検証することができるの?
0186デフォルトの名無しさん2011/11/28(月) 07:34:40.18
出来ないが。だから何を言いたいんだ?
0187デフォルトの名無しさん2011/11/28(月) 08:46:24.18
>>51
VB6は引数にかかわらず、浮動小数割り算が/で整数割り算が%だったなw
0188デフォルトの名無しさん2011/11/28(月) 16:25:16.15
>>178
>JavaでもEnum値で分岐するswitch文は網羅性を検証できるよ。

ほー、Javaでも静的に検査できるんだぁ....と思わせておいて、

>その後Enumでも分岐できるようになったものの、整数型の場合の動作と揃えて
>網羅していない場合もエラーにならない、そういう判断になっただけの話

これが結論か?できるのか/できないのか、どっちかはっきりしろよwww

まるで、こんな天気予報と同じだぞ

 明日は晴れでしょう。しかし曇ることもあります。地域によっては雨かもしれません。
0189デフォルトの名無しさん2011/11/28(月) 17:13:56.43
>>184
静的型付けではMap<K,V>のV型の値しかデフォルト値として与えられないから
マップを引けたかどうかを返り値のみから確定させる一般的方法がない。

動的型付け言語ならば、他から参照されない軽量なインスタンスを新しく生成して
それをデフォルト値に指定するだけ。Object型とか。
静的型付け言語では、V型が新インスタンス生成可能とは限らないし、
インスタンス生成が重いと使えない。

だからJavaでは返り値のみで判定するなと警告されている。
0190デフォルトの名無しさん2011/11/28(月) 19:31:19.96
書かれた動的型付けの解決策にしても全然「一般的方法」ではないのだが。

軽いクラスのインスタンスとしてデフォルト値を用意する方法にしても、
それはそう実装できるというだけの話であって、APIで強制できる一般的方法
ではない。このmapはkeyが無い場合はこの値を返しますよ。単なるダミーの
値ですから信用して使ったりしないで下さいね云々と個別に規約を文書化する
必要がある。規約を知らないと判別出来ない。知らずにデフォルト値をいじる
バカも出る。これのどこが「一般的」?

良いところ「個別の解決策」止まりだし、似たような方法は別にJavaのMap
でもMap<K, Object>とでもすれば出来る。ただvalueについて静的型付けの
恩恵を受けられなくなるから、普通はやらない。

一般的な方法というのは言語の組み込み定数としてnullとは別にundefinedを
持っているとか、keyを与えるとkeyとvalueのペアを返す関数が用意されて
いるとか、keyが無いと例外を投げるとか、どういうmapであっても常に返値
だけで判別出来る方法。
「返り値のみから確定させる一般的方法」の有無というのは要するにこう
いった定数や関数が用意されているか否かの問題であって、型付けが動的
静的云々は全く関係が無い。

Javaだったらgetが例外を投げるようにするとかキーバリューのエントリー
を引っ張って返すようなメソッドを用意するとかすれば良いし、そういう
デコレーターを書くのも簡単。
でもJava Collections Frameworkはこれらを持っていない。書こうとすれば
書けるものを何故用意しなかったか理由は知らないけれども、単に需要が
薄いと判断された事は大いに想像できる。他の言語でも持っていない例は
多いところから見ても、需要は薄そうだ。
0191デフォルトの名無しさん2011/11/28(月) 19:32:44.98
>>190
一般というのは、任意の型Vについて適用可能な手法だということ。
広く用いられているという意味ではない。
0192デフォルトの名無しさん2011/11/28(月) 19:35:48.82
>>190
> 似たような方法は別にJavaのMap
> でもMap<K, Object>とでもすれば出来る。

すまんが、正直、馬鹿すぎて笑えた。
0193デフォルトの名無しさん2011/11/28(月) 20:12:17.30
・Java Collections FrameworkというAPI自体は任意のVについて返り値のみ
 からkeyの有無を確定させる「一般的方法」を持たない。
 持たない理由の推測は>>190に書いたとおり。

・ただそれを言えば動的型付けの言語だってAPIとして「一般的方法」を持た
 ない言語は多い。そういう場合は手作りをする必要がある。

・Javaの場合は「APIを拡張」することで任意のVについて「一般的方法」を
 導入できる。どんなアプローチがあるのかも>>190に書いたとおり。

・動的言語の場合は加えて「Vの値域を拡張」することで「一般的方法」を
 導入することも出来る。具体的にはデフォルト値の導入。

・APIを拡張せずに「一般的方法」を導入出来る点は確かに動的型付け言語
 のメリットかもしれない。ただAPIはそのままの代償として規約を新たに
 導入する必要がある。バカ避けとしては、どうなんだろうね?

・Map<K,Object>は馬鹿で結構。馬鹿だから普通はやらない。
0194デフォルトの名無しさん2011/11/28(月) 20:16:30.98
JavaもC++みたいにmap<K,V>の総称型Vのデフォルトコンストラクタを使って
インスタンス生成してデフォルト値として返せたら良かったね
0195デフォルトの名無しさん2011/11/28(月) 20:26:35.68
>>192
ジェネリクス導入前のJavaみたいなコードになりそうだな
その頃から使ってるから書けるけども、静的型には程遠かったなあ…
0196デフォルトの名無しさん2011/11/28(月) 20:36:52.78
>>194
Apache Commons Collectionsで出来る話とは違う話かな?
デフォルト値の指定自体はDefaultedMapで、デフォルト値を生成する
コンストラクタの指定はLazyMapで出来る。
0197デフォルトの名無しさん2011/11/28(月) 20:58:29.27
>>196
new V()が出来ればfactoryオブジェクトを用意する手間が要らなくて
良かったねってこと
0198デフォルトの名無しさん2011/11/28(月) 21:20:15.92
そういうのは、自作ユーティリティライブラリを
作ればいいだけだから、すごく小さな問題でしかないな。
0199デフォルトの名無しさん2011/11/28(月) 21:26:47.02
さすが冗長言語Javaのドカタやってるだけあるなw
良く訓練されてやがるww
0200デフォルトの名無しさん2011/11/28(月) 21:27:57.07
>>197
う〜ん、確かにそれは出来ないなぁ。
替わりの策としてはファクトリを用意せずにClass<V>を渡すバージョンは
作ることが出来そうだけれども、デフォルトコンストラクタの存在確認が
実行時になってしまうのがいやんなかんじ。
0201デフォルトの名無しさん2011/11/28(月) 21:29:03.30
せめてlambdaがあれば……
0202デフォルトの名無しさん2011/11/28(月) 22:04:08.80
Scala対する動的型付け言語の有利な点って何かあるの?
0203デフォルトの名無しさん2011/11/28(月) 22:31:06.15
http://www.infoq.com/jp/news/2011/11/scala-ejb2
0204デフォルトの名無しさん2011/11/28(月) 23:16:44.91
>>203
やっぱり、Javaの方がいいのか。
0205デフォルトの名無しさん2011/11/28(月) 23:17:23.35
> Javaが次のリリースでモジュールとラムダを導入しようと、
> そしてそのリリースがさらに1年遅れようと、Scalaが安定するよりも早く
> 多くのJava開発者に関数型プログラミングをもたらすだろう。
> Javaに追い抜かれる前にScalaが体勢を立て直すのはもう遅すぎるかもしれない。
0206デフォルトの名無しさん2011/11/29(火) 00:27:34.40
nilポ
0207デフォルトの名無しさん2011/11/29(火) 03:47:46.34
>>188
出来る。Eclipseなどの外部ツールを使えば出来る。
明日の天気は雨ですが内陸部では晴れるでしょう。そんな感じ。

言語としてJavaはswitch文でのenumの網羅性は要求していない。
しかしコーディングの規約として網羅性を強制したいのであれば、それをツールで
支援することは何も妨げられないということ。
Cでもgccはswitch文でのenumの網羅性を検証するオプションがある。
0208デフォルトの名無しさん2011/11/29(火) 05:01:39.17
switch文の網羅性をチェックしたところで、
ドカタは空のdefault枝を書いて /* おまじない */とかコメントつけるだけ。
0209デフォルトの名無しさん2011/11/29(火) 19:52:15.88
>>208
そういうプログラマ個人に依存した話は却下します。
どんな言語を使おうが、その人がやるなら同じ事ですから。
0210デフォルトの名無しさん2011/11/29(火) 23:00:34.42
しかし水は低きに流れる
土カッチにもマトモなのもいれば
果てしなく杜撰とか低レベルなのも
0211デフォルトの名無しさん2011/11/29(火) 23:38:56.00
>>210
頭大丈夫?
0212デフォルトの名無しさん2011/11/30(水) 00:00:03.75
>>208
>ドカタは空のdefault枝を書いて /* おまじない */とかコメントつけるだけ。

それこそツールではじけばいいだけやん。
0213デフォルトの名無しさん2011/11/30(水) 02:24:01.08
悪貨は良貨を駆逐する。
0214デフォルトの名無しさん2011/11/30(水) 02:25:14.82
今のお金は、悪貨だとでもいうのか?
実際は悪貨のほうが駆逐されてるだろ。
現実見ろよ。
0215デフォルトの名無しさん2011/11/30(水) 04:58:11.20
>>212
本当にデフォルトは処理無しな場合とどう区別する?
0216デフォルトの名無しさん2011/11/30(水) 07:11:35.21
>>214
金貨銀貨は既に過去のもの
つまり駆逐済み
0217デフォルトの名無しさん2011/11/30(水) 09:45:24.91
ふう 馬鹿だな。 http://www.proverb.jp/proverb247.html
こんなリンクを貼らないといけないなんて中学生じゃあるまいし。
0218デフォルトの名無しさん2011/11/30(水) 10:05:30.62
いやそんなのは分かってる上だろ、どう見ても。
理論が飛躍して言葉遊びの域に達してるだけで。

>>214は新言語が旧言語の悪いところを潰していってるのではないかと言い、
>>216は正直良く分からんが、
これまでの通貨の歴史を紐解けば今の言語が悪貨であることが示唆されると言ってるんじゃないのか。
0219デフォルトの名無しさん2011/11/30(水) 16:51:37.54
まあ含みの多い言葉だしな
dos/windows,x86,真性ドカタと本物グラマ、
php等例には事欠かない
逆は真ではないけど
0220デフォルトの名無しさん2011/11/30(水) 17:20:05.85
ttp://www.artcompsci.org/~makino/articles/worse-is-better-ja.html
これじゃねーのか
0221デフォルトの名無しさん2011/11/30(水) 20:30:19.95
>>218
概ねそのとおり。

悪貨は良貨を駆逐するなんてのはただのことわざで、根拠はない。
逆に良貨が悪貨を駆逐することもある。

ことわざってのは定理なんかではなく、そういうこともあるよね〜レベル。
逆の意味を持ったことわざだってある。絶対正しいことを言っているわけじゃない。

だから、「悪貨は良貨を駆逐する。」なんてことをいう人は、
正しいか間違ってるかを考えずに、思考停止しているだけの馬鹿と俺は判断する。
0222デフォルトの名無しさん2011/11/30(水) 20:33:42.90
思考停止というよりか、悔しさが含まれてるように見えるな。

勝利したものに対して「勝ったほうが負けなんだ!」って言ってるみたいな感じw
0223デフォルトの名無しさん2011/11/30(水) 20:37:02.90
そもそもJavaは良貨だよ
ドカタの脳みそに入る言語の中では
0224デフォルトの名無しさん2011/11/30(水) 20:47:41.84
また、勝った方が負けなんだって言ってるように聞こえたw
0225デフォルトの名無しさん2011/11/30(水) 20:51:47.34
動的も静的も違わないだろ。
なぜならば機械的に動的 ⇒ 静的の変換が可能だからだ。
型が無限にあれば静的にできない可能性があるが、実用上ではありえない。
0226デフォルトの名無しさん2011/11/30(水) 20:52:11.30
まあ、ドカタという言葉を使ってる時点で
勝ち組に対する僻みだからねw
0227デフォルトの名無しさん2011/11/30(水) 20:54:46.53
問題があるとしたら自動で型を推定、識別する部分だが、そしたら明示的に型を教えられる仕組みを組み込んでおけばいい。
0228デフォルトの名無しさん2011/11/30(水) 21:15:47.32
型を教えられる仕組み

・関数の引数に型が明記されている。
・変数に型が明記されている。
・オブジェクトの生成から、型をチェックしたい箇所のコードすべてで型が明記されている。

この3つがないと、型チェックはできないからね。
コードのどこかで型情報がなくなったりしたら
意味なくなっちゃうし。

結局、プロジェクトの全部の箇所にちゃんと型を明記しないといけなくなるんだけど。
0229デフォルトの名無しさん2011/11/30(水) 21:56:52.54
>>225
動的に型を定義可能な言語の場合は?
0230デフォルトの名無しさん2011/11/30(水) 23:56:08.45
頭悪くてよく分からん。
動的な型付けでしかできないメリットをコードで見せて。
0231デフォルトの名無しさん2011/12/01(木) 02:00:48.14
ここにはきっと、スパゲッティー屋さんがいる。
0232デフォルトの名無しさん2011/12/01(木) 02:07:05.00
自分はタコス屋さんだけど、何か?
0233デフォルトの名無しさん2011/12/01(木) 02:24:05.21
"1" + 1 は "2" でないと違和感がある。
"11" や 2 だとおかしい。
0234デフォルトの名無しさん2011/12/01(木) 05:48:37.92
>>230
eval
0235デフォルトの名無しさん2011/12/01(木) 06:58:10.57
動的な言語のスパゲティは
静的な言語よりキツいのは確か
0236デフォルトの名無しさん2011/12/01(木) 07:18:28.53
>>228
> この3つがないと、型チェックはできないからね。

できます。
0237デフォルトの名無しさん2011/12/01(木) 08:14:36.46
まあ、>>228は型推論を知らない、知りたくない、
見ない、見たくない、聞こえない、聞きたくない.... ヤシなんだろw
0238デフォルトの名無しさん2011/12/01(木) 08:39:19.24
ドカタの脳みそに入る言語のリストに型推論のある言語は入ってない
0239デフォルトの名無しさん2011/12/01(木) 09:53:38.42
>>118
ハッシュキーに 'f1' と文字列を書くことはない。
最低限定数として定義するし Java なら列挙型を使う。

>>139
キーに対する値に生の null を使う設計が脆弱。null object pattern を使う。

>>189
軽量なデフォルトコンストラクタを持たない V をリファクタリングするには
(1) V からインタフェース I を抽出する
(2) V の利用を I に置き換える
(3) I を実装するデフォルト値用のクラス N を実装する
0240デフォルトの名無しさん2011/12/01(木) 10:04:09.76
>>238 静的型付きでなければ(キリッ
ていうからなにかと思えば、Javaのことだった、ってのが
お約束パターン過ぎてあきれるよね。
0241デフォルトの名無しさん2011/12/01(木) 11:25:03.25
>>240
次の二つの階級の話が混じってるから同じパターンのループになってしまう。

無差別級:全ての言語で比較
ドカタ級:ドカタが使える言語で比較


だからドカタでも使える言語を明らかにした方が良い。
Javaは鉄板として、あと何があるのか。
0242デフォルトの名無しさん2011/12/01(木) 11:30:10.70
COBOL
0243デフォルトの名無しさん2011/12/01(木) 12:04:50.87
.netより前のVB
0244デフォルトの名無しさん2011/12/01(木) 12:29:44.44
ドカタの定義はどこだよ。
今の流れだと「使える」のレベルによってドカタかそうでないかが分類されるってより、
言語自体とドカタを結びつけようとしていて危険だろ。
0245デフォルトの名無しさん2011/12/01(木) 12:39:13.51
ドカタってのは、技術に投資せず今日の収入のためだけにプログラマやってる奴のことだろ

求人市場に案件のある言語は全部ドカタ言語だよ
0246デフォルトの名無しさん2011/12/01(木) 12:40:04.30
ああ、だから今マイナーな言語でも流行って使われるようになればドカタ言語になる
技術の問題じゃない。金の問題。
0247デフォルトの名無しさん2011/12/01(木) 12:42:53.72
ドカタの自覚症状がある人達が
自分の使える言語を書いていけば良いんじゃないの?
0248デフォルトの名無しさん2011/12/01(木) 12:45:11.19
一方、研究者は人と同じことやってたら食えないから
常に新しいパラダイムを提唱してくる。使える使えないは二の次。
使える使えないが真の意味で実証されるのはドカタが使うようになった時で、
その時には当の研究者はとっくにトンズラして新しい研究を始めてる。
これのループ。
0249デフォルトの名無しさん2011/12/01(木) 12:57:08.65
Javaドカタ「今マイナーな言語も流行ればドカタ言語になる(キリッ」
0250デフォルトの名無しさん2011/12/01(木) 13:01:51.34
まあOakはドカタ言語じゃなかったし
0251デフォルトの名無しさん2011/12/01(木) 17:02:29.83
同じことができる代わりがいくらでもいるような人達の事じゃないの?
仮にその人がいなくなっても、代わりはすぐに補充できる。

でも、代わりが利かない人ってヘッドハンティングなどで抜けたら、
代わりの補充が利かないよね。

年齢以外の要素で違いが見いだせない人がJavaには多そうってことなんだろ?
0252デフォルトの名無しさん2011/12/01(木) 17:17:19.05
ここの人にBig-Oって何って聞いたらなんて返ってくるだろう?
0253デフォルトの名無しさん2011/12/01(木) 18:54:07.42
空気読めてないって答えが返ってくると思う。
0254デフォルトの名無しさん2011/12/01(木) 18:54:25.15
がんばって検索したらビッグオー記法とかいうのがでてきたよ

最初に思いついたのはショータイム
0255デフォルトの名無しさん2011/12/01(木) 22:39:39.44
>>233
エラーだろjk
0256デフォルトの名無しさん2011/12/01(木) 23:05:18.58
>>234
evalは目的じゃなくて手段でしょ?

なんのためにevalを使うの?
Perlで例外をトラップするために使うは答えになってないよ。
0257デフォルトの名無しさん2011/12/01(木) 23:10:54.65
>>241
> だからドカタでも使える言語を明らかにした方が良い。
> Javaは鉄板として、あと何があるのか。

意味がわからん。
動的型付け言語と静的型付け言語の話だろ?

Java以外というのは静的型付け言語を言えばいいのか?
よく使われてる言語だと、C、C++、C#、VB.NET、Scala、 Objective-Cあたりだね。

動的型付け言語はよく使われてるといえるのは、Ruby、Perl、PHP、JavaScript、Pythonぐらいか?
0258デフォルトの名無しさん2011/12/01(木) 23:47:16.22
ScalaやC#やC++11には(OCaml程ではなくても)型推論があるから
それらを知ってれば>>228のようなことは書かないと思うけど。

>>228が特別に無知だったでFA?
0259デフォルトの名無しさん2011/12/02(金) 00:00:39.44
>>258
お前型推論を誤解してないか?

型推論ってのは、型書くのを省略出来るだけで、
型を書いてるのと全く一緒なんだが。
0260デフォルトの名無しさん2011/12/02(金) 00:01:37.04
型を推論できるのは、
どこかに型の情報があるから。
0261デフォルトの名無しさん2011/12/02(金) 00:05:36.47
省略できるんだから明記しなくても良いってことだろ
それとも明記って日本語を理解してないのか?

> ・関数の引数に型が明記されている。
> ・変数に型が明記されている。
> ・オブジェクトの生成から、型をチェックしたい箇所のコードすべてで型が明記されている。

全部間違い
0262デフォルトの名無しさん2011/12/02(金) 00:12:12.07
>>261
> 省略できるんだから明記しなくても良いってことだろ

よく見ると省略されてない。

一見省略されているように見えるが、遠くで明記されている。
それを見て推論しているだけ。

どこにも明記されていなければ、絶対にわかりません。
0263デフォルトの名無しさん2011/12/02(金) 00:15:40.14
まあ、Javaには以下のようなゴミみたいな型推論しかないからねぇ。
知らないのも無理は無いよ。

Map<String, List<String>> anagrams = new HashMap<>(); // 右のダイヤモンドオペレータ内を省略可
0264デフォルトの名無しさん2011/12/02(金) 00:17:01.41
反論するなら、どこでも明記されてない状態でも
推論する方法があるとか言うべきだろ。

反論の仕方がおかしい。
0265デフォルトの名無しさん2011/12/02(金) 00:21:32.82
MLのHindley/Milner型推論では、一切の型注釈無しに、完全かつ健全に、
関数の「もっとも一般的な型」を推論できる事が保証されている
0266デフォルトの名無しさん2011/12/02(金) 00:26:25.16
それは型が自由に作れない言語だから・・・
0267デフォルトの名無しさん2011/12/02(金) 00:26:43.88
全ての関数や変数に型を明記する必要がある
→ プログラムのどこかで型を明記する必要がある
→ どこにも明記してなくても明記してるのと同じ ← いまここ
0268デフォルトの名無しさん2011/12/02(金) 00:50:51.61
> どこにも明記してなくても明記してるのと同じ

だれがそんな事言ったんだ?
0269デフォルトの名無しさん2011/12/02(金) 00:58:39.39
>>266
MLは型は自由に作れる
MLで厳格な型推論が可能なのは、演算子多重定義やメインストリームのOO言語における
ポリモーフィズムやディスパッチの類が存在しないからだろ

端的に言うと+がintにしか定義されていないので
x + yという式を見たらMLのコンパイラはxとyがintだと推論できる
0270デフォルトの名無しさん2011/12/02(金) 01:11:19.88
>>269
一応OCamlにはクラスやオブジェクトもあって、オブジェクトを引数に取る関数が書けるけど、
構造的部分型を採用してるから型注釈は必須じゃない(列多相が型推論される)
0271デフォルトの名無しさん2011/12/02(金) 06:34:08.19
型推論ってのは、型を書かなくてもいいってことじゃなくて、
型の中にパラメトリックな多相があっても、
矛盾のないように型パラメータを具体化して
型の整合性を検証できるということ。

型宣言がめんどくさいから使うんじゃなくて、
より抽象度が高いコードを書くために使うんだよ。

やっぱドカタに静的型付けを使わせるのは壮大なムダでしかないなw
0272デフォルトの名無しさん2011/12/02(金) 06:56:25.48
いつから、めんどくさいから使うって流れに勘違いしてた?
0273デフォルトの名無しさん2011/12/02(金) 07:05:58.09
ずっと型注釈無しで型推論が可能かどうかを議論してたのにね
無知を晒したから話を変えようとしてるのかな?
0274デフォルトの名無しさん2011/12/02(金) 07:47:09.28
>>271
×)ドカタに静的型付けを使わせるのは壮大なムダ
○)ドカタにJava以外を使わせるのは壮大なムダ
■ このスレッドは過去ログ倉庫に格納されています