fluorite12

flc fluorite12コードを実行する

Usage: flc [-h|--help] [-q] [--] <code> <arguments...>
Options:
  -h, --help               Show this help
  -q                       Run script as a runner

flc はコマンドライン引数に渡されたfluorite12のコードをその場で実行するコマンドです。

flc コマンドは標準の動作としてコードの戻り値を出力するため、結果の出力のために明示的に OUT 関数などを使う必要はありません。

$ flc '1 + 2'
# 3

戻り値の出力の仕様

戻り値の出力の際には文字列化が行われます。

$ flc '{`&_`: _ -> "Hello, World"}{}'
# Hello, World

コードの値がストリームだった場合、各要素を1行ずつ出力します。

$ flc '1 .. 3'
# 1
# 2
# 3

コードの戻り値が空ストリームである場合、何も出力されません。

$ flc '1 + 2; ,'

戻り値の出力の抑制

-q オプションを指定すると、全体を文として解釈し、戻り値の出力は行われません。

出力を行うには OUT 関数などを使う必要があります。

$ flc -q '
  OUT << "apple"
  OUT << "banana"
  "orange"
'
# apple
# banana

CLI版限定組み込み定数・関数

CLI版fluorite12でのみ利用可能な定数および関数です。

ARGS コマンドライン引数を取得

コマンドライン引数が配列で格納されています。

flc コマンドやワンライナーのソースコードは含まれません。

$ flc 'ARGS' 1 2 3
# [1;2;3]

ENV 環境変数を取得

環境変数がオブジェクトで格納されています。

$ FOO=bar flc 'ENV.FOO'
# bar

存在しない変数にアクセスした場合は NULL が返ります。

IN コンソールから入力

標準入力を1行ずつストリームとして取得します。

$ { echo 123; echo 456; } | flc 'IN'
# 123
# 456

ストリームは逐次的であるため、非常に大きな反復も少ないメモリ消費で行うことができます。

$ flc '1 .. 10000 | "#" * 10000' | flc 'IN | $#_ >> SUM'
# 100000000

OUT コンソールに出力

標準出力に出力します。

$ flc -q '
  OUT(123)
  OUT(456)
'
# 123
# 456

ストリームが指定された場合、各要素を1行ずつ出力します。

$ flc -q '
  OUT(1 .. 3)
'
# 1
# 2
# 3

OUT 関数自体は NULL を返します。


この関数はしばしば左実行パイプによって書かれます。

$ flc -q '
  OUT << "Hello, world!"
'
# Hello, world!