Types, fns and vars are now written in another, better, more intuitive and readable way. Types: "pointer to const char" is "* const char" "array of pointers to volatile int" is "[* volatile int]" Read left to right Vars (as well as fn args, struct fields): (var name type) (struct vec3 ((x float) (y float) (z float)) (fn vec3-add ((v1 vec3) (v2 vec3)) vec3 ...) Also fns are now have return types after arg list. * is now must not be attached to any type name (or variable for that matter)
10 lines
238 B
Scheme
10 lines
238 B
Scheme
(include stdio.h)
|
|
|
|
(pub fn main ((argc int) (argv [* const char])) int
|
|
(puts "Hello from Sex!")
|
|
(var name [char 512])
|
|
(puts "What is your name?")
|
|
(scanf "%s" (cast (& name) (* char)))
|
|
(printf "Hello, %s!\n" name)
|
|
(return 0))
|