aboutsummaryrefslogtreecommitdiff
path: root/fib.kpl
diff options
context:
space:
mode:
authornodist <kevin.comas.git@gmail.com>2026-08-02 11:07:19 -0400
committernodist <kevin.comas.git@gmail.com>2026-08-02 11:07:19 -0400
commit651cec72681afc0821a03a71d07aaa797d37649e (patch)
tree3a5a1689057052ad0fefcebac5ed8b651e5a56b4 /fib.kpl
parentc9d9511e6c964853e35f143cf45f3a0f02521e1d (diff)
new syntax
Diffstat (limited to 'fib.kpl')
-rw-r--r--fib.kpl50
1 files changed, 31 insertions, 19 deletions
diff --git a/fib.kpl b/fib.kpl
index e1ab025..d8a2140 100644
--- a/fib.kpl
+++ b/fib.kpl
@@ -1,27 +1,39 @@
-/*
- Fibonacci sequence
-*/
+// Fibonacci sequence
-`export fib : ([I64; I64.n]
+`export fib_recursive : {[I64.n]
? {
- n <= 0 { 0 }
+ n < 0 { %.error ~ "#BOLD#RED#Invalid n Got %#" `format n }
+ n = 0 { 0 }
n < 2 { 1 }
- { `sync(fib; n - 1) + fib `sync n - 2 }
+ { + (fib `sync n - 1; fib `sync n - 2) }
}
-)
+}
-`export fib_string : ([String; I64.n]
- "#MAGENTA#fib#(#CYAN#%#) #WHITE#=# #GREEN#%#\n" `format (n; fib `sync n)
-)
+`export fib_iterative : {[I64.n]
+ ? n < 0 {
+ `return.error ~ "#BOLD#RED#Invalid n Got %#" `format n
+ }
+ a : 0
+ b : 1
+ @ 0 .. n {
+ c : b
+ b : a + b
+ a : c
+ }
+ a
+}
-`is_main ([Void]
- `use "sys" [args]
- ? 3 != `length args {
- `return `error String $ (
- "#BOLD#RED#Got: %#\n" `format " " `join args
- "#BOLD#WHITE#Usage: % % <n>#\n" `format (args `get 0; args `get 1)
- )
+`export fib_array : {[I64.n]
+ ? {
+ n < 0 {
+ `return.error ~ "#BOLD#RED#Invalid n Got %#" `format n
+ }
+ n > 0 { n :- 1 }
+ }
+ arr : Array $ (0; 1)
+ @ 0 .. n {
+ arr `push + (arr `get -2; arr `get -1)
}
- `value fib_string `sync I64 $ args `get -1
-)
+ arr
+}