Merge remote-tracking branch 'home/v4' into v4
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (push) Successful in 9m52s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (push) Successful in 9m52s
				
			This commit is contained in:
		
							
								
								
									
										17
									
								
								content/Dioxus.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								content/Dioxus.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
まだ開発中だけど[[Blitz]]というRustで書かれた独自のネイティブHTMLレンダラの統合予定もあり
 | 
			
		||||
 | 
			
		||||
アニメーションライブラリ
 | 
			
		||||
 | 
			
		||||
[GitHub - wheregmis/dioxus-motion: A lightweight, cross-platform animation library for Dioxus, designed to bring smooth, flexible animations to your Rust web, desktop, and mobile applications.](https://github.com/wheregmis/dioxus-motion?tab=readme-ov-file)
 | 
			
		||||
 | 
			
		||||
グラフ描画ライブラリ(愚直にSVG生成で実装されてる)
 | 
			
		||||
 | 
			
		||||
[GitHub - dioxus-community/dioxus-charts: A simple chart components library for Dioxus](https://github.com/dioxus-community/dioxus-charts)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Rustで書かれたUIでも高速ホットリロードができるとか(どうやってるんだ)
 | 
			
		||||
 | 
			
		||||
[\[media\] Dioxus Subsecond Rust Hotpatch Engine + Ratatui ❤️ : r/rust](https://www.reddit.com/r/rust/comments/1j8z3yb/media_dioxus_subsecond_rust_hotpatch_engine/)
 | 
			
		||||
							
								
								
									
										1
									
								
								content/Elm.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								content/Elm.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
#programming-language 
 | 
			
		||||
							
								
								
									
										2
									
								
								content/Erlang.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								content/Erlang.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
#programming-language 
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								content/Gleam.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								content/Gleam.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										28
									
								
								content/Gream.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								content/Gream.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
#programming-language 
 | 
			
		||||
 | 
			
		||||
[[Rust]]っぽいシンタックスだが、[[Erlang]]の[[BEAM VM]]もしくは[[JavaScript]]をターゲットとして コンパイルされるスクリプティング言語。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Use構文が面白い。ちょっと[[Computation Expression]]でSeqを使った時とか、[[Koka]]のWith構文と似た仕組みと見える
 | 
			
		||||
[Use - The Gleam Language Tour](https://tour.gleam.run/advanced-features/use/)
 | 
			
		||||
 | 
			
		||||
```rust
 | 
			
		||||
pub fn with_use() -> Result(String, Nil) {
 | 
			
		||||
  use username <- result.try(get_username())
 | 
			
		||||
  use password <- result.try(get_password())
 | 
			
		||||
  use greeting <- result.map(log_in(username, password))
 | 
			
		||||
  greeting <> ", " <> username
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn without_use() -> Result(String, Nil) {
 | 
			
		||||
  result.try(get_username(), fn(username) {
 | 
			
		||||
    result.try(get_password(), fn(password) {
 | 
			
		||||
      result.map(log_in(username, password), fn(greeting) {
 | 
			
		||||
        greeting <> ", " <> username
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								content/Koka.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								content/Koka.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
#programming-language 
 | 
			
		||||
 | 
			
		||||
[The Koka Programming Language](https://koka-lang.github.io/koka/doc/index.html)
 | 
			
		||||
 | 
			
		||||
[[MicroSoft]]のチームが研究しているプログラミング言語。
 | 
			
		||||
 | 
			
		||||
名前(KOKA=効果)のとおり、[[代数的エフェクト]]が明示的な組み込みシンタックスで扱える。
 | 
			
		||||
 | 
			
		||||
中括弧の囲みをインデントで代用できて、JSっぽくもPythonっぽくも書ける。シンタックス的に推測できれば無名関数を省略して書けたりと、かなり構文糖衣が積極的に使われている。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
With構文が面白い。[[Haskell]]のIOモナドで`<-`をチェーンしていくようなやつが、単に高階関数を受け取る関数の順番を入れ替える構文として実装されてるので、ネストが深くなっていくのを避けられる。
 | 
			
		||||
 | 
			
		||||
```koka
 | 
			
		||||
with x <- f(e1,...,eN)
 | 
			
		||||
<body>
 | 
			
		||||
//equal to 
 | 
			
		||||
f(e1,...,eN, fn(){ <body> })
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										18
									
								
								content/Moonbit.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								content/Moonbit.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
#programming-language 
 | 
			
		||||
 | 
			
		||||
[[Rust]]っぽい構文とシステムから、メモリ管理だけはGCに任せて[[WebAssembly]]ファーストな言語を設計してみましたみたいなやつ
 | 
			
		||||
 | 
			
		||||
[MoonBit](https://www.moonbitlang.com/)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
現状のコンパイラは[[OCaml]]で書かれてるっぽい。
 | 
			
		||||
 | 
			
		||||
[GitHub - moonbitlang/moonbit-compiler](https://github.com/moonbitlang/moonbit-compiler)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
> 元 Meta で BuckleScript | [[ReScript]] を開発していた [[Hongbo Zhang]] 氏がチーフアーキテクト。
 | 
			
		||||
 | 
			
		||||
[自分が Moonbit 言語について知っていること](https://zenn.dev/mizchi/articles/practical-moonbit)
 | 
			
		||||
 | 
			
		||||
あ、そうなんだ
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								content/Rhai.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								content/Rhai.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
#programming-language 
 | 
			
		||||
 | 
			
		||||
[[Rust]]で、かつRust言語のいいところを取り込んだ[[Lua]]みたいな埋め込みやすい言語を作ってみたらこうなる、みたいなやつ
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[Rhai – Embedded Scripting for Rust](https://rhai.rs/)
 | 
			
		||||
@@ -2,3 +2,14 @@
 | 
			
		||||
date: "2023-09-01T19:08:25+0900"
 | 
			
		||||
---
 | 
			
		||||
#tools #software 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Rustから影響受けたっぽいスクリプティング言語
 | 
			
		||||
 | 
			
		||||
- [[Gluon]]
 | 
			
		||||
- [[Rune]]
 | 
			
		||||
- [[Rhai]]
 | 
			
		||||
- [[Moonbit]]
 | 
			
		||||
- [[Gream]]
 | 
			
		||||
 | 
			
		||||
[[RustでGUIを作る選択肢]]
 | 
			
		||||
							
								
								
									
										26
									
								
								content/RustでGUIを作る選択肢.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								content/RustでGUIを作る選択肢.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
 | 
			
		||||
## [[egui]]
 | 
			
		||||
 | 
			
		||||
[[otopoiesis]]で使ってる。[[ImGui]]から影響を受けたimmediate GUI。WebAssemblyでもきちんと動作する(全部を一つのcanvasにレンダリングする。DOMの扱いは無理)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## [[iced]]
 | 
			
		||||
 | 
			
		||||
[[Elm]] のアーキテクチャに影響を受けたライブラリ。
 | 
			
		||||
 | 
			
		||||
マルチバイト文字非対応
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## [[Tauri]]
 | 
			
		||||
 | 
			
		||||
Webviewベースで、フロントエンドはJSやTypeScriptで書くという、[[Electron]]のような構成のデスクトップアプリを作れるフレームワーク
 | 
			
		||||
 | 
			
		||||
生のCanvasを触ることもできる
 | 
			
		||||
 | 
			
		||||
## [[Dioxus]]
 | 
			
		||||
 | 
			
		||||
フロントエンドも含めてRustで完結するWebviewベースのライブラリ。
 | 
			
		||||
 | 
			
		||||
こちらは生Canvas触れないのがつらい
 | 
			
		||||
 | 
			
		||||
Dioxusでつくっていって、サムネイルとか必要ならWeb-sysでCanvas動かせばそれでいいのかな
 | 
			
		||||
@@ -10,7 +10,12 @@
 | 
			
		||||
- 操作的意味論的にもある程度一貫性がある
 | 
			
		||||
- モジュール内ではシンボルの相互参照が可能(後から定義されるシンボルでも参照可能)
 | 
			
		||||
 | 
			
		||||
で、デザインチョイスのトレードオフとしては意味論を楽にしようと思うと分割コンパイルがめんどくさくなる
 | 
			
		||||
分割コンパイルができるということは、依存するファイルを毎回コンパイルしないでも、型情報のキャッシュが残ってれば再利用できるということ
 | 
			
		||||
 | 
			
		||||
バラバラのMIRとしてコンパイルできて、関数や定数はmonomorphizeされたユニークな名前:値の対応関係が1:1で付く
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
デザインチョイスのトレードオフとしては意味論を楽にしようと思うと分割コンパイルがめんどくさくなる
 | 
			
		||||
 | 
			
		||||
複数のコードを合体させるときに、流用されるコードの複製が増える問題
 | 
			
		||||
 | 
			
		||||
@@ -42,7 +47,8 @@ mod modname{//ソースファイルと同じ宣言
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```rust
 | 
			
		||||
mod(stage-1){//ステージの変更
 | 
			
		||||
mod modname{//ステージの変更
 | 
			
		||||
@stage = macro
 | 
			
		||||
   //
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ date: 2025-07-02 11:40
 | 
			
		||||
 | 
			
		||||
## 基本構文
 | 
			
		||||
 | 
			
		||||
構文のベースは [Elm](https://elm-lang.org/docs/records) である。この部分だけは Rust 風にはしない。
 | 
			
		||||
構文のベースは [[Elm]] である。この部分だけは Rust 風にはしない。
 | 
			
		||||
 | 
			
		||||
匿名レコード型を正の文脈で使う。
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -121,6 +121,7 @@ ${
 | 
			
		||||
 | 
			
		||||
この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう
 | 
			
		||||
 | 
			
		||||
→ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ステージ表記は相対表記がいいのかしら
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user