🪃

Uiua 言語で Hello, World

2023/09/29に公開

Uiua とは

https://www.uiua.org/

Uiua (wee-wuh) はスタックベースの配列プログラミング言語で、simplicity, beauty, そして tacit code にフォーカスしています。

参考: Tacit Programming https://en.wikipedia.org/wiki/Tacit_programming

環境

MacOS で試してます。

事前準備

Git と Rust が必要。両方 Homebrew などで入れておいてください。

インストール

公式ドキュメントを参考に。 https://www.uiua.org/install

git clone https://github.com/uiua-lang/uiua
cd uiua
cargo install --path . --features audio

clap という crate のバージョンが解決できないというエラー?

$ cargo install --path . --features audio

  Installing uiua v0.1.0 (/Users/me/xxxx/uiua)
    Updating crates.io index
error: failed to compile `uiua v0.1.0 (/Users/me/xxxx/uiua)`, intermediate artifacts can be found at `/Users/me/xxxx/uiua/target`

Caused by:
  failed to select a version for the requirement `clap = "^4"`
  candidate versions found which didn't match: 3.2.25, 3.2.24, 3.2.23, ...
  location searched: crates.io index
  required by package `uiua v0.1.0 (/Users/me/xxxx/uiua)`

ググると rust のバージョンを上げろというのが出てくる。
https://users.rust-lang.org/t/how-do-i-use-clap-4-0-0-rc-3/81865/2
現在のバージョンは:

$ rustup show
Default host: aarch64-apple-darwin
rustup home:  /Users/me/.rustup

installed targets for active toolchain
--------------------------------------

aarch64-apple-darwin
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl

active toolchain
----------------

stable-aarch64-apple-darwin (default)
rustc 1.56.1 (59eed8a2a 2021-11-01)

アップデート

rustup update

無事に 1.72.1 に上がった

$ rustup show
Default host: aarch64-apple-darwin
rustup home:  /Users/me/.rustup

installed targets for active toolchain
--------------------------------------

aarch64-apple-darwin
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl

active toolchain
----------------

stable-aarch64-apple-darwin (default)
rustc 1.72.1 (d5c2e9c34 2023-09-13)

改めてインストール..

$ cargo install --path . --features audio

  Installing uiua v0.1.0 (/Users/me/xxxx/uiua)
    Updating crates.io index
  Downloaded backtrace v0.3.69
  Downloaded color_quant v1.1.0
  Downloaded hashbrown v0.14.0
  
  ・・・

   Compiling ecow v0.1.2
   Compiling tower-lsp v0.19.0
   Compiling uiua v0.1.0 (/Users/me/xxxx/uiua)
    Finished release [optimized] target(s) in 1m 59s
  Installing /Users/me/.cargo/bin/uiua
   Installed package `uiua v0.1.0 (/Users/me/xxxx/uiua)` (executable `uiua`)

通った!

実行

uiua コマンドを実行してみるとヘルプが表示される。

$ uiua
Usage: uiua <COMMAND>

Commands:
  init   Initialize a new main.ua file
  run    Format and run a file
  test   Format and test a file
  watch  Run a main.ua in watch mode
  fmt    Format a uiua file or all files in the current directory
  lsp    Run the Language Server
  help   Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help

No .ua file found nearby. Initialize one in the current directory with `uiua init`

uiua の ハローワールド!

$ cd ../
$ mkdir hello-uiua && cd hello-uiua
$ uiua init
$ cat main.ua
"Hello, World!"
$ uiua run
"Hello, World!"

uiua コマンドを引数なしで実行した場合カレントディレクトリに .ua ファイルがあるとそれを watch 変更されると自動的に実行してくれるらしい。

けど、エラーになった。。

$ uiua
The application panicked (crashed).
Message:  called `Result::unwrap()` on an `Err` value: Error { kind: PathNotFound, paths: [""] }
Location: src/main.rs:182

Backtrace omitted.

Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

続き

https://zenn.dev/hatappo/articles/11c7ca2bc2d98e

Discussion