I am new to Ada and all stuff around it and I learned that the primary tool used to build programs is GPRbuild.
I was nicely surprised that the syntax of the file describing how to buiild a program is clean and readable:
project Hello is
for Main use ("hello.adb");
for Source_Dirs use ("src");
for Object_Dir use "obj";
for Exec_Dir use ".";
for Run_Path_Origin use "/";
for Locally_Removed_Files use ("myfile");
package Binder is
for Default_Switches ("Ada") use ("-shared");
end Binder;
end Hello;
Now there is a new package manager built on top of that - Alire.
It has all the bangs and whistles - it downloads, manages dependencies, prints out colors and emojis.
My question is: why are we using syntax like this
{'case(distribution)' = {
'debian|ubuntu': true,
'...': false
}}
# Or in a more idiomatic TOML syntax
['case(distribution)']
'debian|ubuntu' = true
'...' = false
instead of something like this
case distribution is
when 'debian' | 'ubuntu' => True;
when others => False;
end case;
Why pretend to have a declarative file format that becomes a very ugly programming tool?
![]()