【小ネタ】ラッセルのパラドックスをJavaScriptで
【小ネタ】ラッセルのパラドックスをJavaScriptで:
数学や論理学の人には超有名なパラドックスをJavaScriptでやってみたらどうなるかを調べた
詳しくはWikipediaを見てほしいのだが、ラッセルのパラドックスには二つの同等なバージョンがある。論理学バージョンと数学バージョン。
集合バージョンは、「『自分自身を要素に含まない集合を集めた集合』は自分自身を要素に含むか?」であり、論理学バージョンは、「『x は自分自身に述語づけられない』は自分自身に述語づけられるか?」となる。
この問いは、Yesと仮定してもNoと仮定しても矛盾が出てきてしまうので、どうしようもないというのがパラドックスの中身
論理学バージョンの方がプログラムに落とし込みやすい。「x は自分自身に述語づけられない」を関数 w と名前を付けると、 w の実装として、
そして、パラドックスを引き起こす命題は、w(w)となるので、評価してみる:
ま、そりゃそうだよね
数学や論理学の人には超有名なパラドックスをJavaScriptでやってみたらどうなるかを調べた
ラッセルのパラドックス
詳しくはWikipediaを見てほしいのだが、ラッセルのパラドックスには二つの同等なバージョンがある。論理学バージョンと数学バージョン。集合バージョンは、「『自分自身を要素に含まない集合を集めた集合』は自分自身を要素に含むか?」であり、論理学バージョンは、「『x は自分自身に述語づけられない』は自分自身に述語づけられるか?」となる。
この問いは、Yesと仮定してもNoと仮定しても矛盾が出てきてしまうので、どうしようもないというのがパラドックスの中身
JavaScript でラッセルのパラドックス
論理学バージョンの方がプログラムに落とし込みやすい。「x は自分自身に述語づけられない」を関数 w と名前を付けると、 w の実装として、 !x(x)
が得られる:const w = x => !x(x)
w(w) RangeError: Maximum call stack size exceeded at w (repl:1:11) at w (repl:1:17)
コメント
コメントを投稿