@immut.Vector
このページは現在のリポジトリ実装を基準にしており、0.3.0 の API 基準として記述されています。
@immut.Vector[T]
moonbit
struct Vector[T] {
data : VecCore[T]
} derive(Eq)- 説明 不変なベクトルを表します。内部的には
VecCore[T]に支えられており、VecCore[T]は core の永続ベクトルストレージに対する本パッケージ別名です。この抽象を外部向けに表すライブラリ別名としてVecLib[T]を用います。
セマンティクス
@immut.Vectorは一貫して値セマンティクスを採用しており、set、map、left_scale、right_scaleなどは新しい値を返します。このパッケージは
@mutable.Vectorと共有される代数サブセットの整合性を保ちますが、原地更新 API は持ちません。最適化された core の不変ベクトル実装は、単なる内部詳細ではなく、パッケージ間でより統一されたフラットなデータ経路を支える基盤になっています。
フィールド
data- ベクトルの要素を格納する不変な配列。
関数とメソッド
fn[T] Vector::from_array(arr : Array[T]) -> Vector[T]- 説明 可変な配列から不変なベクトルを作成します。
- パラメータ
arr:Array[T]- 入力となる可変な配列。
- 戻り値
Vector[T]- 配列の要素を含む不変なベクトル。 - 例moonbit
let v = Vector::from_array([1, 2, 3])
fn[T] Vector::make(n : Int, elem : T) -> Vector[T]- 説明 長さ
nのベクトルを作成し、すべての要素をelemで初期化します。 - パラメータ
n:Int- ベクトルの長さ。elem:T- 初期値。
- 戻り値
Vector[T]- 新しく作成されたベクトル。
- 説明 長さ
fn[T] Vector::makei(n : Int, f : (Int) -> T) -> Vector[T]- 説明 長さ
nのベクトルを作成し、各要素をインデックス関数fで生成します。 - パラメータ
n:Int- ベクトルの長さ。f:(Int) -> T- インデックスを受け取り要素を返す関数(0 からn-1)。
- 戻り値
Vector[T]- 生成されたベクトル。
- 説明 長さ
fn[T] length(self : Vector[T]) -> Int- 説明 ベクトルの長さ(要素数)を取得します。
- パラメータ
self:Vector[T]- 対象のベクトル。
- 戻り値
Int- ベクトルの長さ。
fn[T] Vector::op_get(self : Vector[T], i : Int) -> T- 説明 指定したインデックスの要素を取得します。
v[i]構文をサポートします。 - パラメータ
self:Vector[T]- 対象のベクトル。i:Int- インデックス。
- 戻り値
T- 指定位置の要素。
- 説明 指定したインデックスの要素を取得します。
fn[T] set(self : Vector[T], i : Int, x : T) -> Vector[T]- 説明 インデックス
iの要素をxに置き換えた新しいベクトルを作成します。元のベクトルは変更されません。 - パラメータ
self:Vector[T]- 元のベクトル。i:Int- 置き換える位置のインデックス。x:T- 新しい要素。
- 戻り値
Vector[T]- 更新された新しいベクトル。
- 説明 インデックス
fn[T, U] map(self : Vector[T], f : (T) -> U) -> Vector[U]- 説明 ベクトルの各要素に関数
fを適用し、その結果を含む新しいベクトルを返します。 - パラメータ
self:Vector[T]- 入力ベクトル。f:(T) -> U- 変換関数。
- 戻り値
Vector[U]- 変換後の新しいベクトル。
- 説明 ベクトルの各要素に関数
fn[T : Add] add_constant(self : Vector[T], cst : T) -> Vector[T]- 説明 ベクトルの各要素に定数
cstを加算し、新しいベクトルを返します。 - パラメータ
self:Vector[T]- 入力ベクトル。cst:T- 加算する定数。
- 戻り値
Vector[T]- 結果のベクトル。
- 説明 ベクトルの各要素に定数
fn[T, U, V] zip_with(self : Vector[T], other : Vector[U], f : (T, U) -> V) -> Vector[V]- 説明 同じ長さの 2 つのベクトルの要素ペアに対し、二項関数
fを適用します。 - パラメータ
self:Vector[T]- 1 つ目のベクトル。other:Vector[U]- 2 つ目のベクトル。f:(T, U) -> V- 結合関数。
- 戻り値
Vector[V]- 結合後の新しいベクトル。
- 説明 同じ長さの 2 つのベクトルの要素ペアに対し、二項関数
fn[T : Add] add(self : Vector[T], other : Vector[T]) -> Vector[T]- 説明 ベクトル加算(要素ごとの加算)。
+演算子をサポートします。 - パラメータ
self:Vector[T]- 1 つ目のベクトル。other:Vector[T]- 2 つ目のベクトル。
- 戻り値
Vector[T]- 加算結果のベクトル。
- 説明 ベクトル加算(要素ごとの加算)。
fn[T : Mul] mul(self : Vector[T], other : Vector[T]) -> Vector[T]- 説明 ベクトルの要素ごとの積(アダマール積)。
*演算子をサポートします。 - パラメータ
self:Vector[T]- 1 つ目のベクトル。other:Vector[T]- 2 つ目のベクトル。
- 戻り値
Vector[T]- 積のベクトル。
- 説明 ベクトルの要素ごとの積(アダマール積)。
fn[T : Neg] neg(self : Vector[T]) -> Vector[T]- 説明 ベクトルの符号を反転します。
-v構文をサポートします。 - パラメータ
self:Vector[T]- 対象のベクトル。
- 戻り値
Vector[T]- 各要素の符号を反転した新しいベクトル。
- 説明 ベクトルの符号を反転します。
fn[T : Mul] left_scale(self : Vector[T], scalar : T) -> Vector[T]- 説明 ベクトルに左からスカラーを乗算します。
- パラメータ
self:Vector[T]- 元のベクトル。scalar:T- スカラー値。
- 戻り値
Vector[T]- スケーリングされた新しいベクトル。
fn[T : Mul] right_scale(self : Vector[T], scalar : T) -> Vector[T]- 説明 ベクトルに右からスカラーを乗算します。
- パラメータ
self:Vector[T]- 元のベクトル。scalar:T- スカラー値。
- 戻り値
Vector[T]- スケーリングされた新しいベクトル。
fn[T : One + Mul + Add + Neg] lerp(self : Vector[T], other : Vector[T], alpha : T) -> Vector[T]- 説明 2 つのベクトルの間で線形補間を行います。計算式は
(1 - alpha) * self + alpha * otherです。 - パラメータ
self:Vector[T]- 開始ベクトル (alpha = 0)。other:Vector[T]- 終了ベクトル (alpha = 1)。alpha:T- 補間パラメータ。
- 戻り値
Vector[T]- 補間結果。
- 説明 2 つのベクトルの間で線形補間を行います。計算式は
fn[T : Add + Mul] lin_comb(scalar_a : T, self : Vector[T], scalar_b : T, other : Vector[T]) -> Vector[T]- 説明 2 つのベクトルの線形結合
scalar_a * self + scalar_b * otherを計算します。 - パラメータ
scalar_a:T- 1 つ目のベクトルの重み。self:Vector[T]- 1 つ目のベクトル。scalar_b:T- 2 つ目のベクトルの重み。other:Vector[T]- 2 つ目のベクトル。
- 戻り値
Vector[T]- 線形結合結果のベクトル。
- 説明 2 つのベクトルの線形結合
fn[T] to_col_matrix(self : Vector[T]) -> Matrix[T]- 説明 ベクトルを列行列 (n × 1) に変換します。
- パラメータ
self:Vector[T]- 元のベクトル。
- 戻り値
Matrix[T]- n 行 1 列の行列。
fn[T] to_row_matrix(self : Vector[T]) -> Matrix[T]- 説明 ベクトルを形式的な行行列 (1 × n) に変換します。
- パラメータ
self:Vector[T]- 元のベクトル。
- 戻り値
Matrix[T]- 1 行 n 列の行列。
fn[T : Zero] scaled_matrix(self : Vector[T]) -> Matrix[T]- 説明 ベクトルの要素を主対角成分とする対角行列を作成します。
- パラメータ
self:Vector[T]- 対角成分のソース。
- 戻り値
Matrix[T]- 対角行列。
fn[T : Mul] tensor_product(self : Vector[T], other : Vector[T]) -> Matrix[T]- 説明 2 つのベクトルのテンソル積(外積)を計算し、行列を生成します。
- パラメータ
self:Vector[T]- 左操作ベクトル(結果行列の行数を決定)。other:Vector[T]- 右操作ベクトル(結果行列の列数を決定)。
- 戻り値
Matrix[T]- 外積行列。