Skip to content

Commit fbc7578

Browse files
committed
tutorial: update all examples
1 parent 5e5b627 commit fbc7578

16 files changed

Lines changed: 164 additions & 162 deletions

File tree

tutorial/01-hello/main.kv

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# 01-hello: your first kvlang program
2-
# Run: kvlang tutorial/01-hello/main.kv
2+
# Run: kvlang tutorial/01-hello/
33

44
def main() -> () {
55
print("hello kvlang")
66
}
7+
78
main() -> ()

tutorial/02-vars/main.kv

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# 02-vars: variables and paths
2-
# Run: kvlang tutorial/02-vars/main.kv
2+
# Run: kvlang tutorial/02-vars/
33

44
def main() -> () {
5-
42 -> ./x // write 42 to path ./x
6-
print("x =", ./x) // read from path ./x
5+
42 -> x // write 42 to path x
6+
print("x =", x) // read from path x
77

8-
./x + 8 -> ./y // 42 + 8 = 50
9-
print("y =", ./y)
8+
x + 8 -> y // 42 + 8 = 50
9+
print("y =", y)
1010
}
11+
1112
main() -> ()

tutorial/03-arith/main.kv

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# 03-arith: arithmetic operations
2-
# Run: kvlang tutorial/03-arith/main.kv
2+
# Run: kvlang tutorial/03-arith/
33

44
def main() -> () {
55
print("add:", 10 + 3) // 13
@@ -11,7 +11,6 @@ def main() -> () {
1111
print("pow:", pow(2, 5)) // 32
1212
print("sqrt:", sqrt(144)) // 12
1313
print("abs:", abs(-42)) // 42
14-
print("max:", max(3, 7, 1)) // 7
15-
print("min:", min(3, 7, 1)) // 1
1614
}
15+
1716
main() -> ()

tutorial/04-func/main.kv

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
# 04-func: defining and calling functions
2-
# Run: kvlang tutorial/04-func/main.kv
2+
# Run: kvlang tutorial/04-func/
33

44
def add(A: int, B: int) -> (C: int) {
5-
A + B -> ./C
5+
A + B -> C
66
}
77

88
def double(x: int) -> (y: int) {
9-
x * 2 -> ./y
9+
x * 2 -> y
1010
}
1111

1212
def main() -> () {
13-
add(10, 20) -> ./a // 30
14-
print("add(10,20) =", ./a)
13+
add(10, 20) -> a // 30
14+
print("add(10,20) =", a)
1515

16-
double(./a) -> ./b // 60
17-
print("double(add(10,20)) =", ./b)
16+
double(a) -> b // 60
17+
print("double(add(10,20)) =", b)
1818
}
19+
1920
main() -> ()

tutorial/05-if/main.kv

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
# 05-if: conditional logic
2-
# Run: kvlang tutorial/05-if/main.kv
2+
# Run: kvlang tutorial/05-if/
33

44
def abs(x: int) -> (r: int) {
55
if (x < 0) {
6-
-x -> ./r
6+
-x -> r
77
} else {
8-
x -> ./r
8+
x -> r
99
}
1010
}
1111

1212
def main() -> () {
13-
abs(-5) -> ./a
14-
print("abs(-5) =", ./a) // 5
13+
abs(-5) -> a
14+
print("abs(-5) =", a) // 5
1515

16-
abs(3) -> ./b
17-
print("abs(3) =", ./b) // 3
16+
abs(3) -> b
17+
print("abs(3) =", b) // 3
1818

1919
print("true && false =", true && false) // false
2020
print("true || false =", true || false) // true
2121
print("!true =", !true) // false
2222
}
23+
2324
main() -> ()

tutorial/06-while/main.kv

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,53 @@
11
# 06-while: while loops, break, and continue
2-
# Run: kvlang tutorial/06-while/main.kv
2+
# Run: kvlang tutorial/06-while/
33

4-
# sum 1 + 2 + ... + n
54
def sum_to(n: int) -> (total: int) {
6-
0 -> ./total
7-
1 -> ./i
8-
while (./i <= n) {
9-
./total + ./i -> ./total
10-
./i + 1 -> ./i
5+
0 -> total
6+
1 -> i
7+
while (i <= n) {
8+
total + i -> total
9+
i + 1 -> i
1110
}
1211
}
1312

14-
# find the first multiple of 7 in [1, n]; 0 if none (demonstrates break)
1513
def first_div7(n: int) -> (result: int) {
16-
0 -> ./result
17-
1 -> ./i
18-
while (./i <= n) {
19-
./i % 7 -> ./rem
20-
./rem == 0 -> ./hit
21-
if (./hit) {
22-
./i -> ./result
14+
0 -> result
15+
1 -> i
16+
while (i <= n) {
17+
i % 7 -> rem
18+
rem == 0 -> hit
19+
if (hit) {
20+
i -> result
2321
break
2422
}
25-
./i + 1 -> ./i
23+
i + 1 -> i
2624
}
2725
}
2826

29-
# sum only odd numbers in [1, n] (demonstrates continue)
3027
def sum_odds(n: int) -> (total: int) {
31-
0 -> ./total
32-
1 -> ./i
33-
while (./i <= n) {
34-
./i % 2 -> ./rem
35-
./rem == 0 -> ./even
36-
if (./even) {
37-
./i + 1 -> ./i
28+
0 -> total
29+
1 -> i
30+
while (i <= n) {
31+
i % 2 -> rem
32+
rem == 0 -> even
33+
if (even) {
34+
i + 1 -> i
3835
continue
3936
}
40-
./total + ./i -> ./total
41-
./i + 1 -> ./i
37+
total + i -> total
38+
i + 1 -> i
4239
}
4340
}
4441

4542
def main() -> () {
46-
sum_to(10) -> ./s
47-
print("sum(1..10) =", ./s) // 55
43+
sum_to(10) -> s
44+
print("sum(1..10) =", s) // 55
4845

49-
first_div7(20) -> ./d7
50-
print("first div7 in [1,20] =", ./d7) // 7
46+
first_div7(20) -> d7
47+
print("first div7 in [1,20] =", d7) // 7
5148

52-
sum_odds(10) -> ./so
53-
print("sum odds(1..10) =", ./so) // 25
49+
sum_odds(10) -> so
50+
print("sum odds(1..10) =", so) // 25
5451
}
52+
5553
main() -> ()

tutorial/07-recursion/main.kv

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
11
# 07-recursion: recursive functions with TCO
2-
# Run: kvlang tutorial/07-recursion/main.kv
2+
# Run: kvlang tutorial/07-recursion/
33

44
def fib(n: int) -> (a: int, b: int) {
55
if (n <= 1) {
6-
0 -> ./a
7-
1 -> ./b
6+
0 -> a
7+
1 -> b
88
} else {
9-
fib(n - 1) -> ./a, ./b
10-
./a + ./b -> ./x
11-
./b -> ./a
12-
./x -> ./b
9+
fib(n - 1) -> a, b
10+
a + b -> x
11+
b -> a
12+
x -> b
1313
}
1414
}
1515

1616
def fact(n: int, acc: int) -> (r: int) {
1717
if (n <= 0) {
18-
acc -> ./r
18+
acc -> r
1919
} else {
20-
fact(n - 1, acc * n) -> ./r
20+
fact(n - 1, acc * n) -> r
2121
}
2222
}
2323

2424
def main() -> () {
25-
fib(10) -> ./_, ./result
26-
print("fib(10) =", ./result)
25+
fib(10) -> _, result
26+
print("fib(10) =", result)
2727

28-
fact(10, 1) -> ./f
29-
print("fact(10) =", ./f) // 3628800
28+
fact(10, 1) -> f
29+
print("fact(10) =", f) // 3628800
3030
}
31+
3132
main() -> ()

tutorial/08-algo/classify.kv

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,23 @@
77

88
def classify(score:int) -> (grade:string) {
99
if (score >= 90) {
10-
"A" -> ./grade
10+
"A" -> grade
1111
} else {
1212
if (score >= 80) {
13-
"B" -> ./grade
13+
"B" -> grade
1414
} else {
1515
if (score >= 70) {
16-
"C" -> ./grade
16+
"C" -> grade
1717
} else {
1818
if (score >= 60) {
19-
"D" -> ./grade
19+
"D" -> grade
2020
} else {
21-
"F" -> ./grade
21+
"F" -> grade
2222
}
2323
}
2424
}
2525
}
2626
}
2727

28-
classify(85) -> ./g
29-
print("grade =", ./g)
28+
classify(85) -> g
29+
print("grade =", g)

tutorial/08-algo/collatz.kv

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66
# steps = 111
77

88
def collatz(n:int) -> (steps:int) {
9-
0 -> ./steps
9+
0 -> steps
1010
while (n > 1) {
11-
n % 2 -> ./mod
12-
./mod == 0 -> ./even
13-
if (./even) {
11+
n % 2 -> mod
12+
mod == 0 -> even
13+
if (even) {
1414
n / 2 -> n
1515
} else {
16-
n * 3 -> ./t
17-
./t + 1 -> n
16+
n * 3 -> t
17+
t + 1 -> n
1818
}
19-
./steps + 1 -> ./steps
19+
steps + 1 -> steps
2020
}
2121
}
2222

23-
collatz(27) -> ./ans
24-
print("steps =", ./ans)
23+
collatz(27) -> ans
24+
print("steps =", ans)

tutorial/08-algo/factorial.kv

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
# fact = 3628800
77

88
def factorial(n:int) -> (result:int) {
9-
1 -> ./result
10-
1 -> ./i
11-
while (./i <= n) {
12-
./result * ./i -> ./result
13-
./i + 1 -> ./i
9+
1 -> result
10+
1 -> i
11+
while (i <= n) {
12+
result * i -> result
13+
i + 1 -> i
1414
}
1515
}
1616

17-
factorial(10) -> ./ans
18-
print("fact =", ./ans)
17+
factorial(10) -> ans
18+
print("fact =", ans)

0 commit comments

Comments
 (0)