Compare commits

..

4 Commits

Author SHA1 Message Date
c52875ef03 [obsidian] vault backup: 2025-09-20 13:42:31[
All checks were successful
Build / build (push) Successful in 10m4s
2025-09-20 13:42:32 +09:00
b1cc13e269 [obsidian] vault backup: 2025-09-20 11:57:22[
All checks were successful
Build / build (push) Successful in 11m9s
2025-09-20 11:57:22 +09:00
eace359d3d [obsidian] vault backup: 2025-09-17 16:59:49[
Some checks failed
Build / build (push) Failing after 8m31s
2025-09-17 16:59:49 +09:00
6dc8f99779 [obsidian] vault backup: 2025-09-17 15:59:48[ 2025-09-17 15:59:48 +09:00
4 changed files with 54 additions and 2 deletions

8
content/Ad-Astra.md Normal file
View File

@@ -0,0 +1,8 @@
---
date: 2025-09-20 11:59
---
#programming-language
[[Lady Deirdre]]を作ってる人のスクリプティングプログラミング言語。[[Rust]]で実装されてる
[Introduction - The Ad Astra Book](https://ad-astra.lakhin.com/)

View File

@@ -11,5 +11,6 @@ date: "2023-09-01T19:08:25+0900"
- [[Rhai]] - [[Rhai]]
- [[Moonbit]] - [[Moonbit]]
- [[Gream]] - [[Gream]]
- [[Ad-Astra]]
[[RustでGUIを作る選択肢]] [[RustでGUIを作る選択肢]]

View File

@@ -77,3 +77,46 @@ impl Machine{
} }
``` ```
## 用途
例えばcatさんに作ってもらったこの辺の再帰を用いたコードがあるとする
```rust
fn gen_metalic_rec(times,freq,oscproto){
if(times>0){
let next = gen_metalic_rec(times-1,freq*1.176,oscproto)
let osc = oscproto();
| | { osc(freq) + next() }
}else{
| | 0.0
}
}
fn gen_metalic(times,freq){
let gen = gen_metalic_rec(times,freq,| | square_0);
| | gen() / times
}
let lowest_freq = 200.0
let myoscbank = gen_metalic(6,lowest_freq)
```
こういう組み込み関数を与えて、
```rust
extern enumerate_by: (times,init:float,(x:float,acc:float)->float)->[float]
```
```rust
fn metalic(times,lowest_freq){
let freqs = enumerate_by(times,lowest_freq, |_x,acc| acc*1.167)
let res = map(freqs,|f| `square_0(liftf(f)))
|> foldl(_, |x,acc| `{ $x + $acc } )
`{$res / liftf(times)}
}
fn dsp(){
metalic!(6,200)
}
```