関数型言語は何故普及しないのかを考えるat TECH
関数型言語は何故普及しないのかを考える - 暇つぶし2ch498:デフォルトの名無しさん
10/09/28 01:35:08
>>439
> 業務アプリ開発には技術的イノベーションはない。

>だから今までのやり方を進歩させる必要がない。

が繋がってないよ。

仮に「業務アプリ開発から生まれるイノベーションがない」のが正しいとしても、
他の研究や開発などから生まれたイノベーションを使ってやり方を進歩させないと
競合他社に勝てないもん。

ま、そんな話は置いといて、とりあえず >>475 の話は興味深い。
続きが楽しみ。

499:デフォルトの名無しさん
10/09/28 01:39:51
>>496
このあたりはPrologでやれば、それまでではないか?

500:478
10/09/28 07:31:45
>>491
>>496
>>497

型推論機能がどこで使われるかと質問したが、まだ答えてもらっていない。
最後に残った Controller で使うのだろうか。

設計をミスったときに、そのことを型推論機能によって発見するのが、
型推論機能付き関数型言語を使う目的なんだよね。

ある設計をしようとして、本来はAと設計するはずが、
Bと設計してしまったために、プログラムのXの部分において
型推論によってYというエラーが発生した。

具体的でごく簡単な実例を使ってこのように示してくれないか。

501:デフォルトの名無しさん
10/09/28 08:35:44
型推論は、明示的に型を記述しなくても整合性が取れているかをチェックしてくれる機能であって、
"型推論によってYというエラーが発生した。"とはならんでしょ。

むしろ型を記述しないことで、より抽象的に記述することを可能にさせる機能。もちろん型推論での記述者はその型について念頭におくことが必要になるけれど.

502:デフォルトの名無しさん
10/09/28 08:36:34
>>476 ストレイチーの言葉ということはありがとう。で、出典は?

503:478
10/09/28 12:54:28
>>501
もし型推論機能がそれだけのことしかしないのであれば、
型シグネチャを明示すれば型推論機能は全く不要となる。

しかし、型を明示せず >>475 の様な考え方をソースコードに落とし込むことが想像できない。

>>475 のようにデータ間の関係を直積などで表現するように思考し、
その正しさをコンパイラで検査するためにソースコードに落とし込む者が、
型シグネチャを省略なんてするだろうか。
そのようなソースコードは嬉しいことにドキュメントの役割も果たしているため、
むしろ型シグネチャは注意深く明記すると思うのだが。

なので型推論機能の出る幕がないように思える。
少なくとも >>488 のエラーを検出するのに型推論機能は要らない。

しかし、>>475 は必要だと言っている。
であれば、当然仕様に関する何かのエラーを検出するためだろう。

504:デフォルトの名無しさん
10/09/28 13:24:47
推論で特定した型で許されない操作が含まれてたらエラーになるでしょ
動的型だと実行時エラーになる場面でも、
型推論を持つ性敵方ではコンパイル、あるいは実行前にはじける

505:デフォルトの名無しさん
10/09/28 13:46:22
>503
型シグネチャの明示を避けるために(も)型推論は使われるのに、明示すれば型推論はいらないってどんだけ(´・ω・`)
型推論はそれをもって何か機能を与えるものではなく、省力化の一手段。
その副作用としてより抽象的な記述ができるというもの。この辺は好みあると思うが、自分は好み。

506:デフォルトの名無しさん
10/09/28 14:22:51
明示しても、エラーの検出のために型推論はする必要があるし、
原理的に型推論できないから明示が必要な場合もあるし、
なんか話が変に飛んでないか?

507:デフォルトの名無しさん
10/09/28 14:25:40
>>498
> 他の研究や開発などから生まれたイノベーションを使ってやり方を進歩させないと
> 競合他社に勝てないもん。

それは進歩ではなく追従

508:デフォルトの名無しさん
10/09/28 14:29:00
>>503
> 型シグネチャを明示すれば
それをし忘れるのが人間でしょが

509:デフォルトの名無しさん
10/09/28 14:36:05
もっと正確に言えば、まちがった型シグネチャを"明示"しちゃうんだよねぇ。
C言語だとChar型なのに変換なしに四則演算できちゃったり、
そういう人間によるおかしな操作をしちゃって、なまじコンパイルが通るから
どこで間違いが発生しているのかバグ追跡が極めて難しくなってくる。
(最近のコンパイラなら少しは賢くなっているが理論的な保証は何も無い)
型推論をすればそういうバグが理論的になくなる。
強い静的型付きの言語なら型推論可能だということが理論的に保証されているから、
Cなどのコンパイラよりずっと賢く型推論できる。

510:デフォルトの名無しさん
10/09/28 14:39:05
そもそも副作用があると型理論による保証がなくなるから、純粋関数型言語でないと
型推論の理論的保証はないんだけどね。

511:デフォルトの名無しさん
10/09/28 14:42:15
>>510みたいな勘違い君の声がでかいからふきゅーしないのは判った

512:デフォルトの名無しさん
10/09/28 14:43:21
>>511
俺勘違いしてる?
ごめん、正しい知識を教えてください。

513:デフォルトの名無しさん
10/09/28 14:45:28
wikipedia見てきたけど、これおかしいよねw
> 型推論(かたすいろん)とはプログラミング言語の機能の1つで、
> 静的な型付けを持つ言語において、変数や関数の型を宣言しなくても
> それを導くのに使われた関数の型シグネチャなどから自動的に型を決定する機構のこと。
> 主に関数型言語で用いられる。

型推論は補完機能とはちがうんだぞっと。

514:デフォルトの名無しさん
10/09/28 14:46:45
型推論と型検査を混同してる奴がいるな

515:デフォルトの名無しさん
10/09/28 14:48:50
>>513
どこもおかしくないように見える

516:デフォルトの名無しさん
10/09/28 14:50:14
俺が勘違いしていました。すみませんでした。

517:デフォルトの名無しさん
10/09/28 14:50:56
でも型推論なんて型検査のオマケでしょ

518:デフォルトの名無しさん
10/09/28 15:16:47
>>512
OCamlにもF#にも型推論はある。後は分かるな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch