Skip to content
Playground

標準ライブラリ中核

よく使う標準ライブラリ surface をまとめる。API はまだ変わる可能性がある。

std::list

yulang
[1, 2, 3].append [4]
[1, 2, 3].last
[1, 2, 3][1]
[1, 2, 3][1..<3]

list は intrangeIndexFold+ 経由の Add を実装している。主な helper は emptysingletonconsunconsmapfilterfoldrevappendfirstlastsort である。

mutable list ref には .push もある。

std::range

yulang
0..<10
0..10
0..
..<10
..

range は値であり、Fold を実装している。そのため forstd::undet::each に渡せる。

std::str

yulang
"abc".len
"abcd"[1..<3]
"abcd".splice (range 1 3) "XY"

文字列は intrangeIndex、および .lenLen を実装している。

std::result

yulang
ok 1
err "bad"

result 'ok 'errmapand_thenunwrap_or を提供する。prelude は resultokerr を reexport するため、ユーザーコードでは通常 std::result::result:: を付けない。これは値として返すための型で、filesystem API の主 surface にはまだ使われていない。

std::console

yulang
say "hello"
42.say
"debug".print
"debug".println
println ["debug", "output"]

console output は host-handled effect である。say / .sayDisplay.show の結果に改行を付けて出力する。print / .printDebug.debug の結果を改行なしで出力し、println / .printlnDebug.debug の結果に改行を付けて出力する。host-facing operation は print_native / println_native で、通常の program は wrapper と role method を使う。

std::fs

yulang
read_text "data.txt"
read_at "data.txt" (0..<1024)
open "data.txt"

filesystem surface は text 指向である。read_textstr を返し、host error は effect row の fs_err として直接投げる。read_at は byte range を読み、UTF-8 として valid な text prefix と valid range を返す。open は host-backed な text reference を返し、dirty な buffer は handle state の drop 時に flush される。

読む API 全体は std::fs を参照。

Prelude の Role

主な prelude role は次の通り。

  • Eq, Ord
  • Add, Sub, Mul, Div
  • Len
  • Display, Debug
  • Cast
  • LowerHex, UpperHex

+==.len.show.debug、文字列埋め込み、implicit cast などは、これらの role を通して解決される。

Yulang