🪃
Uiua 言語の開発環境
の続き
Font
公式が推奨する DejaVu Sans Mono フォント。
Griph をきれいに表示しないと Uiua の魅力も半減するのでフォントは大事と思われる。
以下からダウンロード。いろんな派生フォントが入っているけど DejaVu Sans Mono を探してインストール。
MacOS なら 該当の DejaVuSansMono.ttf ファイルをダブルクリックして、インストールで OK 。
VSCode Extension
公式で提供されている。
インストールしたら Uiua 用のデフォルト設定で DejaVu Sans Mono が勝手に指定されていたので手間が省けた。
// uiua 言語が優先される設定を構成します。
"[uiua]": {
"editor.semanticHighlighting.enabled": true,
"editor.inlayHints.enabled": "on",
"editor.fontFamily": "DejaVu Sans Mono, monospace",
"editor.fontSize": 16
},
拡張機能自体に設定できる項目は少ない。
Uiua 実行ファイルの場所を指定する項目だけ。これはパスが通っているなら特に設定しなくても大丈夫。
{
// Path to the Uiua executable used by the Uiua extension. When empty, the extension will try to find the Uiua executable in your PATH environment variable.
"uiua.executablePath": ""
}
書いてみる
公式ドキュメントから適当なサンプルをコピペ https://uiua.org/pad?src=⇌[⍥(%2B%2C%2C)10 1 0]
- 貼り付けた直後の状態
- ファイルを保存した後。拡張機能のフォーマットが実行され Griph に変換される。
- 各 Griph にカーソルをあてると説明がホバーされる。この場合は
⍥
。
- 実行
main.ua
$ uiua run
[7 1 9 9 5]
- コードの解説:
⌊×10[⍥⚂5]
- 右から順に評価される。
-
[]
は配列を作る。 -
5
をスタックに積む。 -
⚂
random
演算子: 乱数を生成する。乱数は 0〜1 の数。 -
⍥
reapeat
演算子: スタックからポップした数値(この場合は 5 )だけ、引数となる演算子(この場合は random )を繰り返し処理する。結果はスタックに積まれる。 -
10
をスタックに積む。 -
×
multiply
演算子: 乗算する。Uiua の演算子はたいていスカラ値とコレクション [1] どちらも適宜処理する。この場合は 10 を 配列 の各要素それぞれに乗算する、という動きになる。 -
⌊
floor
演算子: 数値を切り捨てする。この場合も配列の各要素に対して作用する。 - 最終的にスタックに残るのは、 「ランダムな 0〜1 の数値を10倍して切り捨てした5つの数値を持つ配列」となる。
- 途中経過を見るために、
.
duplicate
という、スタックの先頭要素を複製してスタックに積む演算子を挿入して、途中状態をコピーして残してみる。
⌊×.10.[⍥⚂5]
$ uiua run
[0.143500830471 0.987054020347 0.583803611989 0.59630190826 0.069020688416] # ランダムな5つの数値を持つ配列
[1.435008304713 9.870540203471 5.83803611989 5.963019082604 0.690206884163] # そのそれぞれの値を10倍に
[1 9 5 5 0] # 切り捨て
感想
直感的な Griph もあれば微妙なのもある。
コードの見た目が楽しい。
S式以上にコードが短くなる。
続き ↓
-
Uiua では配列が唯一存在するコレクション型。 ↩︎
Discussion