[過去ログ]
関数型プログラミング言語Haskell Part32 (1002レス)
関数型プログラミング言語Haskell Part32 http://mevius.5ch.net/test/read.cgi/tech/1548720347/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
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
26: デフォルトの名無しさん [sage] 2019/02/03(日) 21:28:01.94 ID:DVkCUlxV >>23 >1 - 1で fact 0をevalしてまたfact(1)になる ならねーよ そこが恥ずかしいところだ http://mevius.5ch.net/test/read.cgi/tech/1548720347/26
28: デフォルトの名無しさん [sage] 2019/02/03(日) 21:29:11.55 ID:RwDwNYzW >>23 >>>20 >だからfact(1)で無限に続いちゃうよね >1 - 1で fact 0をevalしてまたfact(1)になる >そこで終了条件が必要だけど何にも書いてないから記述通りならずーっと続く そうはならない fact 1 = 1 * fact 0 に簡約される そして fact 0 = 1 であって fact 0 = 0 * fact(0 - 1) とは絶対にならないからここで終わる 高校数学がわかるなら、漸化式と同じだと思えばよい http://mevius.5ch.net/test/read.cgi/tech/1548720347/28
30: ◆QZaw55cn4c [sage] 2019/02/03(日) 21:31:19.47 ID:t4xt++Qj >>23 >1 - 1で fact 0をevalしてまたfact(1)になる >fact 0 = 1 というのは、関数 fact のうち fact(0) (引数が 0) のときの値は 1 である、と確定的な記述をしています。ここで答えが決まったので、さらに答えを求めるための関数適用作業には入りません、それはそういう意味です どうして eval したあと fact(1) になる、と判断したのでしょうか? fact(0) = 1 の 1 というのは fact() の値であって、fact の引数ではなく、また fact の引数になりうる記述は 「fact 0 = 1」という記述の中には見つからないのですが >fact n = n * fact (n - 1) この記述のなかには、たとえば 引数が 7 だとすると「 fact 8 を fact 7 の値をつかって表現する」ということですから、fact 8 を eval する「途中で」 fact 7 を eval しようとする、ということは書かれています http://mevius.5ch.net/test/read.cgi/tech/1548720347/30
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
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.467s*