【小ネタ】ラッセルのパラドックスをJavaScriptで

【小ネタ】ラッセルのパラドックスをJavaScriptで:

数学や論理学の人には超有名なパラドックスをJavaScriptでやってみたらどうなるかを調べた


ラッセルのパラドックス

詳しくはWikipediaを見てほしいのだが、ラッセルのパラドックスには二つの同等なバージョンがある。論理学バージョンと数学バージョン。

集合バージョンは、「『自分自身を要素に含まない集合を集めた集合』は自分自身を要素に含むか?」であり、論理学バージョンは、「『x は自分自身に述語づけられない』は自分自身に述語づけられるか?」となる。

この問いは、Yesと仮定してもNoと仮定しても矛盾が出てきてしまうので、どうしようもないというのがパラドックスの中身


JavaScript でラッセルのパラドックス

論理学バージョンの方がプログラムに落とし込みやすい。「x は自分自身に述語づけられない」を関数 w と名前を付けると、 w の実装として、 !x(x) が得られる:

const w = x => !x(x) 
そして、パラドックスを引き起こす命題は、w(w)となるので、評価してみる:

w(w) 
RangeError: Maximum call stack size exceeded 
    at w (repl:1:11) 
    at w (repl:1:17) 
ま、そりゃそうだよね

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)