fix long-switch

This commit is contained in:
Victor Taelin 2024-03-14 16:28:32 -03:00
parent 4639202430
commit 65d9b7c6c4
4 changed files with 13 additions and 9 deletions

6
book/U60.fib.kind2 Normal file
View File

@ -0,0 +1,6 @@
fib (n: U60) : U60 =
switch n {
0: 0
1: 1
_: (+ (fib (- n 1)) (fib (- n 2)))
}

View File

@ -4,11 +4,8 @@
//use Nat.{succ,zero}
_main (n: U60) : U60 =
switch n {
0: 0
_: n-1
}
_main : U60 =
(U60.fib 6)
//_main (a: Nat) (b: Nat) (e: (Equal A a b)) : (Equal A a b) =
//switch a {

View File

@ -297,7 +297,7 @@ impl<'i> KindParser<'i> {
val: Box::new(Term::Var { nam: format!("{}-1", nam) }),
bod: val,
});
for i in (0..(cases.len())).rev() {
for i in (1..(cases.len())).rev() {
let x = Box::new(Term::Var { nam: format!("{}-1", nam.clone()) });
let z = cases[i].clone();
let s = val;
@ -305,6 +305,7 @@ impl<'i> KindParser<'i> {
val = Box::new(Term::Swi { nam: nam.clone(), x, z, s, p });
}
val = Box::new(Term::Swi { nam, x, z: cases[0].clone(), s: val, p });
//println!("SWITCH:\n{}", val.show());
return Ok(Term::Src { src, val });
}

View File

@ -149,15 +149,15 @@ impl Term {
Show::text("*")
},
Term::U60 => {
Show::text("#U60")
Show::text("U60")
},
Term::Num { val } => {
Show::text(&format!("#{}", val))
Show::text(&format!("{}", val))
},
Term::Op2 { opr, fst, snd } => {
Show::call(" ", vec![
Show::glue("", vec![
Show::text("#("),
Show::text("("),
opr.format(),
]),
Show::glue("", vec![