[過去ログ]
関数型プログラミング言語Haskell Part32 (1002レス)
関数型プログラミング言語Haskell Part32 http://mevius.5ch.net/test/read.cgi/tech/1548720347/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
9: デフォルトの名無しさん [sage] 2019/02/03(日) 12:58:27.43 ID:5bolWXfM haskell紹介してるブログとか色々あるけどどこも肝心要のところがすっぽり抜けててイライラするな・・ 例えば fact 0 = 1 fact n = n * fact(n - 1) これ無限ループになっちゃって終わらないでしょ終端条件も書いてないし。 fact 3を展開すると 3 * ( 2 * ( 1 * ( 1 * ……… 0を入力すれば1になるってことはこの先ずーっと1が繰り返されるだけだし。 同じ値が2度続いたら処理を止めるとか変な仕組みでも入ってるのかねー http://mevius.5ch.net/test/read.cgi/tech/1548720347/9
10: デフォルトの名無しさん [sage] 2019/02/03(日) 14:29:08.38 ID:0VpSvizO >>9 自分で動かしてみればわかるけど ちゃんと終わるよ https://wandbox.org/permlink/goI0n8nF0ac90ofx http://mevius.5ch.net/test/read.cgi/tech/1548720347/10
11: ◆QZaw55cn4c [sage] 2019/02/03(日) 15:04:51.94 ID:t4xt++Qj >>9 >無限ループになっちゃって終わらないでしょ終端条件も書いてないし。 いえいえ、終端条件が >fact 0 = 1 です、n ∈ N たる n からはじまって 0 で終わる、と読みます fact 3 = 3 * fact 2 = 3 * 2 * fact 1 = 3 * 2 * 1 * fact 0 = 3 * 2 * 1 * 1 で止まります. http://mevius.5ch.net/test/read.cgi/tech/1548720347/11
12: デフォルトの名無しさん [sage] 2019/02/03(日) 15:10:17.81 ID:DVkCUlxV >>9 恥ずかしいぞ >fact 0 = 1 で、これ以上再帰してないじゃん http://mevius.5ch.net/test/read.cgi/tech/1548720347/12
13: デフォルトの名無しさん [sage] 2019/02/03(日) 20:51:10.38 ID:5bolWXfM >>12 それじゃ納得できないんだけども 終わるから大丈夫仕様ですってもやっとするから >>9で書いたように1が無限に続いちゃうと思うんだけどな 0が入力されたら1を返すってことだから 1 - 1でまた繰り返しちゃうよね そもそもどの値が来たら終わるか全く記述がないよね そういうところも納得できないっていうかおかしい http://mevius.5ch.net/test/read.cgi/tech/1548720347/13
19: ◆QZaw55cn4c [sage] 2019/02/03(日) 21:19:41.63 ID:t4xt++Qj >>13 では逆に質問しましょうか、そこから両者が部分的にでも合意できるポイントを探ることにしましょう >>9 >fact 0 = 1 >fact n = n * fact(n - 1) これをあなたはどのように解釈したかを、もう少し詳しめに記述していただくことは可能でしょうか、私の記述は今は >>13 が精一杯ですが、あなたの返答をみて改善できる点はないか検討したいと思います http://mevius.5ch.net/test/read.cgi/tech/1548720347/19
23: デフォルトの名無しさん [sage] 2019/02/03(日) 21:25:18.35 ID:5bolWXfM >>19 理解したのは>>9の通りで 仮定として1かtrueを返したら再帰は止まる仕様になってると推測してる >>20 だからfact(1)で無限に続いちゃうよね 1 - 1で fact 0をevalしてまたfact(1)になる そこで終了条件が必要だけど何にも書いてないから記述通りならずーっと続く としか見えないんだよね http://mevius.5ch.net/test/read.cgi/tech/1548720347/23
41: デフォルトの名無しさん [sage] 2019/02/03(日) 21:39:25.68 ID:RwDwNYzW >>23 >>>19 >理解したのは>>9の通りで >仮定として1かtrueを返したら再帰は止まる仕様になってると推測してる この推測が間違っているので、いったん忘れて素直にプログラムを読んでみよう http://mevius.5ch.net/test/read.cgi/tech/1548720347/41
50: デフォルトの名無しさん [sage] 2019/02/03(日) 21:46:48.03 ID:5bolWXfM >>45 それだと>>9の通りで揺らがない >>46 この記述だと無限に *1が続くわけだから なにか終了条件が必要なわけで 1を返したら再帰が止まる仕様ならなるほど納得 http://mevius.5ch.net/test/read.cgi/tech/1548720347/50
95: デフォルトの名無しさん [sage] 2019/02/03(日) 22:41:48.43 ID:5bolWXfM >>94 それで地道にやったら >>9になったよ あれ以外どうしろと・・ http://mevius.5ch.net/test/read.cgi/tech/1548720347/95
99: デフォルトの名無しさん [sage] 2019/02/03(日) 22:43:59.88 ID:RwDwNYzW >>95 ああ、>>9 みたいに一気に展開するのではなくて、 fact 3 = のところからひとつずつ地道に置き換えてみた? もしやってないなら、今すぐやってみよう http://mevius.5ch.net/test/read.cgi/tech/1548720347/99
140: デフォルトの名無しさん [sage] 2019/02/05(火) 05:35:54.03 ID:H17BJwTV >>9,112,118 だけ読めばおk http://mevius.5ch.net/test/read.cgi/tech/1548720347/140
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.601s*