diff --git a/README.md b/README.md index b63e740..94dba6a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Hello ! Welcome to my gitea account :) +# Hello ! Welcome to my gitea instance :) -I have a **real** obsession for programming language design and development. I did a lot of prototypes, and most of them are just crappy full of bugs programs. **But**, some projects are ok as prototypes. +I have a **real** obsession for programming language design and development. I did a lot of prototypes, most of them help me to improve, to learn and to test ideas I had. Here you will find short descriptions of some languages I am not too ashamed to show. Some of them look like BASIC, and others like LISP. All of them was made with love, and dropped with the hope to make something better. @@ -31,22 +31,6 @@ end ``` --- - -[roza](https://git.shellbox.fr/bog/roza) is pretty much a clone of wuz with a syntax slightly different. - -``` -# functions are first class citizens -let a = fun (x as int, y as int) -> int - return x + y -end - -# function calls using curly brackets -assert 12 == {a 9 3} -assert 6 == {a {a 1 2} 3} -``` - ---- - [grino](https://git.shellbox.fr/bog/grino) adopt a more functional lisp like syntax. Keywords are as short as possible: the function ``$`` is used to declare variables and the function ``->`` returns a lambda. ``` @@ -78,8 +62,64 @@ Grino supports [closures](https://en.wikipedia.org/wiki/Closure_(computer_progra (assert= 3 (j)) (assert= 4 (j)) ``` +--- +[gux](https://git.shellbox.fr/bog/gux/src/branch/main/tests/fun.gux) is a statically and strongly typed language with a more modern syntax. + +``` +# variable declaration +var x : int = 4; +var y := 3.2; + +# factorial function +fac := fun (n: int) -> int { + if n == 0 { return 1; } + return n * this(n - 1); +}; + +# function overloading +fun first(n: int) -> int { + return 27; +} + +fun first(n: float) -> int { + return 79; +} + +assert first(4) == 27; +assert first(7.3) == 79; +``` --- +[muzgen](https://git.shellbox.fr/bog/muzgen) is a programming language for sound design tasks. It allows to manipulate and combinate oscillators in order to craft interesting sounds. + +``` +# play a sine at 440Hz. +[sine 440] + +# combine by adding two signals +[add [sine 220] [sine 220]] + +# using one sine to control another +[sine [mul 440 [sine 1]]] +``` + +--- +[roza](https://git.shellbox.fr/bog/roza) is pretty much a clone of wuz with a syntax slightly different. + +``` +# functions are first class citizens +let a = fun (x as int, y as int) -> int + return x + y +end + +# function calls using curly brackets +assert 12 == {a 9 3} +assert 6 == {a {a 1 2} 3} +``` + +--- + + [fakir](https://git.shellbox.fr/bog/fakir) has pratically the same syntax and semantic than grino. Fakir adds module importation features using the function ``@``. @@ -113,43 +153,4 @@ d -> a { --- -[muzgen](https://git.shellbox.fr/bog/muzgen) is a programming language for sound design tasks. It allows to manipulate and combinate oscillators in order to craft interesting sounds. -``` -# play a sine at 440Hz. -[sine 440] - -# combine by adding two signals -[add [sine 220] [sine 220]] - -# using one sine to control another -[sine [mul 440 [sine 1]]] -``` - ---- - -[gux](https://git.shellbox.fr/bog/gux/src/branch/main/tests/fun.gux) is a statically and strongly typed language with a more modern syntax. - -``` -# variable declaration -var x : int = 4; -var y := 3.2; - -# factorial function -fac := fun (n: int) -> int { - if n == 0 { return 1; } - return n * this(n - 1); -}; - -# function overloading -fun first(n: int) -> int { - return 27; -} - -fun first(n: float) -> int { - return 79; -} - -assert first(4) == 27; -assert first(7.3) == 79; -``` \ No newline at end of file