[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
613: デフォルトの名無しさん [] 2020/12/17(木) 17:53:27.84 ID:9eI2x+Uu Haskellでx = x + 1をIORef使わず擬似的に再現。 (実際には代入では無く、結果をラムダ式の同名の変数に渡してるだけ) main = do let x = 0 print x x <- inc x print x x <- inc x print x inc n = return (n + 1) モナド式の書き方だとこうなる。 main = do let x = 0 in print x >> inc x >>= \x -> print x >> inc x >>= \x -> print x inc n = return (n + 1) さらに>>=演算子を()で囲んで関数にするとこうなる。 main = (>>=) ((>>=) (do let x = 0 in print x >> inc x) (\x -> print x >> inc x)) (\x -> print x) inc n = return (n + 1) http://mevius.5ch.net/test/read.cgi/tech/1581326256/613
614: デフォルトの名無しさん [] 2020/12/17(木) 17:53:45.49 ID:9eI2x+Uu モナド無しだけど、Cで再現するとこんな感じ。(スタック消費するけど) #include <stdio.h> int inc(const int); int f(const int); int main(void) { const int x = 0; printf("%d\n",f(f(x))); return 0; } int inc(const int x) { return (x + 1); } int f(const int x) { printf("%d\n",x); return inc(x); } http://mevius.5ch.net/test/read.cgi/tech/1581326256/614
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s