5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

関数型言語は何故普及しないのかを考える

1 :デフォルトの名無しさん:2010/06/22(火) 23:05:06
きっと、Lisp厨とHaskell厨が声高に演説してくれるでしょう。

2 :デフォルトの名無しさん:2010/06/22(火) 23:13:59
手続き型、関数型という区分け自体が既に時代遅れ
最近の言語はどれも中間的な言語になっている

3 :デフォルトの名無しさん:2010/06/22(火) 23:14:12
人間の思考が手続き型だから。

コンピュータの話に限らない。
文章だって長々と一文で書くより、
分けて書いたほうがわかりやすいだろ?
それと同じ。

4 :デフォルトの名無しさん:2010/06/22(火) 23:38:22
数学の抽象的な議論が普及しないのと同じ

5 :デフォルトの名無しさん:2010/06/22(火) 23:39:16
読みやすさの基準
数式<<<関数型<<<手続き型<英語<日本語<<<<<<映画(字幕スーパー)

6 :デフォルトの名無しさん:2010/06/23(水) 01:31:10
以上、算数に私怨のある素人仕分け人の皆さんでした。

7 :デフォルトの名無しさん:2010/06/23(水) 01:42:25
いや、そんなことどうでもいいから
何で普及しないのか書けよ。

8 :デフォルトの名無しさん:2010/06/23(水) 05:36:36
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

9 :デフォルトの名無しさん:2010/06/23(水) 07:40:28
>>7
布教活動がふぬけているからに決まってる。

関数型言語でゲームを「いっぱい作った」実績を見せたり、
業務アプリを「素早く作った」実績を見せたりすれば、
誰もが注目し、ちゃんと普及する。

それなのに、薦める奴らは何で実績を見せないんだろうな。

たまに実績を示す奴でも、海外の誰々という研究者が
GUI のエディタを関数型で作ったとか、
日本の誰々がグラディウスを移植したとか、そんな話ばっか。

「おまえでも」そういうアプリが作れるという実積を見せなきゃ、
誰も感銘なんて受けないのに。

10 :デフォルトの名無しさん:2010/06/23(水) 09:09:31
なんで >>9 にとって、モナディウスの作者が「おまえ」でないかを考えるスレになりました

11 :デフォルトの名無しさん:2010/06/23(水) 09:10:20
関数型を色々参考にして普及したのに関数型に分類されない言語がたくさんある
分類がふぬけている
分類が時代遅れ

12 :デフォルトの名無しさん:2010/06/23(水) 10:19:01
手続き型か関数型かとかより
キーワードやブロックの記述が C と似てないのは
覚えるのがめんどくさい。

13 :デフォルトの名無しさん:2010/06/23(水) 12:37:41
>>10
勘違いさせたしまったようで悪かった。

俺が言いたかったのは、
関数型も実用的だよと言って薦めてくる「作者以外の奴ら」の事。
モナディウス作者はこの話の中に限れば、どうでもいいんだよ。

「モナディウスも作れるんだぜ、だから関数型は凄いよ、使えるよ」
という奴らに対して「君は何を作ったの? 何を作れるの?」と訊くと、
たいていは答えられない。
ちゃんと答えられる布教者が何人も出てくると、
普及する兆しがちょっと出てくる。

14 :デフォルトの名無しさん:2010/06/23(水) 13:14:05
卵と鶏

15 :デフォルトの名無しさん:2010/06/23(水) 13:40:16
美味そうな卵はぜんぶ食われてしまった。
でも、売れ残った卵から生まれたやつらは、自分達が生存競争に勝ってると思ってる。

16 :デフォルトの名無しさん:2010/06/23(水) 20:15:56
>>13
お前は手続型で何を作れるの?

17 :デフォルトの名無しさん:2010/06/23(水) 20:53:21
自社のゲームを作った(正確にはその一部)
自社内の製品管理システムを作った
自社内のテクスチャエディタを作った
その他色々、挙げきれない

18 :デフォルトの名無しさん:2010/06/23(水) 20:53:58
それって凄いソフトなの?

19 :デフォルトの名無しさん:2010/06/23(水) 21:24:33
凄いという意味が分からん。
利用者がやりたいことを(ある程度)実現するソフトウェアを作っただけだ。

おまえの中ではどういうのを凄いと言うんだ?

20 :デフォルトの名無しさん:2010/06/23(水) 21:32:33
関数型言語を選んだからにはその特徴を大いに利用して、
それでいてかつ、それなりの規模があるソフトである必要はあるだろうな

21 :デフォルトの名無しさん:2010/06/23(水) 21:40:23
普及させたいがコモディティ化は気に入らないという、ありがちな話

22 :デフォルトの名無しさん:2010/06/23(水) 21:58:04
特徴を大いに利用するのは手段であって目的ではないな。
目的にしてしまっては普及は不可能だ。

あくまでも目的は、ある要求に対して
これくらい早く簡単にプログラムできる、
これくらい分かりやすくプログラムできる、
「小規模なら熟練者じゃなくてもソフトウェアが作れる」
ということをちゃんと示す事。
そのために関数型言語の特徴を利用する。

ソフトウェアの規模は、普及させる初期段階では
それほど必要ではないと思うし、
関数型言語はまだ初期段階にすらなってないように感じられる。

23 :デフォルトの名無しさん:2010/06/23(水) 22:57:16
メリットがないのに流行るわけないから
特長の利用は目的と言っても過言ではないよ

24 :デフォルトの名無しさん:2010/06/23(水) 22:58:22
関数型言語に波長が合う人が少ないのが原因
性能が劣っているというこてゃない。むしろその逆

25 :デフォルトの名無しさん:2010/06/23(水) 23:27:51
>>23
仮にメリットがなくて互角だとしても、どっちかが偶然に流行るわけだが
そっちが偶然を信じないなら、あっちが不戦勝だ

26 :デフォルトの名無しさん:2010/06/23(水) 23:45:26
副作用がないからテストが楽とか言うけど
そのあたりを大きな規模の具体的なプログラムで説明しないから
実感湧かないんだと思うぜ

27 :デフォルトの名無しさん:2010/06/24(木) 00:03:33
具体的な例を挙げても抽象化されたコードにアレルギーがある人には無理なんだって

28 :デフォルトの名無しさん:2010/06/24(木) 00:14:51
『一般人は俺等みたいに思考が自由じゃないから、どんなに価値がある物でも
本質を理解しようとせず、無闇矢鱈と意味も無く闇雲に嫌っているだけで、
どうやったって救いようが無いから、原因を考えたって無駄だって言っただろ。
奴らが関数型言語のメリットを理解するには後500年は掛かるぜ。』

↑みたいな意見が出るかと思ったら意外とそうでもなかったね。

29 :デフォルトの名無しさん:2010/06/24(木) 01:23:40
思考が自由かどうかは別として思考が異なるから理解できないのは事実

30 :デフォルトの名無しさん:2010/06/24(木) 03:30:40
『関数型言語の実装がこれだけあるのにも関わらず使ってない人たちは先を見通す力の
無い人たちなんだから、一々相手にしなくていいでしょ。使いこなす能力を持ってる人が
便利に使えばそれで良いだけ。関数型言語を理解出来ない人がどれだけいようと、
俺等には関係無いし、普及するのがそんなに大事な事か疑問だね。』

↑こういう意見も無かったな。

31 :デフォルトの名無しさん:2010/06/24(木) 03:40:58
先を見通す力が無いかは別として、一般に使いこなせる人の絶対数が少ないから、企業の開発などではなく
個人のサーバーサイドプログラミングなんかで使える人が使えばいいというのは事実

32 :デフォルトの名無しさん:2010/06/24(木) 12:23:39
処理すべき現実世界の事象が関数型的ではないから

33 :デフォルトの名無しさん:2010/06/24(木) 13:36:58
その時々で最適な方法を選べたらそれで良い

34 :デフォルトの名無しさん:2010/06/24(木) 17:15:36
http://www.indeed.com/jobtrends?q=Lisp,SML,Haskell,Scala,OCaml
Scalaの求人は急激に増加し、すでに他の関数型言語を上回りました。
「関数型言語は普及しない」はScalaには当てはまりません。

Scalaは非常に豊富なJavaライブラリを利用できます。
また、手続き型風にも関数型風にも書けます。
純粋関数型言語が普及しない原因はライブラリ不足と
関数型では書きにくい処理があるためと考えられます。

35 :デフォルトの名無しさん:2010/06/24(木) 21:37:56
>>34
>すでに他の関数型言語を上回りました。

が何で

>「関数型言語は普及しない」」はScalaには当てはまりません。

に繋がるの?

人気のある普通の言語と比べないと意味無いじゃん

36 :デフォルトの名無しさん:2010/06/24(木) 22:09:00
それはともかく、純粋関数型言語の Haskell に、
他の人気のある言語には普通にある類のライブラリが欠けている事はたしかだ。

さっさとスタンダードと言える GUI ライブラリを整備して欲しい。

これが無いままなら、普及なんて絶っっっっ対にムリだよ。

37 :デフォルトの名無しさん:2010/06/24(木) 22:18:36
普及する事が全てだという価値観ならそうかもな

38 :デフォルトの名無しさん:2010/06/24(木) 22:20:45
何故普及しないのかを考えるスレなんだから、
普及する事が全てだろ

でなきゃスレチじゃないか

39 :デフォルトの名無しさん:2010/06/24(木) 22:57:56
そういう意味では Haskell がスレ違いだな

40 :デフォルトの名無しさん:2010/06/25(金) 21:05:08
Haskellは普及してるって意味?

41 :デフォルトの名無しさん:2010/06/25(金) 22:59:49
【手続き型小説】
吾輩は猫である。
名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩はここで始めて人間というものを見た。

【関数型小説】
人間というものを始めて見た薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶しているがどこで生まれたかとんと見当がつかず名前がまだ無い猫である吾輩。


どっちが読みやすい?


42 :デフォルトの名無しさん:2010/06/25(金) 23:09:11
前者の方が圧倒的に読みやすい

ところで、関数型小説がそのようになる根拠を示してくれ
どあたりが「関数」なんだ?

43 :デフォルトの名無しさん:2010/06/25(金) 23:13:23
>>42
関数型言語で3重ループとか書いてみればわかるよw

44 :デフォルトの名無しさん:2010/06/25(金) 23:15:54
どちらにしろ例えとしては無理があるな

45 :デフォルトの名無しさん:2010/06/25(金) 23:22:37
面白いと思って書いたんだろ。分かってあげなよ。

46 :デフォルトの名無しさん:2010/06/25(金) 23:25:39
>>42
大昔のコピペだから、それ
小説っつってるから文体(と言うのか?)を見て「関数」かどうかは無視してるんだろ。

関数型言語でも結果を毎回一時変数にbindすれば見た目手続き型と同じになるだろうけど、
そうしないで書いちゃうこと多いから見づらいと感じる人が多いんだろうね。


47 :デフォルトの名無しさん:2010/06/25(金) 23:34:38
手続き型だってメソッドがチェーンする様に書く事も出来るし、
Smalltalk のカスケードも変数を介さないで複数の式を繋げる
手法の一つ。それらが見辛いとは思わないね。

48 :デフォルトの名無しさん:2010/06/25(金) 23:40:35
結局手続き型風な書き方をするから
関数型言語は普及しないと。

49 :デフォルトの名無しさん:2010/06/25(金) 23:48:59
コピペを貼るにもセンスが必要だってことだな

50 :デフォルトの名無しさん:2010/06/26(土) 01:06:10
>>43
関数型言語で3重ループってなんだよ。

関数型は Haskell しか使ったことないが、
3重ループなんて見たことないぞ。

51 :デフォルトの名無しさん:2010/06/26(土) 01:29:40
種類 我が輩 = 猫
名前 我が輩 = undefined
記憶 我が輩 = [薄暗いじめじめした所でニャーニャー泣いていた]
経歴 我が輩 今 = ここで始めて人間というものを見た

52 :デフォルトの名無しさん:2010/06/26(土) 11:11:43
Haskellでも手続き型風に書けばいいのか

53 :デフォルトの名無しさん:2010/07/18(日) 02:25:57
作ってる奴らが普及させる気が無いからだろ。
具体的に言うとWindowsで使わせる気が無いのが悪い。
普及させたければ何よりもWindowsユーザーを最優先しないといけない。

54 :デフォルトの名無しさん:2010/07/18(日) 02:39:52
あほにレヴェルあわせるとあほになるお

55 :デフォルトの名無しさん:2010/07/18(日) 03:11:38
ぷw
閉じた世界にいるくせにレベルとかお笑いだな。

56 :デフォルトの名無しさん:2010/07/18(日) 09:04:04
>>53
そのとおりだ。関数型プログラミングのウリはモジュール性なのに、
全部一から作るつもりかよ。

57 :デフォルトの名無しさん:2010/07/19(月) 22:47:58
数学の公式がそのまま使えて凄い簡潔に書ける!みたいなのをどこかで見たけど
手続き型のコードを一つ一つ追っていく方が読み易いのは俺だけなんだろうか

58 :デフォルトの名無しさん:2010/07/19(月) 23:13:07
手続き型では長年の数学の成果を応用する機会を見逃してしまいそうだね
もったいなくて数学を捨てられないタイプの人は関数型の方が安心だろうね

59 :デフォルトの名無しさん:2010/07/19(月) 23:16:41
すみません
手続き型でも関数型でもどちらでもよいのですが
たとえば
1 + 2 + 3 + ... + n
を計算するプログラムを書くときに
ちゃんと
Σn
の公式にに発想をチェンジしてくれる言語はありますか?


60 :デフォルトの名無しさん:2010/07/20(火) 02:13:32
制約のある言語に頼らないと思考を最適化できんのか

61 :デフォルトの名無しさん:2010/07/20(火) 03:25:02
BASICしか知らない奴にCで簡潔に書ける!と説いたところで馬耳東風だろ

62 :デフォルトの名無しさん:2010/07/20(火) 08:49:19
>>59
APLを求めてるのか?

63 :デフォルトの名無しさん:2010/07/20(火) 15:36:56
詳しく知らないけどMathematicaとかで出来んじゃね?

64 :デフォルトの名無しさん:2010/07/20(火) 15:40:55
平たく言えば逆コンパイラだな

65 :デフォルトの名無しさん:2010/07/20(火) 15:44:04
HPFの自動ベクトル化のことかも

66 :デフォルトの名無しさん:2010/07/20(火) 19:11:21
関数型言語で飯が食えるようになればあとは趣味の問題だ。
とりあえず、飯を食べれるようにするべきだろ今は。

67 :デフォルトの名無しさん:2010/07/20(火) 19:31:49
今のところはアクロバティックに食うしかないな

68 :デフォルトの名無しさん:2010/07/21(水) 10:02:38
普及してきたじゃないか

69 :デフォルトの名無しさん:2010/07/21(水) 21:10:16
ある程度波に乗れているときに、飯を食えるように整備しておかないと結局元に戻る。
あまたある理論よりも、自分のキャリアの終わりまで飯が食えるというのが最も強い。

70 :デフォルトの名無しさん:2010/07/23(金) 20:32:49
>>59
「AをBに発想をチェンジ」の意味をも少し詳しく説明してくれ

文字通りに受け取るなら、AとBをここに書き込んでる時点で
お前は既に発想をチェンジしているはずだが

71 :デフォルトの名無しさん:2010/07/24(土) 02:02:56
????
回答者チェンジで

72 :デフォルトの名無しさん:2010/07/25(日) 00:00:27
つまり、>59は等差数列の和を求めるプログラムを書いたら等差数列の和を公式に基づく最適化をしてくる言語はあるかと聞いているのだろ。
同値の和のループを積に最適化するくらいなら普通のCコンパイラでも最適化してくるけど、等差数列はどうなんだろね。

73 :デフォルトの名無しさん:2010/07/25(日) 00:34:09
ドラえもんの世界のコンパイラなら。。。

74 :デフォルトの名無しさん:2010/07/25(日) 00:35:18
>>72
等差数列の和を求めるプログラムである事が分かるためには、
その数列の各項の数値が分からなければならないんだが、
それが分かれば和を公式にしなくても、合計はコンパイル時に分かると思うぞ


75 :デフォルトの名無しさん:2010/07/25(日) 04:45:11
つまり Erlang 最強ってことか

76 :デフォルトの名無しさん:2010/07/27(火) 00:44:22
>34
http://www.indeed.com/jobtrends?q=Lisp%2CSML%2CHaskell%2CScala%2COCaml%2CC%23&l=

関数型はゴミのようですね。グラフが一本しかないので何か入力を間違えたのかと思いましたw

77 :デフォルトの名無しさん:2010/07/27(火) 01:15:59
情報系以外の学部、
特に理学部で教えないからでしょ。
物理系はFortran,化学系はGaussian,生物系はperlとか分担あるからね。
数学科はgapか。入り込む余地がない。

関数型のkiller用途って何よ?
情報系だけの用途で自己満足してる気がする

78 :デフォルトの名無しさん:2010/07/27(火) 06:54:41
物理も化学も生物も工学も、ライブラリがあれば問題ない。
っていうかライブラリがないだけ(にわたまだけど)。

数学科はむしろ関数の本家だろ。

79 :デフォルトの名無しさん:2010/07/28(水) 00:11:45
関数型だと圧倒的に便利、他では代替が効かない
というくらいの用途をCS以外の分野では聞かないのだよ。

ライブラリがあったとしても
わざわざ関数型使うって言うのは、一歩間違えると手段と目的を
取り違えてるんではないか?

勉強、パズルとしてはおもしろいよ。
しかし、それ以外の実利的幸せを得られるという話を聞いたことがない。

ベクトル型スパコンの言語を関数型にすると性能が倍になるとか
開発工数やテスト工数が8割減になるとか、
そんな例があれば起爆剤になると思うんだが。

80 :デフォルトの名無しさん:2010/07/28(水) 01:16:17
つか、手続き型と関数型を上手く繋ぐインタフェースっていうか、いいとこ取り的なことが出来る環境は無いの?

81 :デフォルトの名無しさん:2010/07/28(水) 01:30:25
>80
つF#、Scala

82 :デフォルトの名無しさん:2010/07/28(水) 02:17:52
Erlang

83 :デフォルトの名無しさん:2010/07/28(水) 07:21:33
>>80
そもそも手続き型、関数型それぞれの良いところってどこだ?

84 :デフォルトの名無しさん:2010/07/28(水) 09:34:09
手続き型 馬鹿でも使える
関数型 自慢できる

85 :デフォルトの名無しさん:2010/07/28(水) 22:54:17
http://jp.rubyist.net/magazine/?0017-Hotlinks

この人Haskellに結構詳しい人(Ruby界では神レベル)だと思うんだけど、
> 青木 うーん、面白いとは思うけど、書きたいとは思わないなぁ。
って言ってる。理論的には優れてても、実際使うとそうでも、、ってことかな。
確かに俺もHaskellの言語仕様は大体わかってるつもりだけど、実際Haskellで
ある程度のもんは作ったことない。

関数型でGUIとか作り始めたら、モナドだらけになって実質手続き型になるし、
オブジェクト指向だって、他の下位オブジェクトに処理をデリゲート(つまりモナド
に囲い込む)して、自分自身は参照等価っぽいオブジェクトにするってことはよくある。

結局同じだから、ハイブリッドな言語が生き残るのかもね。

>>80
ん?最近の手続き(オブジェクト指向)言語は関数型の概念も取り入れてるぞ。
たとえば俺の得意なRubyだとブロックとか。
[1, 2, 3].map {|x| x * 2 }
で[2, 4, 6]ができるし、
lam = -> x, y { x * y }
って書けば関数オブジェクトが代入される。

あまり知らないけど、C#も関数型を取り入れてるって聞いた。

86 :デフォルトの名無しさん:2010/07/29(木) 01:32:25
C#なら
new []{1,2,3}.map(x=>x*2)で[2, 4, 6]なふうになる(出来る)

87 :デフォルトの名無しさん:2010/07/29(木) 03:23:27
個別的な利点じゃなくて、どのぐらい使われるかどうかというところが問題なんだ。
UNIXのC言語、EXCELマクロのVBA、動的Webサイト作成のためのいろんな言語しかり、
まずプラットフォームを提示しなきゃダメだ。それこそめちゃ難しいが。

あと、いわゆる関数型パラダイムを強調すればするほど人が離れていく。
特にメリットが説明出来ない作法については適当に崩していくべきだよ。

88 :デフォルトの名無しさん:2010/07/29(木) 13:01:12
手続き型では難しいことを簡単に書けるのが関数型。
手続き型では簡単なことを難しく書けるのが関数型。
って、ばっちゃが言ってた

89 :デフォルトの名無しさん:2010/07/30(金) 21:06:59
関数型言語では原則手続き的なプログラミングをすることにすれば万事オーケー。
奇特な人は関数型プログラミングをすればいい。

90 :85:2010/07/30(金) 21:16:05
>>86
そのコード見てC#おもしろそうだな、と思った。色々調べてみたら結構アジャイル
意識する言語なんだな。Windows onlyなのが残念すぎる。

しかし、C#みたいなメインストリームが関数型のいいところを取り入れてること
を考えると、本物の関数型はますます普及し辛くなるんじゃないか?

91 :デフォルトの名無しさん:2010/07/30(金) 21:25:14
> Windows onlyなのが残念すぎる。

つ Mono

92 :デフォルトの名無しさん:2010/07/30(金) 21:34:48
>>91
おおお、トンクス

C#ちょっとかじってみるかな夏だし。しかし、互換性とか大丈夫なのだろうか。
てか互換性の前にVSがないじゃんかああああ。

93 :デフォルトの名無しさん:2010/07/30(金) 22:06:40
MonoDevelop?

94 :デフォルトの名無しさん:2010/07/30(金) 23:19:12
C++みたいに一旦普及させてからパラダイムの方向を変えていけばいいじゃん。

95 :デフォルトの名無しさん:2010/07/30(金) 23:21:57
文字列を置換するプログラムを書け。
ただし、VC++を使うこと。

さて、大きく分けていったい何種類のやりかたが存在するのだろうか・・・

96 :デフォルトの名無しさん:2010/07/31(土) 14:59:05
C#が関数型取り入れるのは大いに結構つーか勝手にしろって感じだが
Javaではやらないでほしいな、Javaはシンプル路線で進んでほしい

97 :デフォルトの名無しさん:2010/07/31(土) 15:12:51
シンプルは使いにくい

98 :デフォルトの名無しさん:2010/07/31(土) 15:29:27
今、Windows + Haskell + GUI で全章が構成されている易しい本を書いたら、
ヒットする足がかりを Haskell は絶対に得る。

逆に言えば、それがなければ一般大衆には絶対に普及しない。

ただし、wxHaskell や Gtk2Hs などを直接使うような低レベルのライブラリではなく、
その上に一段被せる wxFruit や Grapefruit、FG などで解説しないと意味は無い。

99 :デフォルトの名無しさん:2010/07/31(土) 17:45:13
一般大衆はHaskellなんか使わんだろ。いや他の言語も使わんだろうけど。

100 :デフォルトの名無しさん:2010/07/31(土) 20:59:36
いや、使うって

うぁGUI簡単じゃん、おもしれーよ
ってなったら絶対に使うよ

101 :デフォルトの名無しさん:2010/07/31(土) 21:04:45
VBA最強。GUIも簡単。

102 :デフォルトの名無しさん:2010/07/31(土) 22:20:16
VBとVBAて何がチガウノ?

103 :デフォルトの名無しさん:2010/08/01(日) 07:50:48
>>100
どんなに凄いライブラリ用意しようが、VisualStudioみたいなIDEを作らないと絶対無理。


104 :デフォルトの名無しさん:2010/08/01(日) 13:06:58
EclipseでHaskellの開発できるみたいだぞ。
どこまで使えるかわからんが。

105 :デフォルトの名無しさん:2010/08/01(日) 13:52:02
関数型のIDEって大したもんできなさそうだよなぁ。
型推論のせいでインテリセンスがきかないんじゃねえの。

106 :デフォルトの名無しさん:2010/08/01(日) 14:16:14
型推論の機能がどのようにインテリセンスを阻害するのか気になる

107 :デフォルトの名無しさん:2010/08/01(日) 14:58:47
引数の型を明示的に指定できないのだから
例えば、引数がレコード(Cの構造体みたいなもん)だった場合
IDEは型がわからないからレコードのフィールド名を補完できないんじゃないの。

108 :デフォルトの名無しさん:2010/08/01(日) 17:54:05
>>107
関数型言語のIDEは、IDE自身もコンパイラと同じ様に型推論するだろ普通。
でなければ関数型用のIDEなんて、とてもじゃないが呼べない。

ただ、Haskell の場合、コード中の前の方で使用している型の定義とかが
それより後ろで定義されていても全く問題なくコンパイルできる。
だから、テキストエディタでそのようにプログラマに記述されると、
その型を初めて使用する段階では型名が分からず補完できない場合もある。

109 :デフォルトの名無しさん:2010/08/01(日) 18:40:26
関数型は単独で表舞台に立つよりも、他のパラダイムの言語に侵食して
わかりにくいとかウザいとかいわれるのが似合ってるんだろうな

110 :デフォルトの名無しさん:2010/08/01(日) 18:59:57
>>108
いや、だからいつ型推論するのw
型推論するには一度は人間がその型が何なのかわかるように書かないとダメじゃん。
つまり、補完の効かない状況で書かないといけない。
一度その引数を使えば以降は補完できるようにはなるかもしれないが
明らかに使い勝手は悪くなるねえ。
補完なんてのはそもそもメソッド名なりフィールド名なりがわからないから必要なんであって
調べなきゃいけないのなら有り難味はほとんどないな。

111 :デフォルトの名無しさん:2010/08/01(日) 19:20:55
コンパイラが型推論してくれるのと同じレベルでIDEも型推論できるだろ.
コンパイラにも明示的に型を指定するかそうでなければそもそもジェネリックになってんじゃねーの?

112 :デフォルトの名無しさん:2010/08/01(日) 19:26:56
関数型言語でも、この変数は○○型って
定義すれば良いんじゃね?

手続き型でも最初に変数定義してるじゃん。
関数型でも変数定義すればいいんだよ。

113 :デフォルトの名無しさん:2010/08/01(日) 20:48:49
型推論じゃなくなりますね^^;

114 :デフォルトの名無しさん:2010/08/01(日) 22:13:00
>>109
明らかに侵食しているにもかかわらず華麗にスルーされるというのに美学がある。

115 :デフォルトの名無しさん:2010/08/01(日) 22:36:51
>>110
たとえば GHCi は関数名やモジュール名を書きかけて Tab を押すと、
補完してくれたり候補を表示してくれるよね。
あれは、ロードしたモジュールと、今まで定義した関数に関しては、
ちゃんと機能してくれる。

当然だけど、後で定義するつもりの関数に関しては機能しない。
(しかしそれは他言語でも同じ。Haskell の場合それでもコンパイルできるというだけのこと)

ついでに、:t コマンドを使えば VS で言うパラメータヒントみたいなことも、
もっと賢くやってくれる。

俺は IDE の「補完や候補表示」はあれくらいで十分だと思う。

それ以上の機能を持った補完や候補表示って、たとえばどんなのがあるの?

116 :デフォルトの名無しさん:2010/08/01(日) 23:26:02
>>115
>当然だけど、後で定義するつもりの関数に関しては機能しない。

の件はそもそも GHCi はインタプリタだから関係なかったな。
すまん、蛇足だった。

何が言いたかったのかというと、関数は一度定義すれば、
人間が明示しなくても型推論はできて補完もできるだろ、
という事を GHCi を例に挙げて言いたかった。

26 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)