回答編集履歴
1
refinement
answer
CHANGED
@@ -1,8 +1,15 @@
|
|
1
|
+
> brainfuckでサブルーチンを実装することはできますか?
|
2
|
+
|
3
|
+
"サブルーチン"を「あるプログラムの実行位置から呼出(call)され、後で同位置へと復帰(return)可能なコード片」と解釈すると、Brainf*ckそのものでは実現不可能と考えます。
|
4
|
+
|
5
|
+
サブルーチンを実現するには、Brainf*ckプログラムの現在の“実行位置”を保存しておき、後から“実行位置”を復元する必要があります。通常のプログラミング言語ではこの動作は暗黙的に行われますが、Brainf*ckに用意された条件付きジャンプ命令(`[`,`]`ペア)を用いてもこの動作を直接実現できません。
|
6
|
+
|
7
|
+
---
|
1
8
|
> スタックとVMの仕組みを実装しなければならないので、もし実現できたとしても相当巨大なコードになると思います。
|
2
9
|
|
3
|
-
この規模のBrainf*ckプログラムをフルスクラッチ開発するのは現実的でないと思います。
|
10
|
+
この規模のBrainf*ckプログラムをフルスクラッチ開発するのは現実的でないと思います。たぶん、普通の人類には。
|
4
11
|
|
5
|
-
ELVMを利用することで、Brainf*ck上で(原理的には)任意のプログラム動作が可能となります。
|
12
|
+
たとえばELVMを利用することで、Brainf*ck上で(原理的には)任意のプログラム動作が可能となります。
|
6
13
|
|
7
14
|
- [GitHub shinh/elvm](https://github.com/shinh/elvm), EsoLangVM Compiler Infrastructure
|
8
15
|
- [ELVM Compiler Infrastructure について](http://shinh.hatenablog.com/entry/2016/12/22/005706)
|