[obsidian] vault backup: 2025-09-20 11:57:22[
All checks were successful
Build / build (push) Successful in 11m9s

This commit is contained in:
2025-09-20 11:57:22 +09:00
parent eace359d3d
commit b1cc13e269

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)
}
```