関数型プログラミング言語Haskell Part20
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/10/17(水) 08:08:28.97ttp://www.haskell.org/
日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
Part19 ttp://toro.2ch.net/test/read.cgi/tech/1340760070/
0951デフォルトの名無しさん
2013/01/17(木) 18:09:56.870952デフォルトの名無しさん
2013/01/17(木) 19:04:24.650953デフォルトの名無しさん
2013/01/17(木) 19:20:57.44スレ違いの話題を延々と引っ張る
自演荒らしが流行ってるのか
0954デフォルトの名無しさん
2013/01/17(木) 20:06:23.17総生産量が1000倍違う
10年前は100倍だった
0955デフォルトの名無しさん
2013/01/17(木) 20:12:50.36Haskellの使い道が自動コーディング
というか、日本の会社の実務でのHaskellの使い道なんてそれしかない
昔はlispでDSLからスケルトンとテストケース作ってたけど、parsecがあるからhaskellに移行中
0956デフォルトの名無しさん
2013/01/17(木) 20:24:47.44海外だとどうなの?
0957デフォルトの名無しさん
2013/01/17(木) 20:29:35.230958デフォルトの名無しさん
2013/01/17(木) 20:38:07.96部分的にはできてる
(100歩譲って全部できてる分野があったとしても、自動でやるからもう表に出ない)
実際に使ってるのを見たことがあるのは、領域を限定してコーディングするのと、コードの断片だけ生成するのと、自動でリファクタリングしてAPIを出力するのだけ
あと作曲
0959デフォルトの名無しさん
2013/01/17(木) 20:48:03.60例えばクラス図を元にC++のファイルを生成するとか。
0960デフォルトの名無しさん
2013/01/17(木) 20:59:37.72「自動コーディング」するために、なんらかの仕様書を食わせる必要があるっしょ。
結果、その仕様書を作る作業が必要になる。
その仕様書も独特の文法があるはずで、結果としてプログラミング言語の一種になってしまう。
0961デフォルトの名無しさん
2013/01/17(木) 21:04:40.55自動プログラミングの最終目標は、仕様書=自然言語
0962デフォルトの名無しさん
2013/01/17(木) 21:08:40.130963デフォルトの名無しさん
2013/01/17(木) 21:10:06.880964デフォルトの名無しさん
2013/01/17(木) 21:19:55.45うん
0965デフォルトの名無しさん
2013/01/17(木) 21:24:54.20それ以上を目指すのはオカルト
0966デフォルトの名無しさん
2013/01/17(木) 21:28:08.900967デフォルトの名無しさん
2013/01/17(木) 22:27:23.81そこで、泣き声に魔術のような力があると思い込んだ奴は科学的な発達が止まる
0968デフォルトの名無しさん
2013/01/17(木) 22:37:29.470969デフォルトの名無しさん
2013/01/17(木) 22:44:47.400970デフォルトの名無しさん
2013/01/17(木) 22:55:37.000971デフォルトの名無しさん
2013/01/17(木) 23:06:44.61計算機の中は論理だけでよい
0972デフォルトの名無しさん
2013/01/17(木) 23:08:49.110973デフォルトの名無しさん
2013/01/17(木) 23:09:53.44foo= trace "foo eval"
fibs= (trace "0 eval" 0):1:(zipWith (+) fibs (tail fibs))
main = print $ [hoge,hoge,foo 1, foo 1] ++ take 5 fibs2
実行結果
hoge eval
foo eval
foo eval
0 eval
[1,1,1,1,0,1,1,2,3]
メモ化の基準が分からない…
0974デフォルトの名無しさん
2013/01/17(木) 23:10:58.94間違えた
0975デフォルトの名無しさん
2013/01/18(金) 00:10:17.88こう考えると良い(説明を簡単にするために少し端折ってる)。
f :: Int の文脈で let x = f in x + x
この場合、最初は x は関数 f を指している。
1回目に x を評価しようとすると、f が評価され、
x は f ではなく f の評価結果の値を指すようになる。
だから2回目に x を評価する時、f を再評価することはせず、
先ほど f から指し換えた値を直接使う。
これが(GHC の)グラフ簡約によって実現するメモ化だ。
g :: Int -> Int の文脈で let y = g in y 3 + y 3
この場合、最初に y は関数 g を指している。
1 回目に y を評価しようとすると、g が評価され、
g は1引数関数なので、さらに第1引数を評価しようとする。
第1引数は値(3)なので g 3 が評価される。
ここで、g は y によって指されているが、
y 3 や g 3 という関数(結果として値だが)を指しているものは、
どこにも無いことに注意。
よって、2回目に y を評価する時、g を再評価することはしないが、
g 3 はもう一度評価されることになる。
1回目の g 3 はどこからも指されていないのだから、
どこにもメモ化されていない。
let y = g 3 in y + y とすれば g 3 の評価結果が y にメモ化される。
>>973 で hoge が1回しかトレースされず、
foo が2回トレースされているのはこういうこと。
0976デフォルトの名無しさん
2013/01/18(金) 00:52:06.10ポインタのようにプログラム中に書かれた項が簡約途中の結果を指していると考えればいいのですね
memorized_fib = (map fib [0 ..] !!)
where
fib 0 = trace "0 eval" 0
fib 1 = 1
fib n = memorized_fib (n-1) + memorized_fib (n-2)
main = print $ memorized_fib 10 + memorized_fib 20
実行結果
0 eval
6820
この例では明示的に特定の変数が何かを指しているわけではありませんが
"map fib [0 ..]"の部分が0:1:1:2: ...という(途中の)評価結果を指していると考えていいのかな…
0977デフォルトの名無しさん
2013/01/18(金) 01:35:49.34これならリストの中も変数 x か y に指されるのでポインタなどいらん
0978デフォルトの名無しさん
2013/01/18(金) 07:38:00.33それこそ「で?」としか言いようがないな
0979デフォルトの名無しさん
2013/01/18(金) 08:44:09.510980デフォルトの名無しさん
2013/01/18(金) 09:01:45.780981デフォルトの名無しさん
2013/01/18(金) 09:52:25.700982デフォルトの名無しさん
2013/01/18(金) 10:09:05.30「居ない」と答えるべき
0983デフォルトの名無しさん
2013/01/18(金) 11:18:10.830984デフォルトの名無しさん
2013/01/18(金) 11:46:52.98確かに自由だなw
0985デフォルトの名無しさん
2013/01/18(金) 11:47:58.510986デフォルトの名無しさん
2013/01/18(金) 11:53:31.20それは、居ないし要らないって意味だと推論できない奴は無能だな
Javaみたいな面倒な言語を平気で愛用してそう
0987デフォルトの名無しさん
2013/01/18(金) 11:53:35.220988デフォルトの名無しさん
2013/01/18(金) 12:16:24.390989デフォルトの名無しさん
2013/01/18(金) 13:31:16.94それとももう原理上の限界に来てるの?
0990デフォルトの名無しさん
2013/01/18(金) 13:45:34.69GRIN っていうバックエンドがすげぇ、って話は聞いたことがあるけど、
試したことはない(他のいくつかのコンパイラで使ってるらしい)。
0991デフォルトの名無しさん
2013/01/18(金) 16:11:07.59がスラスラ進むのは
tail fibs の次が、左の fibs の、評価した最後尾の値を読むだけで済むから?
0992デフォルトの名無しさん
2013/01/18(金) 16:49:32.32どこが妄言?
0993デフォルトの名無しさん
2013/01/18(金) 16:59:43.950994デフォルトの名無しさん
2013/01/18(金) 17:43:37.72根拠が分からんならそう言えばよいだけ
0995デフォルトの名無しさん
2013/01/18(金) 17:51:40.56じゃあ君の定義では何が妄言なの?
0996デフォルトの名無しさん
2013/01/18(金) 17:52:42.250997デフォルトの名無しさん
2013/01/18(金) 18:01:53.810998デフォルトの名無しさん
2013/01/18(金) 18:07:20.83妄言だと言われたくないなら根拠を示せばいいだけ
0999デフォルトの名無しさん
2013/01/18(金) 18:19:51.681000デフォルトの名無しさん
2013/01/18(金) 18:21:19.5910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。