From 390503adc3035b18b0c97f22f40f107521817397 Mon Sep 17 00:00:00 2001 From: nodist Date: Tue, 19 May 2026 15:45:59 -0400 Subject: type checking --- fib.kpl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'fib.kpl') diff --git a/fib.kpl b/fib.kpl index f049ba0..cb6b5ef 100644 --- a/fib.kpl +++ b/fib.kpl @@ -5,15 +5,24 @@ */ `export fib : Fn[n] $ ( + t : `type n + ? { + t = Int[Any; .signed; Any] { + ? n <= 0 { `return 0 } + } + t = Int[Any; .unsigned; Any] { + ? n = 0 { `return 0 } + } + { `panic "n must be a signed or unsigned Int" } + } ? { - n <= 0 { 0 } n < 3 { 2 } - { `call_sync(fib; n - 1) + fib `call_sync n - 2 } + { `sync(fib; n - 1) + fib `sync n - 2 } } ) `export fib_string Fn[n] $ ( - String $ ("fib("; n; ") = "; fib `call_sync n; "\n") + String $ ("fib("; n; ") = "; fib `sync n; "\n") ) `is_main Fn $ ( @@ -24,5 +33,5 @@ "Usage: "; args `get 0; " "; args `get 1; " \n" ) } - `print fib_string `call_sync I64 $ args `get -1 + `print fib_string `sync I64 $ args `get -1 ) -- cgit v1.2.3