標準出力への出力
💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。
Flix の Prelude(プレリュード)には、標準出力へ出力する println 関数が定義されています。例えば:
println("Hello World")
println 関数は、型が ToString トレイトを実装している値、すなわち String に変換できる値であれば、どのような値でも出力できます。例えば:
let o = Some(123);
let l = 1 :: 2 :: 3 :: Nil;
println(o);
println(l)
println 関数は当然ながらエフェクトを持つ関数であるため、純粋関数から呼び出すことはできません。純粋関数をデバッグするには、組み込みのデバッグ機能を使用してください。
Console エフェクト
Console エフェクトは、ターミナルからの読み取りとターミナルへの書き込みを行う操作を定義しています:
eff Console {
def readln(): Option[String]
def write(s: String): Unit
def writeLine(s: String): Unit
def writeErr(s: String): Unit
def writeErrLine(s: String): Unit
}
これらの操作はプレーンな String を対象としています。Console エフェクトは Sys.Console モジュールのコンパニオンであり、このモジュールは上記の操作を基にした4つの出力用関数を定義しています:
mod Sys.Console {
def print(x: a): Unit \ Console with ToString[a]
def println(x: a): Unit \ Console with ToString[a]
def eprint(x: a): Unit \ Console with ToString[a]
def eprintln(x: a): Unit \ Console with ToString[a]
}
Prelude の println と同様に、これらの関数も ToString のインスタンスを持つあらゆる値を受け取りますが、IO ではなく Console エフェクトを持ちます。eprint と eprintln は標準エラー出力へ書き込みます。例えば:
use Sys.Console
def main(): Unit \ Console =
let o = Some(123);
let l = 1 :: 2 :: 3 :: Nil;
Console.println(o);
Console.println(l);
Console.eprintln("Printed two values.")
入力の読み取りやプロンプトについては、Console の章を参照してください。