mirror of
https://github.com/typst/typst
synced 2025-05-13 20:46:23 +08:00
43 lines
676 B
Typst
43 lines
676 B
Typst
// Test recursive function calls.
|
|
// Ref: false
|
|
|
|
---
|
|
// Test with named function.
|
|
#let fib(n) = {
|
|
if n <= 2 {
|
|
1
|
|
} else {
|
|
fib(n - 1) + fib(n - 2)
|
|
}
|
|
}
|
|
|
|
#test(fib(10), 55)
|
|
|
|
---
|
|
// Test with unnamed function.
|
|
// Error: 17-18 unknown variable
|
|
#let f = (n) => f(n - 1)
|
|
#f(10)
|
|
|
|
---
|
|
// Test capturing with named function.
|
|
#let f = 10
|
|
#let f() = f
|
|
#test(type(f()), "function")
|
|
|
|
---
|
|
// Test capturing with unnamed function.
|
|
#let f = 10
|
|
#let f = () => f
|
|
#test(type(f()), "integer")
|
|
|
|
---
|
|
// Error: 15-21 maximum function call depth exceeded
|
|
#let rec(n) = rec(n) + 1
|
|
#rec(1)
|
|
|
|
---
|
|
#let f(x) = "hello"
|
|
#let f(x) = if x != none { f(none) } else { "world" }
|
|
#test(f(1), "world")
|