Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

標準出力への出力

💡 お知らせ: このドキュメントは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 の章を参照してください。