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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/10/11(月) 19:07:49
あくまで、関数型言語は何故普及しないのかをメインに考えるスレです。
このテーマの存在をどうかお忘れなきよう願います。

前スレ
 関数型言語は何故普及しないのかを考える
 http://hibari.2ch.net/test/read.cgi/tech/1277215506/l50
0652デフォルトの名無しさん2010/12/22(水) 22:14:41
>>631
あーそうなん?
悪貨が良貨を駆逐した例ってことなんかな?w
0653デフォルトの名無しさん2010/12/22(水) 22:30:03
初心者なればこそCはやるべきでしょ
Cできないんじゃお話にならない
0654デフォルトの名無しさん2010/12/22(水) 22:34:41
初心者は高級言語から入ったほうがいい
0655デフォルトの名無しさん2010/12/22(水) 22:41:58
>>653
誰もCをやるなとは書いてないじゃん
Cから始める人、Haskellから、VBからと多様性があるのは悪い事でもあるまい
0656デフォルトの名無しさん2010/12/22(水) 22:42:17
なんでもいいが、
最低限実行ファイルが作れる言語な
0657デフォルトの名無しさん2010/12/22(水) 22:43:22
>>656
なぜ
0658デフォルトの名無しさん2010/12/22(水) 22:43:36
初心者こそマシン語アセンブリ語からやるべき
その次はLisp、その後にC
0659デフォルトの名無しさん2010/12/22(水) 22:52:34
>>651
haskellのunsafeCoerceはどうよ?
その論理だと、haskellもC同様型付けは弱い言語になるのでは
0660デフォルトの名無しさん2010/12/22(水) 22:59:45
>>659
Cだとキャストとかcoerceのために何の呪文も唱えず
ごく普通にこういう風に代入できるし、勿論誰もチェックしないし、
ポインタを使ったunsafeなコードを隔離するのも困難なので
さすがに一緒にはできないのでは

void *p = "Don't do this" + 1;
int *np = p;
*np++ = 12345;
0661デフォルトの名無しさん2010/12/22(水) 23:22:25
>>657
作ったプログラムを配布しやすいからじゃないか?
初心者が自習するのには、関係ない話ではあるが。

>>659
void*、union、...(さらに、マクロも入れるべきか)は、一種の「呪文」だと思う。安上がりで、
genericityを手に入れるための。
0662デフォルトの名無しさん2010/12/22(水) 23:27:45
なるほど、そういう見方もあるか
Cの問題は、ごく普通のプログラムでもしばしばその種の呪文に触れる
必要があるってことかな
0663デフォルトの名無しさん2010/12/22(水) 23:49:01
Cのvoid*型とJavaのObject型の違いは、実行時のチェックだよ

なのに、静的な型付けのおかげで安全だ、とミスリードする
こういう呪術的なものは本当にごく普通にある
0664デフォルトの名無しさん2010/12/22(水) 23:57:31
コンパイルチェックや実行時チェックは、いざ正常に出来上がって動き出したら無駄な負荷でしかない
デバッグモードで詳細が取れれば言語仕様を安全にする必要はないんだが
0665デフォルトの名無しさん2010/12/23(木) 00:10:50
なんか今日になってみんな書きこみだしたけど、もしかして規制解かれたの?
0666デフォルトの名無しさん2010/12/23(木) 00:14:36
>>664
お前の言う「正常に出来上がって動き出したら無駄な負荷でしかないコンパイルチェック」
って何の事だ?
0667デフォルトの名無しさん2010/12/23(木) 00:16:40
JIT
0668デフォルトの名無しさん2010/12/23(木) 02:21:28
Rがいいんじやないか。手続き型、関数型両方書けるし。
0669デフォルトの名無しさん2010/12/23(木) 02:36:51
>>658
マシン語アセンブリ語やれば自動的にCもできるじゃん
Cなんて汎用アセンブラ以外の何者でもないだろうに
0670デフォルトの名無しさん2010/12/23(木) 02:38:12
Mathematicaやってろよ
0671デフォルトの名無しさん2010/12/23(木) 02:44:05
ためして見るには目玉が飛び出るお値段
0672デフォルトの名無しさん2010/12/23(木) 08:58:29
>>634 スタック使えよ
0673デフォルトの名無しさん2010/12/23(木) 13:11:16
関数型言語って何?それ極めると、C言語で再帰関数が簡単に書けるようになるの?
0674デフォルトの名無しさん2010/12/23(木) 13:20:30
>>673
頭が良くなる
0675デフォルトの名無しさん2010/12/23(木) 13:23:50
すげぇや!^q^
0676デフォルトの名無しさん2010/12/23(木) 13:34:31
>>673
たとえば10進数を2進数に変換するときに
順番に2で割っていって最後に逆順に表示
ってことをやるんだけどこれを再帰的に
プログラムに書くとどうなりますうか?
0677デフォルトの名無しさん2010/12/23(木) 14:11:14
>>676
Haskellだと、例えばこんな感じかな:
num2binlist n = let{ f 0 [] = [0]; f 0 l = l; f n l = f (n `div` 2) (n `mod` 2 : l) } in f n []
0678デフォルトの名無しさん2010/12/23(木) 14:15:49
>>673
大雑把に言えば、関数型言語は
全ての計算を(写像とほぼ同義な)関数の評価によって行う言語だよ。

一方C言語なんかの手続き型言語は、
状態を変化させる命令によって全ての計算を行うんだよ。

> それ極めると、C言語で再帰関数が簡単に書けるようになるの?

「再帰」というものの考え方はどの言語でも同じだよ。
だから、例えば Java を極めればCでの再帰関数が簡単に書けるようになる、
とも言えてしまう。
C言語で再帰が理解できない人は関数型でも他言語でも理解できないよ。
どれでも理解するのに同じくらいの努力が必要になるね。

ちなみに関数型では、現実的には再帰計算を明示的に記述することはあまりないよ。
ふつうは再帰計算を暗黙的に行う高階関数(関数を引数に取ったり返したりする関数)が
すでにライブラリで用意されているから、可能な限りそれを駆使するよう努める。

その方がプログラムソースの見通しが良くなるし、
おまけとしてコンパイラの最適化機能を働かせるのが簡単になるからね。
(これについては私が知ってるのは Haskell だけだが、他の言語でも似たようなものでしょ)
0679デフォルトの名無しさん2010/12/23(木) 15:11:51
(defun num2binlist (n)
 (labels ((f (i binlist)
       (if (zerop i)
         (or binlist 0)
         (f (truncate (/ i 2)) (cons (mod i 2) binlist)))))
  (f n nil)))
0680デフォルトの名無しさん2010/12/23(木) 15:25:46
>>676 すちぇめ
(define (f x)
(if (= x 0) '()
(begin (f (quotient x 2)) (display (logand x 1)))))
0681デフォルトの名無しさん2010/12/23(木) 15:41:06
Cだと
void printbin(unsigned n)
{
    if (n > 1) printbin(n >> 1);
    printf("%u", n & 1);
}
ってとこだろ

これだけだとCでも十分短くて大して変わらんけど、
これでは印字する以外の使い道が無いので汎用性が低い

リストのような形で数の列を簡単に扱える言語なら、印字するのではなく
リストを返す関数にすれば汎用性を高められる

この例だと生成される数の列が有限にしかならないが、
そうとは限らない問題の場合は、無限リスト的な物を扱える言語なら、そう作ることで
より汎用性を高められる
0682デフォルトの名無しさん2010/12/23(木) 15:51:26
haskellだとモナドのおかげで
とりあえずprintしといて後でreverseできるよって例を書こうとして
ググってもビット演算子が出てこんから挫折した\(^o^)/
0683デフォルトの名無しさん2010/12/23(木) 16:36:10
たとえば10進数をn進数に変換するときに
順番にnで割っていって最後に逆順に表示
ってことをやるんだけどこれを再帰的に
プログラムに書くとどうなりますうか?
0684デフォルトの名無しさん2010/12/23(木) 16:44:51
>>682
あるよー。超あるよー bit演算子:
http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Bits.html

0685デフォルトの名無しさん2010/12/23(木) 16:46:21
>>683
http://hibari.2ch.net/test/read.cgi/tech/1289292155/477
関数型言語でどうやるかはしらない。
0686デフォルトの名無しさん2010/12/23(木) 17:18:24
>>682
2進数はn進数の一種だからbit演算子より整数の割り算と余りの方が良いのでは?
http://haskell.org/ghc/docs/7.0-latest/html/libraries/haskell2010-1.0.0.0/Prelude.html
>div :: a -> a -> a
>  integer division truncated toward negative infinity
>mod :: a -> a -> a
>  integer modulus, satisfying
>   (x `div` y)*y + (x `mod` y) == x
>divMod :: a -> a -> (a, a)
>  simultaneous div and mod
0687デフォルトの名無しさん2010/12/23(木) 19:20:00
>>684
超ありがとう。満足♪
f :: Int -> IO ()
f n = if n==0 then return () else f (Data.Bits.shiftR n 1) >> (printf "%d" (n .&. 1))
g n k = if n==0 then return () else g (div n k) k >> (printf "%d" (mod n k))

reverseを使ってみた版
当初IO [a]をliftMでreverseみたいなのが頭の中にあったものの
printとかじゃIO[a]は作れなかったので
結局リストに入れただけ
思ったより複雑になってしまったし
あまり利点が感じられなかった

h:: Int -> Int -> [IO ()]
h n k = if n==0 then [] else (printf "%d" (mod n k)) : (h (div n k) k)
i n k = List.reverse $ ((putStrLn ""):(h n k))
j k n = List.foldl (\a b -> a >> b) (return ()) (i n k)
tester k = mapM_ (j k) [1..10]
--2進数と3進数で10まで出力
main = tester 2 >> tester 3
06883392010/12/23(木) 19:36:49
>>341
規制で書けなかった
おまえは一行で言語の仕様を全て把握できるんだな?
定義しようが同じ関数には違いないんだろ?
a <== b <== c <== d
<==は関数であり文の外で定義されているものとする
<==はxクラスを受け取ってyクラスを渡す
ab間bc間cd間が同じ関数だと知ることができる
関数は関係そのものである
従って同じ関係であると"知ることができる"
e<==(f<==(g<==(h)))
g<==メソッドはmクラスを受け取りnクラスを渡す
f<==メソッドはnクラスを受け取りmクラスを受け取っていない
同じ関係となるためには渡すクラスもmクラスにする必要がある
ところがそれを一箇所で定義できないため確信できない
定義が誤って一致したとしても文中でそれを知る術が無い
コピペを変更し忘れた場面を想像して欲しい
したがって同じ関係かどうか"知ることができない"
OOPLも演算子オーバーライドを使えば書くことはできる
だがそれはOOPLに不要な機能とされている
現にJAVAはC++との差別化を図りそれを削っている
C++もCの思想を優先したに過ぎない
「プログラマーのできることを制限しない」という思想だ
すなわち高級言語とは真逆の思想だ
06893392010/12/23(木) 19:38:22
ボール投げる方は単純化した
a(b)
aとbが関数でありxクラスを受け取ってxクラスを返すものとする
するとaとbを入れ替えて書くこともできる
入力に関わらず同じ値を返す関数を想像してくれ
全体の関係は変わるがaとbの定義は変わらない
述語と目的語が場面によって換わるので自然言語的とは言えない
e.f
OOPLで入れ換えるにはf.eを別に定義することになる
同じ名前であってもオブジェクトとメソッドという定義が変わる
したがって入れ換えることができず自然言語的と言える

人は理由も無く面倒なことはしたがらない
ましてそれが良くないと判っていればなおさら
つまり面倒であることが抑止力になるということ
関数型は自然言語的でないしそれっぽく書くのも面倒
上の例で判るように一文に関数を詰め込んだ方が書き易いから
思想が反映された書き方の違いこそ言語の違い
高級言語は何をできるかより何をできないかに存在意義がある
関数型はOOPLより少しできてしまうから低級なだけ
低級な言語を理由無く使おうとしないのが人間の心理
普及させたければ使う理由を作ってやれば良い
06903392010/12/23(木) 19:40:57
概念を説明するのって難しいな
じゃあ自分と何かとの関係を考えてみてくれ
├──関係─→┤__何か__│
関数型であればこうなる
├──関数─→┨__何か__┃
何かが関数であればこうなる
├──関数─→┨__関数__┃
関数は直接扱える
扱えないと既に関係を扱っていることと矛盾するため
関数を直接扱えるということは関数を知ることができる
関数は関係そのものだから関係も"知ることができる"
どこからどの関数なのか境界が曖昧になるところに注目
それこそが参照透過性や遅延評価の有無になる

OOPLであればこうなる
┃___オブジェクト____┃
├─メソッド→┨__何か__┃
何かがオブジェクトであればこうなる
┃_______オブジェクト_______┃
├─メソッド→┨___オブジェクト____┃
├─メソッド→┼─メソッド→┨__何か__┃
オブジェクト以外の何かは直接扱えない
直接何かを扱うことがオブジェクトの定義に反するため
従ってメソッドは直接扱えず知ることができない
メソッドは関係そのものだから関係も"知ることができない"

関数型はミクロの関係を扱おうとする
OOPLはマクロの関係を扱おうとする
相反する概念なのだから良いとこ取りはできない
関数型言語を知らなくても本質は語れる
関数とオブジェクト指向を理解してればな
これでも解らないならもう知らん
0691デフォルトの名無しさん2010/12/23(木) 20:33:55
>>339
そうだな、俺が悪かった、もう許せ
0692デフォルトの名無しさん2010/12/23(木) 21:25:59
純粋関数型が流行るとして主として何に使われるの?
>>622は論理回路、金融デリバティブと書いてるが他にもある?
0693デフォルトの名無しさん2010/12/23(木) 21:31:32
要するに
科学技術計算ではFORTRANに勝てず
低水準の仕事ではCやアセンブラに勝てず
事務計算ではCOBOLに勝てず
WebではJavaやLLに勝てないから
きんゆうでりばてぃぶとかになるのか?
0694デフォルトの名無しさん2010/12/23(木) 21:39:23
構文解析
0695デフォルトの名無しさん2010/12/23(木) 22:00:50
>>692
おもちゃとして遊びに使われるに決まってる

おれは Haskell で遊んでるぞ
0696デフォルトの名無しさん2010/12/23(木) 22:09:14
結論 : 実用に使えない高級なおもちゃ
0697デフォルトの名無しさん2010/12/23(木) 22:15:05
市民講座で年寄りに覚えさせればボケ防止になる
0698デフォルトの名無しさん2010/12/23(木) 22:25:29
GHC:ばあさんや、manyはまだかの?
parseん:じいさん、manyはさっき(コンパイラが)食ったばかりですよ
0699デフォルトの名無しさん2010/12/23(木) 22:44:52
ボケってのは知能が低下するんじゃないんだよ
状況とか価値の判断がおかしくなるんだよ
幼児よりもキチガイに近い
もともと頭の悪かったやつにプログラミングなんてやらせても意味ない
0700デフォルトの名無しさん2010/12/23(木) 22:49:11
>>693
さすがにCOBOLには勝ってるのでは…

それと、低水準の処理でアセンブラに「勝てる」言語など、永遠に登場しないだろう。
コンピュータ・アーキテクチャが変わりでもしない限り。
0701デフォルトの名無しさん2010/12/23(木) 23:21:24
>>700
いやマジでつっこまれてもw

COBOLって任意桁数のBCD演算やらISAMやらを組み込みで持ってて
メインフレームの固定長データセットに非常に相性が良いようだし
COBOLが使われてる分野では未だに圧倒的なシェアを誇る言語だと
思っていたけど、何しろ全然詳しくないので…

事務処理の世界はもう関数型の独壇場だったのか?
0702デフォルトの名無しさん2010/12/23(木) 23:30:17
そんなことない。絶賛Javaで書き直しまたはそのままCOBOLで放置プレイ中だよ。
0703デフォルトの名無しさん2010/12/23(木) 23:33:43
関数型で事務処理は聞いた事がないが、探せばあると思う。
0704デフォルトの名無しさん2010/12/23(木) 23:36:57
あんまよく知らないんだけどいわゆる事務処理って何?
例えば給与明細の紙を出力するためにデータベースからデータを取ってきて
それを整形表示して印刷とかそんなの?
0705デフォルトの名無しさん2010/12/23(木) 23:38:50
会社が事務処理をコンピュータ化したものが事務処理の定義でいいだろう。
相当範囲は広い。
0706デフォルトの名無しさん2010/12/23(木) 23:44:16
やはり今時なら、Webアプリが簡単に組めるよ!と言い張れないと流行らないな。
0707デフォルトの名無しさん2010/12/23(木) 23:46:38
まあ科学技術計算、低水準、組み込み、事務、webで
勝てないのに普及させるのは相当難しくないか?
0708デフォルトの名無しさん2010/12/23(木) 23:48:49
>>704
うん俺もそんなんをイメージしていた
汎用機にもツリー型とかリレーショナルなデータベースはあるはずだけど
固定長のISAMファイルって要するに簡易的なデータベースだから
ただのISAMでやってるケースも多いのではと思われ
バッチだけでなくオンライン的な処理が必要な場合は
資源管理のためにトランザクションモニタとかジョブキューとか使うんだろう

Javaは特別にその種の仕事に特化した言語じゃないから、
J2EEあたりのブクブクに太ってた頃のJavaでリプレースしようとして
泣いた会社は結構あるのでは
全然詳しく無いし、ただの想像だけど
0709デフォルトの名無しさん2010/12/23(木) 23:50:11
ゲームで勝てるとある程度普及する
0710デフォルトの名無しさん2010/12/23(木) 23:51:08
>>700 そういえばデータフローマシンのアセンブラはアセンブラじゃなかったわな
0711デフォルトの名無しさん2010/12/23(木) 23:53:35
老人ホームが特許庁の大規模システム開発を受注するくらいだからな
0712デフォルトの名無しさん2010/12/23(木) 23:57:45
今ゲームで多用されてるのって何だろ
C++, Java, C#, Flash/ActionScript, Luaといったあたり?
0713デフォルトの名無しさん2010/12/24(金) 00:06:06
VHSもインターネットもアダルトの貢献は大きい。
アダルトに特化するしかない
0714デフォルトの名無しさん2010/12/24(金) 00:06:32
>>712
メーカによりけりだろ?
メーカー固有のゲーム製作言語とかあったりするし…
0715デフォルトの名無しさん2010/12/24(金) 00:09:36
>>713
つまり「大人のおもちゃ」か!
0716デフォルトの名無しさん2010/12/24(金) 00:22:33
人間は禁止されると無性にしたくなるからな
Real World Haskell を成人図書コーナーに置けば
中高生が隠れて読み耽るだろう
0717デフォルトの名無しさん2010/12/24(金) 05:45:44
>>700-701
http://www.indeed.com/jobtrends?q=Perl,PHP,Python,Ruby,COBOL,Fortran,Lisp,SML,Haskell
COBOLの求人はLLに抜かれましたが、関数型言語の数十倍あります。

http://www.indeed.com/jobtrends?q=Lisp,SML,Haskell,Scala,Clojure
古参をごぼう抜きしたScalaは普及が続くかも知れません。
0718デフォルトの名無しさん2010/12/24(金) 07:46:13
なんで関数型の「流行る分野」を考えようとするのか分らんな
プログラムしてて楽しければ、役に立たなくてもいいじゃん

(応用じゃない)純粋な数学と同じだよ
0719デフォルトの名無しさん2010/12/24(金) 07:48:44
>>718
なんで考えるかというとそういう趣旨のスレだから
0720デフォルトの名無しさん2010/12/24(金) 07:49:13
>>706
Webアプリを簡単に組めないプログラム言語を
探す方が難しい。
0721デフォルトの名無しさん2010/12/24(金) 07:52:41
俺はこんな難解な言語もマスターしているんだぜ!
数学的思考が出来ないドカタは理解出来なくて当然!

こういう上から目線が多いから、いつまでたっても普及しない。

0722デフォルトの名無しさん2010/12/24(金) 07:53:07
プログラム言語の選択では、不適合な分野が
あると、将来その分野に進出するケースも
想定して忌避することはある。関数型言語の
場合ここら辺はあるのかな。
0723デフォルトの名無しさん2010/12/24(金) 07:54:35
>>721
それは、はっきりいって、あると思う。
0724デフォルトの名無しさん2010/12/24(金) 09:33:09
関数型言語は超高級関数電卓として大いに使われていると思うが。
まあ、プログラム言語としての利用じゃないわけだけどね。
0725デフォルトの名無しさん2010/12/24(金) 10:14:05
Rとかかな?あれは関数型といっていいのか?
0726デフォルトの名無しさん2010/12/24(金) 10:33:39
>>724
数値計算とか数式処理って専用のソフト使わないの?
matlabとかmathematicaとか
0727デフォルトの名無しさん2010/12/24(金) 10:58:42
>>721
そもそも関数型を本当に普及させたいのかと疑問に思う
自分はポルシェを乗り回せるぜ、というひとは、ポルシェがカローラになるより
ポルシェのままのほうがうれしいのでは?
0728デフォルトの名無しさん2010/12/24(金) 12:36:18
>>727
それもあるし、関数型が普及する必要があるとみんな思ってるのかも疑問

普及する必要あるのか?

無ければ普及しないぞ
0729デフォルトの名無しさん2010/12/24(金) 13:23:24
>>721
Haskellは、IOモナドが分かりにくいのが一番の理由じゃないかな。
副作用を分かりやすく形式化したもののはずなのに、これが分かりにくくて普及しないって、にんともかんとも。
0730デフォルトの名無しさん2010/12/24(金) 15:37:43
>>728
部分評価とか非正格評価は分散サーバとかに使える。
純粋ナンタラで美しいィィ!とか
モナドはストリームより表現力が上ェェェ!
とかはどうでもいい。
0731デフォルトの名無しさん2010/12/24(金) 15:56:03
>>728
普及した方が、給料は上がる。
0732デフォルトの名無しさん2010/12/24(金) 16:29:50
>>731
一般に、普及すると仕事は増えるけど給料は下がるのでは

需要「だけ」が増えれば給料も上がるかもしれないが
そういう都合のいい普及の仕方ってあるのだろうか
0733デフォルトの名無しさん2010/12/24(金) 16:49:37
>>732
普及の程度にもよるけど。10年後に世の中の主流が
Haskellになると周知されたら、今、ソフトウェアハウス
で月給40万のHaskellプログラマの月給は転職前提で
100万を超える。そういう意味で。それを夢見て。
0734デフォルトの名無しさん2010/12/24(金) 17:01:22
なるほど、一種の先行者利益的なものを狙うわけか
0735デフォルトの名無しさん2010/12/24(金) 17:43:36
2番じゃダメなんですよ。
1番でなくては。
0736デフォルトの名無しさん2010/12/24(金) 19:11:45
>>731
その給料を出す方から見た関数型の必要性は?
0737デフォルトの名無しさん2010/12/24(金) 21:20:09
>>726
最近の数値計算はMatlabとC、C++が主流っぽい
0738デフォルトの名無しさん2010/12/24(金) 21:22:46
数式処理はMathematicaが圧倒的。遅いけど
0739デフォルトの名無しさん2010/12/24(金) 21:29:58
金無いから Maxima 使ってる
0740デフォルトの名無しさん2010/12/25(土) 00:21:59
数値計算に向いていようが普及とは殆ど関係無いだろ。
やはり、Webかクラウドに最適だと言えなきゃね。
0741デフォルトの名無しさん2010/12/25(土) 00:53:53
erlangがほとんど話題に上がらないのはなぜ?
0742デフォルトの名無しさん2010/12/25(土) 01:04:59
エロランゲージ?
0743デフォルトの名無しさん2010/12/25(土) 01:15:03
一時期良く言われてた、関数型言語の方がマルチスレッド向きで、
マルチコアCPU時代のプログラム言語は関数型言語でウッドボールって
説はどうなったの?

最近、あんまり聞かないから、フカシだったの?
0744デフォルトの名無しさん2010/12/25(土) 01:57:05
>>742
「ねぁ、はやく。はやく、あなたを感じたいの!」
「ふふ… ここかい? ここが君のメールボックスなのかい?」
「そうそうよ。はやく、あなたの… あなたのメッセージを私にいれて」
「いいね? 一緒に動くんだよ」
「いいから、はやくあなたのメッセージをいれてったら!」

>>743
「あら? 早漏?」
0745デフォルトの名無しさん2010/12/25(土) 02:34:54
>>743
ItaniumのEPIC向けの最適化にも関数型言語が適してるなんて話もあったなw
0746デフォルトの名無しさん2010/12/25(土) 02:52:54
>関数型言語の方がマルチスレッド向き
って、以下の考え方でおk?

(L1 L2 L3 ... Ln)
で、L(k+1)はLkの結果とは関係がない
Lkは互いに無関係だから別々のスレッドで処理できる
さらにLkは
(M1 M2 ... Mn)
で、M(k+1)は以下略

どんどんスレッド増えていくからうまくいってないのかな
0747デフォルトの名無しさん2010/12/25(土) 03:00:50
参照透過性がスレッドの独立性を保証するというコンセプトなんだと思うけど
条件が厳しすぎると思う。状態の概念は導入しないと。
0748デフォルトの名無しさん2010/12/25(土) 05:50:09
コンパイラが重過ぎてヤバイ空気が漂ってる
0749デフォルトの名無しさん2010/12/25(土) 09:12:08
あと数年の辛抱
0750デフォルトの名無しさん2010/12/25(土) 11:18:39
簡単にスレッドとして切り裂けても実用的な縦方向の長さを確保するコンパイラ技術が伴ってなかったからだと思うなー
0751デフォルトの名無しさん2010/12/25(土) 13:20:41
>>721
関数型って難解なのか?

何年もかけて習得した手続き型でのテクが使えないから
最初は手も足も出ないが
■ このスレッドは過去ログ倉庫に格納されています