関数型プログラミング言語Haskell Part33at TECH
関数型プログラミング言語Haskell Part33 - 暇つぶし2ch632:デフォルトの名無しさん
20/12/20 18:18:58.94 FMam64CT.net
IOモナドを恒等モナドに差し替えて、Rに移植する。
``` {r raskell}
do = pure = id = function (a) a;
const = function (a) function (ab) a;
`%.%` = function (bc, ab) function (a) bc (ab (a));
`%$%` = function (ab, a) ab (a);
`%>>%` = function (a, ab) ab (a);
inc = function (n) n + 1;
caty = function (a) cat (a, "\n", sep = "");
lhs = function (dump) function (x) do ({
y <- inc (x);
z <- caty (y);
pure %$% dump (y) (z);
});
rhs = function (dump) function (x) {
inc (x) %>>% (function (y) dump (y) %$% caty (y));
};
lhs (function (y) function (z) list (y, z)) (123) %>>% print
rhs (function (y) function (z) list (y, z)) (123) %>>% print
lhs (const %.% const ("hello")) (123) %>>% print;
rhs (const %.% const ("hello")) (123) %>>% print;
```
Rは関数の引数を問答無用に遅延評価するので、最後の`rhs`だけがHaskellと
異なる動作をする。Rの遅延評価の例としては煩雑過ぎるが、HaskellのIOモナド
とサイドバイサイドに比較できる例になっている。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch