続きです。
REPLとは
こちらの記事を参照してください。
Dartで実装する
main.dart
import 'dart:io';
void main() {
while (true) {
stdout.write('dart> ');
String? input = stdin.readLineSync();
if (input == null || input.trim() == 'exit') {
print('Bye!');
break;
}
try {
// var prompt = eval(input);
var prompt = input.trim();
print(prompt);
} catch (e) {
print('Error: $e');
}
}
}
dynamic eval(String input) {
// なにかそれっぽい処理
return input;
}
実行する
$ dart main.dart
dart> 1 + 1
1 + 1
dart> foobar
foobar
dart> exit
Bye!
evalのような動的評価は、その言語の設計思想次第であるかないかが分かれますね。