commit 1c2e952b5a2fc2389ea1637d38792aef57025aa5cd073417b370ea77e30a2ff1 Author: Ada Orbit Date: Tue Feb 24 20:23:01 2026 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..473a0f4 diff --git a/alire.toml b/alire.toml new file mode 100644 index 0000000..63bee4e --- /dev/null +++ b/alire.toml @@ -0,0 +1,9 @@ +name = "lambda" +description = "" +version = "0.1.0-dev" + +authors = ["Your Name"] +maintainers = ["Your Name "] +licenses = "MIT OR Apache-2.0 WITH LLVM-exception" +website = "" +tags = [] diff --git a/alire/alire.lock b/alire/alire.lock new file mode 100644 index 0000000..993ae5b --- /dev/null +++ b/alire/alire.lock @@ -0,0 +1,6 @@ +# THIS FILE IS GENERATED. DO NOT EDIT. + +[solution] +[solution.context] +solved = true + diff --git a/alire/build_hash_inputs b/alire/build_hash_inputs new file mode 100644 index 0000000..d0d8871 --- /dev/null +++ b/alire/build_hash_inputs @@ -0,0 +1,5 @@ +external:LAMBDA_LIBRARY_TYPE=default +external:LIBRARY_TYPE=default +profile:lambda=RELEASE +switches:lambda=-O3,-fdata-sections,-ffunction-sections,-gnatW8,-gnatn +version:gnat_arm_elf=15.2.1 diff --git a/alire/flags/post_fetch_done b/alire/flags/post_fetch_done new file mode 100644 index 0000000..473a0f4 diff --git a/alire/settings.toml b/alire/settings.toml new file mode 100644 index 0000000..83a842c --- /dev/null +++ b/alire/settings.toml @@ -0,0 +1,2 @@ +last_build_profile = "lambda=DEVELOPMENT" + diff --git a/config/lambda_config.ads b/config/lambda_config.ads new file mode 100644 index 0000000..ade618d --- /dev/null +++ b/config/lambda_config.ads @@ -0,0 +1,20 @@ +-- Configuration for lambda generated by Alire +pragma Restrictions (No_Elaboration_Code); +pragma Style_Checks (Off); + +package Lambda_Config is + pragma Pure; + + Crate_Version : constant String := "0.1.0-dev"; + Crate_Name : constant String := "lambda"; + + Alire_Host_OS : constant String := "linux"; + + Alire_Host_Arch : constant String := "x86_64"; + + Alire_Host_Distro : constant String := "fedora"; + + type Build_Profile_Kind is (release, validation, development); + Build_Profile : constant Build_Profile_Kind := release; + +end Lambda_Config; diff --git a/config/lambda_config.gpr b/config/lambda_config.gpr new file mode 100644 index 0000000..484b70e --- /dev/null +++ b/config/lambda_config.gpr @@ -0,0 +1,24 @@ +-- Configuration for lambda generated by Alire +abstract project Lambda_Config is + Crate_Version := "0.1.0-dev"; + Crate_Name := "lambda"; + + Alire_Host_OS := "linux"; + + Alire_Host_Arch := "x86_64"; + + Alire_Host_Distro := "fedora"; + Ada_Compiler_Switches := External_As_List ("ADAFLAGS", " "); + Ada_Compiler_Switches := Ada_Compiler_Switches & + ( + "-O3" -- Optimize for performance + ,"-gnatn" -- Enable inlining + ,"-ffunction-sections" -- Separate ELF section for each function + ,"-fdata-sections" -- Separate ELF section for each variable + ,"-gnatW8" -- UTF-8 encoding for wide characters + ); + + type Build_Profile_Kind is ("release", "validation", "development"); + Build_Profile : Build_Profile_Kind := "release"; + +end Lambda_Config; diff --git a/config/lambda_config.h b/config/lambda_config.h new file mode 100644 index 0000000..666d08a --- /dev/null +++ b/config/lambda_config.h @@ -0,0 +1,20 @@ +/* Configuration for lambda generated by Alire */ +#ifndef LAMBDA_CONFIG_H +#define LAMBDA_CONFIG_H + +#define CRATE_VERSION "0.1.0-dev" +#define CRATE_NAME "lambda" + +#define ALIRE_HOST_OS "linux" + +#define ALIRE_HOST_ARCH "x86_64" + +#define ALIRE_HOST_DISTRO "fedora" + +#define BUILD_PROFILE_RELEASE 1 +#define BUILD_PROFILE_VALIDATION 2 +#define BUILD_PROFILE_DEVELOPMENT 3 + +#define BUILD_PROFILE 1 + +#endif diff --git a/lambda.gpr b/lambda.gpr new file mode 100644 index 0000000..5d4dc57 --- /dev/null +++ b/lambda.gpr @@ -0,0 +1,29 @@ +with "config/lambda_config.gpr"; +project Lambda is + + for Library_Name use "Lambda"; + for Library_Version use Project'Library_Name & ".so." & Lambda_Config.Crate_Version; + + for Source_Dirs use ("src/", "config/"); + for Object_Dir use "obj/" & Lambda_Config.Build_Profile; + for Create_Missing_Dirs use "True"; + for Library_Dir use "lib"; + + type Library_Type_Type is ("relocatable", "static", "static-pic"); + Library_Type : Library_Type_Type := + external ("LAMBDA_LIBRARY_TYPE", external ("LIBRARY_TYPE", "static")); + for Library_Kind use Library_Type; + + package Compiler is + for Default_Switches ("Ada") use Lambda_Config.Ada_Compiler_Switches; + end Compiler; + + package Binder is + for Switches ("Ada") use ("-Es"); -- Symbolic traceback + end Binder; + + package Install is + for Artifacts (".") use ("share"); + end Install; + +end Lambda; diff --git a/lib/lambda.ali b/lib/lambda.ali new file mode 100644 index 0000000..527a595 --- /dev/null +++ b/lib/lambda.ali @@ -0,0 +1,178 @@ +V "GNAT Lib v15" +A -O3 +A -gnatA +A -gnatn +A -ffunction-sections +A -fdata-sections +A -gnatW8 +A -mtune=generic +A -march=x86-64 +P SS ZX + +RN +RV NO_ALLOCATORS +RV NO_DISPATCH +RV NO_DISPATCHING_CALLS +RV NO_EXCEPTION_HANDLERS +RV NO_EXCEPTION_PROPAGATION +RV NO_EXCEPTIONS +RV NO_IMPLICIT_CONDITIONALS +RV NO_LOCAL_ALLOCATORS +RV NO_NESTED_FINALIZATION +RV NO_RECURSION +RV NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_ELABORATION_CODE + +U lambda%b lambda.adb 74b5f7ac NE OO PK +Z ada.exceptions%s a-except.adb a-except.ali +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +Z ada.strings.text_buffers.unbounded%s a-stbuun.adb a-stbuun.ali +Z ada.tags%s a-tags.adb a-tags.ali +Z system%s system.ads system.ali +Z system.finalization_primitives%s s-finpri.adb s-finpri.ali +Z system.secondary_stack%s s-secsta.adb s-secsta.ali +Z system.soft_links%s s-soflin.adb s-soflin.ali +Z system.standard_library%s s-stalib.adb s-stalib.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +Z system.storage_pools%s s-stopoo.adb s-stopoo.ali +Z system.storage_pools.subpools%s s-stposu.adb s-stposu.ali + +U lambda%s lambda.ads d9d36d72 EE OO PF PK +W ada%s ada.ads ada.ali +Z ada.exceptions%s a-except.adb a-except.ali +W ada.strings%s a-string.ads a-string.ali +W ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +W ada.strings.unbounded%s a-strunb.adb a-strunb.ali +Z system%s system.ads system.ali +Z system.finalization_primitives%s s-finpri.adb s-finpri.ali +Z system.pool_global%s s-pooglo.adb s-pooglo.ali +Z system.soft_links%s s-soflin.adb s-soflin.ali + +D ada.ads 20251110095651 76789da1 ada%s +D a-charac.ads 20251110095651 2d3ec45b ada.characters%s +D a-chlat1.ads 20251110095651 e0d72e76 ada.characters.latin_1%s +D a-except.ads 20251110095651 e7970cd9 ada.exceptions%s +D a-finali.ads 20251110095651 bf4f806b ada.finalization%s +D a-stream.ads 20251110095651 17477cbd ada.streams%s +D a-string.ads 20251110095651 90ac6797 ada.strings%s +D a-strmap.ads 20251110095651 1f91ebb6 ada.strings.maps%s +D a-strsea.ads 20251110095651 18c3c634 ada.strings.search%s +D a-sttebu.ads 20251110095651 f1ad67a2 ada.strings.text_buffers%s +D a-stbuun.ads 20251110095651 7ace507d ada.strings.text_buffers.unbounded%s +D a-strunb.ads 20251110095651 b10770ab ada.strings.unbounded%s +D a-strunb.adb 20251110095651 30f67b52 ada.strings.unbounded%b +D a-stuten.ads 20251110095651 c6ced0ae ada.strings.utf_encoding%s +D a-tags.ads 20251110095651 fbca0ad5 ada.tags%s +D a-unccon.ads 20251110095651 0e9b276f ada.unchecked_conversion%s +D a-uncdea.ads 20251110095651 c3a8ac65 ada.unchecked_deallocation%s +D interfac.ads 20251110095651 9111f9c1 interfaces%s +D i-c.ads 20251110095651 e94c966a interfaces.c%s +D lambda.ads 20251129204021 99797a7b lambda%s +D lambda.adb 20251130134111 edcc8dd7 lambda%b +D system.ads 20251110095651 14286b0f system%s +D s-atocou.ads 20251110095651 dc18efc3 system.atomic_counters%s +D s-atocou.adb 20251110095651 6fe685de system.atomic_counters%b +D s-atopri.ads 20251110095651 e19c1d89 system.atomic_primitives%s +D s-exctab.ads 20251110095651 91bef6ef system.exception_table%s +D s-finpri.ads 20251110095651 5970d55a system.finalization_primitives%s +D s-finpri.adb 20251110095651 02c85f69 system.finalization_primitives%b +D s-finroo.ads 20251110095651 0a7c3ed4 system.finalization_root%s +D s-memory.ads 20251110095651 18949c1a system.memory%s +D s-oscons.ads 20251110095651 068e1a91 system.os_constants%s +D s-oslock.ads 20251110095651 13fa6b78 system.os_locks%s +D s-parame.ads 20251110095651 3597fc11 system.parameters%s +D s-pooglo.ads 20251110095651 91708d21 system.pool_global%s +D s-putima.ads 20251110095651 17291fe4 system.put_images%s +D s-retsta.ads 20251110095651 0f6b06cb system.return_stack%s +D s-secsta.ads 20251110095651 578279f5 system.secondary_stack%s +D s-soflin.ads 20251110095651 5d88fdea system.soft_links%s +D s-stache.ads 20251110095651 0b81c1fe system.stack_checking%s +D s-stalib.ads 20251110095651 1c9580f6 system.standard_library%s +D s-stalib.adb 20251110095651 eb464a47 system.standard_library%b +D s-stoele.ads 20251110095651 ccded4e8 system.storage_elements%s +D s-stopoo.ads 20251110095651 e9fa2dd8 system.storage_pools%s +D s-stposu.ads 20251110095651 e0b9fefd system.storage_pools.subpools%s +D s-stratt.ads 20251110095651 516607ae system.stream_attributes%s +D s-traent.ads 20251110095651 c81cbf8c system.traceback_entries%s +D s-unstyp.ads 20251110095651 fa2a7f59 system.unsigned_types%s +G a e +G c Z s b [my_put_image lambda 26 14 none] +G c Z s b [vari lambda 31 13 none] +G c Z s b [abst lambda 32 13 none] +G c Z s b [appl lambda 33 13 none] +G c Z s b [from lambda 34 13 none] +G c Z s b [substitution lambda 36 13 none] +G c Z s b [beta lambda 37 13 none] +G c Z s s [termDI lambda 13 9 none] +G c Z s s [termDA lambda 13 9 none] +G c Z s s [termDF lambda 13 9 none] +G c Z s s [termIP lambda 13 9 none] +X 1 ada.ads +18K9*Ada 22e8 20|3r6 4r6 16r25 18r25 27r23 21|6r23 12r25 16r25 32r22 40r22 +. 74r16 76r18 81r18 92r16 +X 7 a-string.ads +16K13*Strings 35e16 20|3r10 4r10 16r29 18r29 27r27 21|6r27 12r29 16r29 32r26 +. 40r26 74r20 76r22 81r22 92r20 +X 10 a-sttebu.ads +17K21*Text_Buffers 152e29 20|3w18 27r35 21|6r35 +26H9*Root_Buffer_Type 104e14 20|27r48 21|6r48 +29x14*Put 21|12R20 15R20 16R20 17R20 18R20 21R20 22R20 23R20 24R20 25R20 +X 12 a-strunb.ads +91K21*Unbounded 1641e26 20|4w18 16r37 18r37 21|12r37 16r37 32r34 40r34 74r28 +. 76r30 81r30 92r28 +105R9*Unbounded_String<5|43R9> 1620e15 20|16r47 18r47 +122V13*To_Unbounded_String{105R9} 21|32s44 40s44 +135V13*To_String{string} 21|12s47 16s47 76s40 81s40 +276V14*"="{boolean} 21|74s39 +283V14*"="{boolean} 21|74r39 92s39 +X 20 lambda.ads +6K9*Lambda 38l5 38e11 21|3b14 108l5 108t11 +8E9*Term_Kind 8e58 13r22 +8n23*Variable{8E9} 15r15 21|11r15 31r28 91r15 105r15 +8n33*Abstraction{8E9} 17r15 21|14r15 38r28 73r15 104r15 +8n46*Application{8E9} 20r15 21|20r15 48r28 86r15 103r15 +10R9*Term 11r43 13c9 13d15 24e15 28r12 31r41 32r51 32r64 33r26 33r43 33r56 +. 34r42 36r31 36r57 36r70 37r23 37r36 21|7r12 29r41 31r14 35r51 35r64 37r14 +. 41r37 45r26 45r43 45r56 47r14 49r32 50r36 54r42 69r31 69r57 70r13 87r20 +. 100r23 100r36 103r37 104r37 105r37 +11P9*Expression(10R9) 19r25 21r25 22r25 +13R9*Term +13e15*Kind{8E9} 14r12 21|10r14 31m20 38m20 48m20 72r14 102r14 +16r13*Name{12|105R9} 21|12r60 31m38 76r55 92r50 +18r13*Parameter{12|105R9} 21|16r60 39m20 74r44 81r53 +19p13*Func_Body{11P9} 21|18r27 41m20 77r34 82r34 +21p13*Func{11P9} 21|22r27 49m20 88r31 +22p13*Argument{11P9} 21|24r27 50m20 89r31 +26U14*My_Put_Image 24r33 27=7 28>7 21|5b14 27l8 27t20 +27c7 Output<10|26R9> 21|6b7 12m13 12r13 15m13 15r13 16m13 16r13 17m13 17r13 +. 18m13 18r13 21m13 21r13 22m13 22r13 23m13 23r13 24m13 24r13 25m13 25r13 +28r7 T{13R9} 21|7b7 10r12 12r58 16r58 18r25 22r25 24r25 +31V13*Vari{13R9} 31>19 21|29b13 33l8 33t12 56s14 +31a19 Name{string} 21|29b19 32r65 +32V13*Abst{13R9} 32>19 32>39 21|35b13 43l8 43t12 75s23 80s23 +32a19 Parameter{string} 21|35b19 40r65 +32r39 Func_Body{13R9} 21|35b39 41r43 +33V13*Appl{13R9} 33>19 33>32 21|45b13 52l8 52t12 87s26 +33r19 Func{13R9} 21|45b19 49r38 +33r32 Argument{13R9} 21|45b32 50r42 +34V13*From{13R9} 34>19 21|54b13 67l8 67t12 +34a19 Input{string} 21|54b19 56r32 +36V13*Substitution{13R9} 36>27 36>37 36>51 21|69b13 77s18 82s18 88s15 89s15 +. 98l8 98t20 +36r27 T{13R9} 21|69b27 72r12 74r42 77r32 81r51 82r32 88r29 89r29 92r48 95r23 +36a37 Var{string} 21|69b37 74r55 77r49 82r49 88r41 89r45 92r43 +36r51 Rep{13R9} 21|69b51 76r51 77r54 82r54 88r46 89r50 93r23 +37V13*beta{13R9} 37>19 21|100b13 107l8 107t12 +37r19 T{13R9} 21|100b19 102r12 103r43 104r43 105r43 +X 22 system.ads +67M9*Address +X 30 s-memory.ads +51V13*Alloc{22|67M9} 101i22 +66U14*Free 102i22 +74V13*Realloc{22|67M9} 103i22 +X 41 s-stalib.adb +87U14 Break_Start 88i22 + diff --git a/lib/lambda_config.ali b/lib/lambda_config.ali new file mode 100644 index 0000000..0e0a590 --- /dev/null +++ b/lib/lambda_config.ali @@ -0,0 +1,34 @@ +V "GNAT Lib v15" +A -O3 +A -gnatA +A -gnatn +A -ffunction-sections +A -fdata-sections +A -gnatW8 +A -mtune=generic +A -march=x86-64 +P ZX + +RN +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE + +U lambda_config%s lambda_config.ads 7b2b96c1 NE OO PU PK + +D lambda_config.ads 20260125192504 7b2b96c1 lambda_config%s +D system.ads 20251110095651 14286b0f system%s +G a e +X 1 lambda_config.ads +5K9*Lambda_Config 20l5 20e18 +8a4*Crate_Version{string} +9a4*Crate_Name{string} +11a4*Alire_Host_OS{string} +13a4*Alire_Host_Arch{string} +15a4*Alire_Host_Distro{string} +17E9*Build_Profile_Kind 17e65 18r29 +17n32*release{17E9} 18r51 +17n41*validation{17E9} +17n53*development{17E9} +18e4*Build_Profile{17E9} + diff --git a/lib/libLambda.a b/lib/libLambda.a new file mode 100644 index 0000000..fc3d093 Binary files /dev/null and b/lib/libLambda.a differ diff --git a/obj/development/Lambda.lexch b/obj/development/Lambda.lexch new file mode 100644 index 0000000..a67cd3a --- /dev/null +++ b/obj/development/Lambda.lexch @@ -0,0 +1,7 @@ +[LIBRARY PATH] +/home/ada/Documents/Projects/lambda/lib/libLambda.a +[OBJECT FILES] +/home/ada/Documents/Projects/lambda/obj/development/lambda.o +20260125192449 +/home/ada/Documents/Projects/lambda/obj/development/lambda_config.o +20260125192448 diff --git a/obj/development/lambda.adb.stderr b/obj/development/lambda.adb.stderr new file mode 100644 index 0000000..473a0f4 diff --git a/obj/development/lambda.adb.stdout b/obj/development/lambda.adb.stdout new file mode 100644 index 0000000..473a0f4 diff --git a/obj/development/lambda.ali b/obj/development/lambda.ali new file mode 100644 index 0000000..7af7c20 --- /dev/null +++ b/obj/development/lambda.ali @@ -0,0 +1,200 @@ +V "GNAT Lib v15" +A -Og +A -gnatA +A -ffunction-sections +A -fdata-sections +A -g +A -gnatwa +A -gnatw.X +A -gnatVa +A -gnaty3 +A -gnatya +A -gnatyA +A -gnatyB +A -gnatyb +A -gnatyc +A -gnaty- +A -gnatyd +A -gnatye +A -gnatyf +A -gnatyh +A -gnatyi +A -gnatyI +A -gnatyk +A -gnatyl +A -gnatym +A -gnatyn +A -gnatyO +A -gnatyp +A -gnatyr +A -gnatyS +A -gnatyt +A -gnatyu +A -gnatyx +A -gnatW8 +A -mtune=generic +A -march=x86-64 +P SS ZX + +RN +RV NO_ALLOCATORS +RV NO_DISPATCH +RV NO_DISPATCHING_CALLS +RV NO_EXCEPTION_HANDLERS +RV NO_EXCEPTION_PROPAGATION +RV NO_EXCEPTIONS +RV NO_IMPLICIT_CONDITIONALS +RV NO_LOCAL_ALLOCATORS +RV NO_NESTED_FINALIZATION +RV NO_RECURSION +RV NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_ELABORATION_CODE + +U lambda%b lambda.adb 74b5f7ac NE OO PK +Z ada.exceptions%s a-except.adb a-except.ali +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +Z ada.strings.text_buffers.unbounded%s a-stbuun.adb a-stbuun.ali +Z ada.tags%s a-tags.adb a-tags.ali +Z system%s system.ads system.ali +Z system.finalization_primitives%s s-finpri.adb s-finpri.ali +Z system.secondary_stack%s s-secsta.adb s-secsta.ali +Z system.soft_links%s s-soflin.adb s-soflin.ali +Z system.standard_library%s s-stalib.adb s-stalib.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +Z system.storage_pools%s s-stopoo.adb s-stopoo.ali +Z system.storage_pools.subpools%s s-stposu.adb s-stposu.ali + +U lambda%s lambda.ads d9d36d72 EE OO PF PK +W ada%s ada.ads ada.ali +Z ada.exceptions%s a-except.adb a-except.ali +W ada.strings%s a-string.ads a-string.ali +W ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +W ada.strings.unbounded%s a-strunb.adb a-strunb.ali +Z system%s system.ads system.ali +Z system.finalization_primitives%s s-finpri.adb s-finpri.ali +Z system.pool_global%s s-pooglo.adb s-pooglo.ali +Z system.soft_links%s s-soflin.adb s-soflin.ali + +D ada.ads 20251110095651 76789da1 ada%s +D a-charac.ads 20251110095651 2d3ec45b ada.characters%s +D a-chlat1.ads 20251110095651 e0d72e76 ada.characters.latin_1%s +D a-except.ads 20251110095651 e7970cd9 ada.exceptions%s +D a-finali.ads 20251110095651 bf4f806b ada.finalization%s +D a-stream.ads 20251110095651 17477cbd ada.streams%s +D a-string.ads 20251110095651 90ac6797 ada.strings%s +D a-strmap.ads 20251110095651 1f91ebb6 ada.strings.maps%s +D a-strsea.ads 20251110095651 18c3c634 ada.strings.search%s +D a-sttebu.ads 20251110095651 f1ad67a2 ada.strings.text_buffers%s +D a-stbuun.ads 20251110095651 7ace507d ada.strings.text_buffers.unbounded%s +D a-strunb.ads 20251110095651 b10770ab ada.strings.unbounded%s +D a-stuten.ads 20251110095651 c6ced0ae ada.strings.utf_encoding%s +D a-tags.ads 20251110095651 fbca0ad5 ada.tags%s +D a-unccon.ads 20251110095651 0e9b276f ada.unchecked_conversion%s +D interfac.ads 20251110095651 9111f9c1 interfaces%s +D i-c.ads 20251110095651 e94c966a interfaces.c%s +D lambda.ads 20251129204021 99797a7b lambda%s +D lambda.adb 20251130134111 edcc8dd7 lambda%b +D system.ads 20251110095651 14286b0f system%s +D s-atocou.ads 20251110095651 dc18efc3 system.atomic_counters%s +D s-exctab.ads 20251110095651 91bef6ef system.exception_table%s +D s-finpri.ads 20251110095651 5970d55a system.finalization_primitives%s +D s-finroo.ads 20251110095651 0a7c3ed4 system.finalization_root%s +D s-memory.ads 20251110095651 18949c1a system.memory%s +D s-oscons.ads 20251110095651 068e1a91 system.os_constants%s +D s-oslock.ads 20251110095651 13fa6b78 system.os_locks%s +D s-parame.ads 20251110095651 3597fc11 system.parameters%s +D s-pooglo.ads 20251110095651 91708d21 system.pool_global%s +D s-putima.ads 20251110095651 17291fe4 system.put_images%s +D s-retsta.ads 20251110095651 0f6b06cb system.return_stack%s +D s-secsta.ads 20251110095651 578279f5 system.secondary_stack%s +D s-soflin.ads 20251110095651 5d88fdea system.soft_links%s +D s-stache.ads 20251110095651 0b81c1fe system.stack_checking%s +D s-stalib.ads 20251110095651 1c9580f6 system.standard_library%s +D s-stalib.adb 20251110095651 eb464a47 system.standard_library%b +D s-stoele.ads 20251110095651 ccded4e8 system.storage_elements%s +D s-stopoo.ads 20251110095651 e9fa2dd8 system.storage_pools%s +D s-stposu.ads 20251110095651 e0b9fefd system.storage_pools.subpools%s +D s-stratt.ads 20251110095651 516607ae system.stream_attributes%s +D s-traent.ads 20251110095651 c81cbf8c system.traceback_entries%s +D s-unstyp.ads 20251110095651 fa2a7f59 system.unsigned_types%s +G a e +G c Z s b [my_put_image lambda 26 14 none] +G c Z s b [vari lambda 31 13 none] +G c Z s b [abst lambda 32 13 none] +G c Z s b [appl lambda 33 13 none] +G c Z s b [from lambda 34 13 none] +G c Z s b [substitution lambda 36 13 none] +G c Z s b [beta lambda 37 13 none] +G c Z s s [termDI lambda 13 9 none] +G c Z s s [termDA lambda 13 9 none] +G c Z s s [termDF lambda 13 9 none] +G c Z s s [termIP lambda 13 9 none] +X 1 ada.ads +18K9*Ada 22e8 18|3r6 4r6 16r25 18r25 27r23 19|6r23 12r25 16r25 32r22 40r22 +. 74r16 76r18 81r18 92r16 +X 7 a-string.ads +16K13*Strings 35e16 18|3r10 4r10 16r29 18r29 27r27 19|6r27 12r29 16r29 32r26 +. 40r26 74r20 76r22 81r22 92r20 +X 10 a-sttebu.ads +17K21*Text_Buffers 152e29 18|3w18 27r35 19|6r35 +26H9*Root_Buffer_Type 104e14 18|27r48 19|6r48 +29x14*Put 19|12R20 15R20 16R20 17R20 18R20 21R20 22R20 23R20 24R20 25R20 +X 12 a-strunb.ads +91K21*Unbounded 1641e26 18|4w18 16r37 18r37 19|12r37 16r37 32r34 40r34 74r28 +. 76r30 81r30 92r28 +105R9*Unbounded_String<5|43R9> 1620e15 18|16r47 18r47 +122V13*To_Unbounded_String{105R9} 19|32s44 40s44 +135V13*To_String{string} 19|12s47 16s47 76s40 81s40 +276V14*"="{boolean} 19|74s39 +283V14*"="{boolean} 19|74r39 92s39 +X 18 lambda.ads +6K9*Lambda 38l5 38e11 19|3b14 108l5 108t11 +8E9*Term_Kind 8e58 13r22 +8n23*Variable{8E9} 15r15 19|11r15 31r28 91r15 105r15 +8n33*Abstraction{8E9} 17r15 19|14r15 38r28 73r15 104r15 +8n46*Application{8E9} 20r15 19|20r15 48r28 86r15 103r15 +10R9*Term 11r43 13c9 13d15 24e15 28r12 31r41 32r51 32r64 33r26 33r43 33r56 +. 34r42 36r31 36r57 36r70 37r23 37r36 19|7r12 29r41 31r14 35r51 35r64 37r14 +. 41r37 45r26 45r43 45r56 47r14 49r32 50r36 54r42 69r31 69r57 70r13 87r20 +. 100r23 100r36 103r37 104r37 105r37 +11P9*Expression(10R9) 19r25 21r25 22r25 +13R9*Term +13e15*Kind{8E9} 14r12 19|10r14 31m20 38m20 48m20 72r14 102r14 +16r13*Name{12|105R9} 19|12r60 31m38 76r55 92r50 +18r13*Parameter{12|105R9} 19|16r60 39m20 74r44 81r53 +19p13*Func_Body{11P9} 19|18r27 41m20 77r34 82r34 +21p13*Func{11P9} 19|22r27 49m20 88r31 +22p13*Argument{11P9} 19|24r27 50m20 89r31 +26U14*My_Put_Image 24r33 27=7 28>7 19|5b14 27l8 27t20 +27c7 Output<10|26R9> 19|6b7 12m13 12r13 15m13 15r13 16m13 16r13 17m13 17r13 +. 18m13 18r13 21m13 21r13 22m13 22r13 23m13 23r13 24m13 24r13 25m13 25r13 +28r7 T{13R9} 19|7b7 10r12 12r58 16r58 18r25 22r25 24r25 +31V13*Vari{13R9} 31>19 19|29b13 33l8 33t12 56s14 +31a19 Name{string} 19|29b19 32r65 +32V13*Abst{13R9} 32>19 32>39 19|35b13 43l8 43t12 75s23 80s23 +32a19 Parameter{string} 19|35b19 40r65 +32r39 Func_Body{13R9} 19|35b39 41r43 +33V13*Appl{13R9} 33>19 33>32 19|45b13 52l8 52t12 87s26 +33r19 Func{13R9} 19|45b19 49r38 +33r32 Argument{13R9} 19|45b32 50r42 +34V13*From{13R9} 34>19 19|54b13 67l8 67t12 +34a19 Input{string} 19|54b19 56r32 +36V13*Substitution{13R9} 36>27 36>37 36>51 19|69b13 77s18 82s18 88s15 89s15 +. 98l8 98t20 +36r27 T{13R9} 19|69b27 72r12 74r42 77r32 81r51 82r32 88r29 89r29 92r48 95r23 +36a37 Var{string} 19|69b37 74r55 77r49 82r49 88r41 89r45 92r43 +36r51 Rep{13R9} 19|69b51 76r51 77r54 82r54 88r46 89r50 93r23 +37V13*beta{13R9} 37>19 19|100b13 107l8 107t12 +37r19 T{13R9} 19|100b19 102r12 103r43 104r43 105r43 +X 20 system.ads +67M9*Address +X 25 s-memory.ads +51V13*Alloc{20|67M9} 101i22 +66U14*Free 102i22 +74V13*Realloc{20|67M9} 103i22 +X 36 s-stalib.adb +87U14 Break_Start 88i22 + diff --git a/obj/development/lambda.cswi b/obj/development/lambda.cswi new file mode 100644 index 0000000..9f8e985 --- /dev/null +++ b/obj/development/lambda.cswi @@ -0,0 +1,36 @@ +20260125192449 +-c +-x +ada +-gnatA +-Og +-ffunction-sections +-fdata-sections +-g +-gnatwa +-gnatw.X +-gnatVa +-gnaty3 +-gnatya +-gnatyA +-gnatyB +-gnatyb +-gnatyc +-gnaty-d +-gnatye +-gnatyf +-gnatyh +-gnatyi +-gnatyI +-gnatyk +-gnatyl +-gnatym +-gnatyn +-gnatyO +-gnatyp +-gnatyr +-gnatyS +-gnatyt +-gnatyu +-gnatyx +-gnatW8 diff --git a/obj/development/lambda.o b/obj/development/lambda.o new file mode 100644 index 0000000..f96ed02 Binary files /dev/null and b/obj/development/lambda.o differ diff --git a/obj/development/lambda_config.ads.stderr b/obj/development/lambda_config.ads.stderr new file mode 100644 index 0000000..473a0f4 diff --git a/obj/development/lambda_config.ads.stdout b/obj/development/lambda_config.ads.stdout new file mode 100644 index 0000000..473a0f4 diff --git a/obj/development/lambda_config.ali b/obj/development/lambda_config.ali new file mode 100644 index 0000000..71b9a3c --- /dev/null +++ b/obj/development/lambda_config.ali @@ -0,0 +1,61 @@ +V "GNAT Lib v15" +A -Og +A -gnatA +A -ffunction-sections +A -fdata-sections +A -g +A -gnatwa +A -gnatw.X +A -gnatVa +A -gnaty3 +A -gnatya +A -gnatyA +A -gnatyB +A -gnatyb +A -gnatyc +A -gnaty- +A -gnatyd +A -gnatye +A -gnatyf +A -gnatyh +A -gnatyi +A -gnatyI +A -gnatyk +A -gnatyl +A -gnatym +A -gnatyn +A -gnatyO +A -gnatyp +A -gnatyr +A -gnatyS +A -gnatyt +A -gnatyu +A -gnatyx +A -gnatW8 +A -mtune=generic +A -march=x86-64 +P ZX + +RN +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE + +U lambda_config%s lambda_config.ads 10f45494 NE OO PU PK + +D lambda_config.ads 20251130121519 10f45494 lambda_config%s +D system.ads 20251110095651 14286b0f system%s +G a e +X 1 lambda_config.ads +5K9*Lambda_Config 20l5 20e18 +8a4*Crate_Version{string} +9a4*Crate_Name{string} +11a4*Alire_Host_OS{string} +13a4*Alire_Host_Arch{string} +15a4*Alire_Host_Distro{string} +17E9*Build_Profile_Kind 17e65 18r29 +17n32*release{17E9} +17n41*validation{17E9} +17n53*development{17E9} 18r51 +18e4*Build_Profile{17E9} + diff --git a/obj/development/lambda_config.cswi b/obj/development/lambda_config.cswi new file mode 100644 index 0000000..1e2605d --- /dev/null +++ b/obj/development/lambda_config.cswi @@ -0,0 +1,36 @@ +20260125192448 +-c +-x +ada +-gnatA +-Og +-ffunction-sections +-fdata-sections +-g +-gnatwa +-gnatw.X +-gnatVa +-gnaty3 +-gnatya +-gnatyA +-gnatyB +-gnatyb +-gnatyc +-gnaty-d +-gnatye +-gnatyf +-gnatyh +-gnatyi +-gnatyI +-gnatyk +-gnatyl +-gnatym +-gnatyn +-gnatyO +-gnatyp +-gnatyr +-gnatyS +-gnatyt +-gnatyu +-gnatyx +-gnatW8 diff --git a/obj/development/lambda_config.o b/obj/development/lambda_config.o new file mode 100644 index 0000000..d8bdccd Binary files /dev/null and b/obj/development/lambda_config.o differ diff --git a/obj/release/Lambda.lexch b/obj/release/Lambda.lexch new file mode 100644 index 0000000..b773c5c --- /dev/null +++ b/obj/release/Lambda.lexch @@ -0,0 +1,7 @@ +[LIBRARY PATH] +/home/ada/Documents/Projects/lambda/lib/libLambda.a +[OBJECT FILES] +/home/ada/Documents/Projects/lambda/obj/release/lambda.o +20260125192506 +/home/ada/Documents/Projects/lambda/obj/release/lambda_config.o +20260125192505 diff --git a/obj/release/gnatdoc/html/554e79e652b29f3a01dcf98e494b9928a1dc12cc83b83e730574c9b37ca6359f.html b/obj/release/gnatdoc/html/554e79e652b29f3a01dcf98e494b9928a1dc12cc83b83e730574c9b37ca6359f.html new file mode 100644 index 0000000..0a97696 --- /dev/null +++ b/obj/release/gnatdoc/html/554e79e652b29f3a01dcf98e494b9928a1dc12cc83b83e730574c9b37ca6359f.html @@ -0,0 +1,26 @@ + + +

Lambda

Entities

Simple Types

Record Types

Access Types

Subprograms

Description

Abst

function Abst (Parameter : String; Func_Body : Term) return Term
+
Parameters
Parameter
Func_Body
Return Value

Appl

function Appl (Func : Term; Argument : Term) return Term
+
Parameters
Func
Argument
Return Value

beta

function beta (T : Term) return Term
+
Parameters
T
Return Value

Expression

type Expression is not null access all Term;
+

From

function From (Input : String) return Term
+
Parameters
Input
Return Value

My_Put_Image

procedure My_Put_Image
+  (Output : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
+   T  : Term)
+
Parameters
Output
T

Substitution

function Substitution (T : Term; Var : String; Rep : Term) return Term
+
Parameters
T
Var
Rep
Return Value

Term

type Term (Kind : Term_Kind) is record
+   case Kind is
+      when Variable =>
+         Name      : Ada.Strings.Unbounded.Unbounded_String;
+      when Abstraction =>
+         Parameter : Ada.Strings.Unbounded.Unbounded_String;
+         Func_Body : Expression;
+      when Application =>
+         Func      : Expression;
+         Argument  : Expression;
+   end case;
+end record;
+
Record fields
Kind
Name
Parameter
Func_Body
Func
Argument

Term_Kind

type Term_Kind is (Variable, Abstraction, Application);
+
Enumeration Literal
Variable
Abstraction
Application

Vari

function Vari (Name : String) return Term
+
Parameters
Name
Return Value
\ No newline at end of file diff --git a/obj/release/gnatdoc/html/e06d2725f79a5427d4ff13dc2a6db8e3b6a4750e10e43e34b14d2cb7df981ba2.html b/obj/release/gnatdoc/html/e06d2725f79a5427d4ff13dc2a6db8e3b6a4750e10e43e34b14d2cb7df981ba2.html new file mode 100644 index 0000000..868880f --- /dev/null +++ b/obj/release/gnatdoc/html/e06d2725f79a5427d4ff13dc2a6db8e3b6a4750e10e43e34b14d2cb7df981ba2.html @@ -0,0 +1,10 @@ + + +

Lambda_Config

Entities

Simple Types

Constants

Description

Alire_Host_Arch

Alire_Host_Arch : constant String := "x86_64";
+

Alire_Host_Distro

Alire_Host_Distro : constant String := "fedora";
+

Alire_Host_OS

Alire_Host_OS : constant String := "linux";
+

Build_Profile

Build_Profile : constant Build_Profile_Kind := release;
+

Build_Profile_Kind

type Build_Profile_Kind is (release, validation, development);
+
Enumeration Literal
release
validation
development

Crate_Name

Crate_Name : constant String := "lambda";
+

Crate_Version

Crate_Version : constant String := "0.1.0-dev";
+
\ No newline at end of file diff --git a/obj/release/gnatdoc/html/gnatdoc.css b/obj/release/gnatdoc/html/gnatdoc.css new file mode 100644 index 0000000..3b56f9d --- /dev/null +++ b/obj/release/gnatdoc/html/gnatdoc.css @@ -0,0 +1,107 @@ + +html +{ + font-family: sans-serif; + font-size: 14px; + line-height: 1.15; +} + +body +{ + margin: 0; +} + +html.main +{ + height: 100%; +} + +body.main +{ + display: flex; + height: 100%; + overflow: hidden; +} + +.side-navigation +{ + border-right: 1px solid #bfbfbf; + padding: .5rem 1rem; + background-color: #f5f5f5; + display: flex; +} + +.side-navigation > .tab-bar +{ + display: flex; + writing-mode: vertical-lr; + margin: 1.5em .5em 0 0; +} + +.side-navigation > .tab-bar > .tab +{ + rotate: 180deg; + padding: .5em; + margin: .25em 0 .25em 0; +} + +.side-navigation > .content-column +{ + overflow: scroll; +} + +.side-navigation > ul +{ + padding: 0; + list-style-type: none; +} + +.side-navigation > ul > li +{ + display: block; +} + +.side-navigation > ul > li > a +{ + text-decoration-line: none; +} + +.document-content +{ + flex: auto; +} + +iframe +{ + width: 100%; + height: 100%; + border: 0; +} + +h4 +{ + padding: .25em; +} + +h4:target +{ + transition-duration: .5s; + transition-property: background; + background: #E8E8E8; +} + +.content +{ + max-width: 1024px; + margin: 0 auto; +} + +.ada-code-snippet +{ + border: 1px solid #D5D5D5; + border-radius: .3rem; + background-color: #FCFCFC; + margin: .5rem 1rem 1rem; + padding: .25rem .4rem; + overflow: auto; +} diff --git a/obj/release/gnatdoc/html/index.html b/obj/release/gnatdoc/html/index.html new file mode 100644 index 0000000..5a71753 --- /dev/null +++ b/obj/release/gnatdoc/html/index.html @@ -0,0 +1,3 @@ + + +
\ No newline at end of file diff --git a/obj/release/lambda.adb.stderr b/obj/release/lambda.adb.stderr new file mode 100644 index 0000000..473a0f4 diff --git a/obj/release/lambda.adb.stdout b/obj/release/lambda.adb.stdout new file mode 100644 index 0000000..473a0f4 diff --git a/obj/release/lambda.ali b/obj/release/lambda.ali new file mode 100644 index 0000000..527a595 --- /dev/null +++ b/obj/release/lambda.ali @@ -0,0 +1,178 @@ +V "GNAT Lib v15" +A -O3 +A -gnatA +A -gnatn +A -ffunction-sections +A -fdata-sections +A -gnatW8 +A -mtune=generic +A -march=x86-64 +P SS ZX + +RN +RV NO_ALLOCATORS +RV NO_DISPATCH +RV NO_DISPATCHING_CALLS +RV NO_EXCEPTION_HANDLERS +RV NO_EXCEPTION_PROPAGATION +RV NO_EXCEPTIONS +RV NO_IMPLICIT_CONDITIONALS +RV NO_LOCAL_ALLOCATORS +RV NO_NESTED_FINALIZATION +RV NO_RECURSION +RV NO_SECONDARY_STACK +RV NO_STANDARD_STORAGE_POOLS +RV NO_DYNAMIC_SIZED_OBJECTS +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_ELABORATION_CODE + +U lambda%b lambda.adb 74b5f7ac NE OO PK +Z ada.exceptions%s a-except.adb a-except.ali +Z ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +Z ada.strings.text_buffers.unbounded%s a-stbuun.adb a-stbuun.ali +Z ada.tags%s a-tags.adb a-tags.ali +Z system%s system.ads system.ali +Z system.finalization_primitives%s s-finpri.adb s-finpri.ali +Z system.secondary_stack%s s-secsta.adb s-secsta.ali +Z system.soft_links%s s-soflin.adb s-soflin.ali +Z system.standard_library%s s-stalib.adb s-stalib.ali +Z system.storage_elements%s s-stoele.ads s-stoele.ali +Z system.storage_pools%s s-stopoo.adb s-stopoo.ali +Z system.storage_pools.subpools%s s-stposu.adb s-stposu.ali + +U lambda%s lambda.ads d9d36d72 EE OO PF PK +W ada%s ada.ads ada.ali +Z ada.exceptions%s a-except.adb a-except.ali +W ada.strings%s a-string.ads a-string.ali +W ada.strings.text_buffers%s a-sttebu.adb a-sttebu.ali +W ada.strings.unbounded%s a-strunb.adb a-strunb.ali +Z system%s system.ads system.ali +Z system.finalization_primitives%s s-finpri.adb s-finpri.ali +Z system.pool_global%s s-pooglo.adb s-pooglo.ali +Z system.soft_links%s s-soflin.adb s-soflin.ali + +D ada.ads 20251110095651 76789da1 ada%s +D a-charac.ads 20251110095651 2d3ec45b ada.characters%s +D a-chlat1.ads 20251110095651 e0d72e76 ada.characters.latin_1%s +D a-except.ads 20251110095651 e7970cd9 ada.exceptions%s +D a-finali.ads 20251110095651 bf4f806b ada.finalization%s +D a-stream.ads 20251110095651 17477cbd ada.streams%s +D a-string.ads 20251110095651 90ac6797 ada.strings%s +D a-strmap.ads 20251110095651 1f91ebb6 ada.strings.maps%s +D a-strsea.ads 20251110095651 18c3c634 ada.strings.search%s +D a-sttebu.ads 20251110095651 f1ad67a2 ada.strings.text_buffers%s +D a-stbuun.ads 20251110095651 7ace507d ada.strings.text_buffers.unbounded%s +D a-strunb.ads 20251110095651 b10770ab ada.strings.unbounded%s +D a-strunb.adb 20251110095651 30f67b52 ada.strings.unbounded%b +D a-stuten.ads 20251110095651 c6ced0ae ada.strings.utf_encoding%s +D a-tags.ads 20251110095651 fbca0ad5 ada.tags%s +D a-unccon.ads 20251110095651 0e9b276f ada.unchecked_conversion%s +D a-uncdea.ads 20251110095651 c3a8ac65 ada.unchecked_deallocation%s +D interfac.ads 20251110095651 9111f9c1 interfaces%s +D i-c.ads 20251110095651 e94c966a interfaces.c%s +D lambda.ads 20251129204021 99797a7b lambda%s +D lambda.adb 20251130134111 edcc8dd7 lambda%b +D system.ads 20251110095651 14286b0f system%s +D s-atocou.ads 20251110095651 dc18efc3 system.atomic_counters%s +D s-atocou.adb 20251110095651 6fe685de system.atomic_counters%b +D s-atopri.ads 20251110095651 e19c1d89 system.atomic_primitives%s +D s-exctab.ads 20251110095651 91bef6ef system.exception_table%s +D s-finpri.ads 20251110095651 5970d55a system.finalization_primitives%s +D s-finpri.adb 20251110095651 02c85f69 system.finalization_primitives%b +D s-finroo.ads 20251110095651 0a7c3ed4 system.finalization_root%s +D s-memory.ads 20251110095651 18949c1a system.memory%s +D s-oscons.ads 20251110095651 068e1a91 system.os_constants%s +D s-oslock.ads 20251110095651 13fa6b78 system.os_locks%s +D s-parame.ads 20251110095651 3597fc11 system.parameters%s +D s-pooglo.ads 20251110095651 91708d21 system.pool_global%s +D s-putima.ads 20251110095651 17291fe4 system.put_images%s +D s-retsta.ads 20251110095651 0f6b06cb system.return_stack%s +D s-secsta.ads 20251110095651 578279f5 system.secondary_stack%s +D s-soflin.ads 20251110095651 5d88fdea system.soft_links%s +D s-stache.ads 20251110095651 0b81c1fe system.stack_checking%s +D s-stalib.ads 20251110095651 1c9580f6 system.standard_library%s +D s-stalib.adb 20251110095651 eb464a47 system.standard_library%b +D s-stoele.ads 20251110095651 ccded4e8 system.storage_elements%s +D s-stopoo.ads 20251110095651 e9fa2dd8 system.storage_pools%s +D s-stposu.ads 20251110095651 e0b9fefd system.storage_pools.subpools%s +D s-stratt.ads 20251110095651 516607ae system.stream_attributes%s +D s-traent.ads 20251110095651 c81cbf8c system.traceback_entries%s +D s-unstyp.ads 20251110095651 fa2a7f59 system.unsigned_types%s +G a e +G c Z s b [my_put_image lambda 26 14 none] +G c Z s b [vari lambda 31 13 none] +G c Z s b [abst lambda 32 13 none] +G c Z s b [appl lambda 33 13 none] +G c Z s b [from lambda 34 13 none] +G c Z s b [substitution lambda 36 13 none] +G c Z s b [beta lambda 37 13 none] +G c Z s s [termDI lambda 13 9 none] +G c Z s s [termDA lambda 13 9 none] +G c Z s s [termDF lambda 13 9 none] +G c Z s s [termIP lambda 13 9 none] +X 1 ada.ads +18K9*Ada 22e8 20|3r6 4r6 16r25 18r25 27r23 21|6r23 12r25 16r25 32r22 40r22 +. 74r16 76r18 81r18 92r16 +X 7 a-string.ads +16K13*Strings 35e16 20|3r10 4r10 16r29 18r29 27r27 21|6r27 12r29 16r29 32r26 +. 40r26 74r20 76r22 81r22 92r20 +X 10 a-sttebu.ads +17K21*Text_Buffers 152e29 20|3w18 27r35 21|6r35 +26H9*Root_Buffer_Type 104e14 20|27r48 21|6r48 +29x14*Put 21|12R20 15R20 16R20 17R20 18R20 21R20 22R20 23R20 24R20 25R20 +X 12 a-strunb.ads +91K21*Unbounded 1641e26 20|4w18 16r37 18r37 21|12r37 16r37 32r34 40r34 74r28 +. 76r30 81r30 92r28 +105R9*Unbounded_String<5|43R9> 1620e15 20|16r47 18r47 +122V13*To_Unbounded_String{105R9} 21|32s44 40s44 +135V13*To_String{string} 21|12s47 16s47 76s40 81s40 +276V14*"="{boolean} 21|74s39 +283V14*"="{boolean} 21|74r39 92s39 +X 20 lambda.ads +6K9*Lambda 38l5 38e11 21|3b14 108l5 108t11 +8E9*Term_Kind 8e58 13r22 +8n23*Variable{8E9} 15r15 21|11r15 31r28 91r15 105r15 +8n33*Abstraction{8E9} 17r15 21|14r15 38r28 73r15 104r15 +8n46*Application{8E9} 20r15 21|20r15 48r28 86r15 103r15 +10R9*Term 11r43 13c9 13d15 24e15 28r12 31r41 32r51 32r64 33r26 33r43 33r56 +. 34r42 36r31 36r57 36r70 37r23 37r36 21|7r12 29r41 31r14 35r51 35r64 37r14 +. 41r37 45r26 45r43 45r56 47r14 49r32 50r36 54r42 69r31 69r57 70r13 87r20 +. 100r23 100r36 103r37 104r37 105r37 +11P9*Expression(10R9) 19r25 21r25 22r25 +13R9*Term +13e15*Kind{8E9} 14r12 21|10r14 31m20 38m20 48m20 72r14 102r14 +16r13*Name{12|105R9} 21|12r60 31m38 76r55 92r50 +18r13*Parameter{12|105R9} 21|16r60 39m20 74r44 81r53 +19p13*Func_Body{11P9} 21|18r27 41m20 77r34 82r34 +21p13*Func{11P9} 21|22r27 49m20 88r31 +22p13*Argument{11P9} 21|24r27 50m20 89r31 +26U14*My_Put_Image 24r33 27=7 28>7 21|5b14 27l8 27t20 +27c7 Output<10|26R9> 21|6b7 12m13 12r13 15m13 15r13 16m13 16r13 17m13 17r13 +. 18m13 18r13 21m13 21r13 22m13 22r13 23m13 23r13 24m13 24r13 25m13 25r13 +28r7 T{13R9} 21|7b7 10r12 12r58 16r58 18r25 22r25 24r25 +31V13*Vari{13R9} 31>19 21|29b13 33l8 33t12 56s14 +31a19 Name{string} 21|29b19 32r65 +32V13*Abst{13R9} 32>19 32>39 21|35b13 43l8 43t12 75s23 80s23 +32a19 Parameter{string} 21|35b19 40r65 +32r39 Func_Body{13R9} 21|35b39 41r43 +33V13*Appl{13R9} 33>19 33>32 21|45b13 52l8 52t12 87s26 +33r19 Func{13R9} 21|45b19 49r38 +33r32 Argument{13R9} 21|45b32 50r42 +34V13*From{13R9} 34>19 21|54b13 67l8 67t12 +34a19 Input{string} 21|54b19 56r32 +36V13*Substitution{13R9} 36>27 36>37 36>51 21|69b13 77s18 82s18 88s15 89s15 +. 98l8 98t20 +36r27 T{13R9} 21|69b27 72r12 74r42 77r32 81r51 82r32 88r29 89r29 92r48 95r23 +36a37 Var{string} 21|69b37 74r55 77r49 82r49 88r41 89r45 92r43 +36r51 Rep{13R9} 21|69b51 76r51 77r54 82r54 88r46 89r50 93r23 +37V13*beta{13R9} 37>19 21|100b13 107l8 107t12 +37r19 T{13R9} 21|100b19 102r12 103r43 104r43 105r43 +X 22 system.ads +67M9*Address +X 30 s-memory.ads +51V13*Alloc{22|67M9} 101i22 +66U14*Free 102i22 +74V13*Realloc{22|67M9} 103i22 +X 41 s-stalib.adb +87U14 Break_Start 88i22 + diff --git a/obj/release/lambda.cswi b/obj/release/lambda.cswi new file mode 100644 index 0000000..8f4eab5 --- /dev/null +++ b/obj/release/lambda.cswi @@ -0,0 +1,10 @@ +20260125192506 +-c +-x +ada +-gnatA +-O3 +-gnatn +-ffunction-sections +-fdata-sections +-gnatW8 diff --git a/obj/release/lambda.o b/obj/release/lambda.o new file mode 100644 index 0000000..e0c19fb Binary files /dev/null and b/obj/release/lambda.o differ diff --git a/obj/release/lambda_config.ads.stderr b/obj/release/lambda_config.ads.stderr new file mode 100644 index 0000000..473a0f4 diff --git a/obj/release/lambda_config.ads.stdout b/obj/release/lambda_config.ads.stdout new file mode 100644 index 0000000..473a0f4 diff --git a/obj/release/lambda_config.ali b/obj/release/lambda_config.ali new file mode 100644 index 0000000..0e0a590 --- /dev/null +++ b/obj/release/lambda_config.ali @@ -0,0 +1,34 @@ +V "GNAT Lib v15" +A -O3 +A -gnatA +A -gnatn +A -ffunction-sections +A -fdata-sections +A -gnatW8 +A -mtune=generic +A -march=x86-64 +P ZX + +RN +RV NO_IMPLEMENTATION_PRAGMAS +RV NO_IMPLEMENTATION_RESTRICTIONS +RR NO_ELABORATION_CODE + +U lambda_config%s lambda_config.ads 7b2b96c1 NE OO PU PK + +D lambda_config.ads 20260125192504 7b2b96c1 lambda_config%s +D system.ads 20251110095651 14286b0f system%s +G a e +X 1 lambda_config.ads +5K9*Lambda_Config 20l5 20e18 +8a4*Crate_Version{string} +9a4*Crate_Name{string} +11a4*Alire_Host_OS{string} +13a4*Alire_Host_Arch{string} +15a4*Alire_Host_Distro{string} +17E9*Build_Profile_Kind 17e65 18r29 +17n32*release{17E9} 18r51 +17n41*validation{17E9} +17n53*development{17E9} +18e4*Build_Profile{17E9} + diff --git a/obj/release/lambda_config.cswi b/obj/release/lambda_config.cswi new file mode 100644 index 0000000..9b4ae8e --- /dev/null +++ b/obj/release/lambda_config.cswi @@ -0,0 +1,10 @@ +20260125192505 +-c +-x +ada +-gnatA +-O3 +-gnatn +-ffunction-sections +-fdata-sections +-gnatW8 diff --git a/obj/release/lambda_config.o b/obj/release/lambda_config.o new file mode 100644 index 0000000..b018bb5 Binary files /dev/null and b/obj/release/lambda_config.o differ diff --git a/src/lambda.adb b/src/lambda.adb new file mode 100644 index 0000000..be89915 --- /dev/null +++ b/src/lambda.adb @@ -0,0 +1,108 @@ +pragma Ada_2022; + +package body Lambda is + + procedure My_Put_Image + (Output : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class; + T : Term) + is + begin + case T.Kind is + when Variable => + Output.Put (Ada.Strings.Unbounded.To_String (T.Name)); + + when Abstraction => + Output.Put ("$"); + Output.Put (Ada.Strings.Unbounded.To_String (T.Parameter)); + Output.Put ("."); + Output.Put (T.Func_Body.all'Image); + + when Application => + Output.Put ("("); + Output.Put (T.Func.all'Image); + Output.Put (" "); + Output.Put (T.Argument.all'Image); + Output.Put (")"); + end case; + end My_Put_Image; + + function Vari (Name : String) return Term is + begin + return Term'(Kind => Variable, Name => + Ada.Strings.Unbounded.To_Unbounded_String (Name)); + end Vari; + + function Abst (Parameter : String; Func_Body : Term) return Term is + begin + return Term'( + Kind => Abstraction, + Parameter => + Ada.Strings.Unbounded.To_Unbounded_String (Parameter), + Func_Body => new Term'(Func_Body) + ); + end Abst; + + function Appl (Func : Term; Argument : Term) return Term is + begin + return Term'( + Kind => Application, + Func => new Term'(Func), + Argument => new Term'(Argument) + ); + end Appl; + + function From (Input : String) return Term is + begin + return Vari ("ERROR: " & Input); + -- If Input'First = "(" and Input'Last = ")" then + -- return Vari("ERROR"); + -- elsif Input'First = "$" then + -- return Abst( + -- Parameter => From (Input'First'Succ), + -- Func_Body => From (Input (Index (Input, ".") .. Index'Length)) + -- ); + -- else + -- return Vari("ERROR"); + -- end if; + end From; + + function Substitution (T : Term; Var : String; Rep : Term) + return Term is + begin + case T.Kind is + when Abstraction => + if Ada.Strings.Unbounded."="(T.Parameter, Var) then + return Abst ( + Ada.Strings.Unbounded.To_String (Rep.Name), + Substitution (T.Func_Body.all, Var, Rep) + ); + else + return Abst ( + Ada.Strings.Unbounded.To_String (T.Parameter), + Substitution (T.Func_Body.all, Var, Rep) + ); + end if; + + when Application => + return Term'(Appl ( + Substitution (T.Func.all, Var, Rep), + Substitution (T.Argument.all, Var, Rep))); + + when Variable => + if Ada.Strings.Unbounded."=" (Var, T.Name) then + return Rep; + else + return T; + end if; + end case; + end Substitution; + + function beta (T : Term) return Term is + begin + case T.Kind is + when Application => return Term'(T); + when Abstraction => return Term'(T); + when Variable => return Term'(T); + end case; + end beta; +end Lambda; diff --git a/src/lambda.ads b/src/lambda.ads new file mode 100644 index 0000000..f2ecba9 --- /dev/null +++ b/src/lambda.ads @@ -0,0 +1,38 @@ +pragma Ada_2022; + +with Ada.Strings.Text_Buffers; +with Ada.Strings.Unbounded; + +package Lambda is + + type Term_Kind is (Variable, Abstraction, Application); + + type Term; + type Expression is not null access all Term; + + type Term (Kind : Term_Kind) is record + case Kind is + when Variable => + Name : Ada.Strings.Unbounded.Unbounded_String; + when Abstraction => + Parameter : Ada.Strings.Unbounded.Unbounded_String; + Func_Body : Expression; + when Application => + Func : Expression; + Argument : Expression; + end case; + end record with Put_Image => My_Put_Image; + + procedure My_Put_Image + (Output : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class; + T : Term); + + -- helper funcitons + function Vari (Name : String) return Term; + function Abst (Parameter : String; Func_Body : Term) return Term; + function Appl (Func : Term; Argument : Term) return Term; + function From (Input : String) return Term; + + function Substitution (T : Term; Var : String; Rep : Term) return Term; + function beta (T : Term) return Term; +end Lambda;