diff options
Diffstat (limited to 'js/scripting-lang/tutorials/README.md')
-rw-r--r-- | js/scripting-lang/tutorials/README.md | 67 |
1 files changed, 42 insertions, 25 deletions
diff --git a/js/scripting-lang/tutorials/README.md b/js/scripting-lang/tutorials/README.md index dd6da1b..30c03dd 100644 --- a/js/scripting-lang/tutorials/README.md +++ b/js/scripting-lang/tutorials/README.md @@ -1,6 +1,6 @@ -# Scripting Language Tutorials +# Baba Yaga Tutorials -Welcome to the scripting language tutorials! These tutorials will guide you through learning this functional programming language step by step. +Welcome to the Baba Yaga tutorials! These tutorials will guide you through learning this functional programming language step by step. ## Getting Started @@ -11,25 +11,28 @@ Start with the **Introduction** tutorial to learn the basics, then follow the nu ### 🚀 **Beginner Level** 1. **[00_Introduction.md](00_Introduction.md)** - Basic concepts, functions, and pattern matching -2. **[01_Juxtaposition_Function_Application.md](01_Juxtaposition_Function_Application.md)** - Function calls without parentheses -3. **[02_Right_Associative_Via_Operator.md](02_Right_Associative_Via_Operator.md)** - Function composition with `via` -4. **[03_Automatic_Element_Wise_Table_Operations.md](03_Automatic_Element_Wise_Table_Operations.md)** - Working with tables -5. **[04_Partial_Application_by_Default.md](04_Partial_Application_by_Default.md)** - Partial function application -6. **[05_When_Expressions_Pattern_Matching.md](05_When_Expressions_Pattern_Matching.md)** - Pattern matching with `when` -7. **[06_Immutable_Tables_with_Functional_Operations.md](06_Immutable_Tables_with_Functional_Operations.md)** - Table operations -8. **[07_Function_References_with_At_Symbol.md](07_Function_References_with_At_Symbol.md)** - Function references with `@` +2. **[01_Function_Calls.md](01_Function_Calls.md)** - Function calls without parentheses (juxtaposition) +3. **[02_Function_Composition.md](02_Function_Composition.md)** - Function composition with `via`, `compose`, and `pipe` +4. **[03_Table_Operations.md](03_Table_Operations.md)** - Working with tables and element-wise operations +5. **[04_Currying.md](04_Currying.md)** - Partial function application by default +6. **[05_Pattern_Matching.md](05_Pattern_Matching.md)** - Pattern matching with `when` expressions +7. **[06_Immutable_Tables.md](06_Immutable_Tables.md)** - Immutable table operations and functional programming +8. **[07_Function_References.md](07_Function_References.md)** - Function references with `@` symbol ### 🔧 **Intermediate Level** -9. **[08_Combinator_Based_Architecture.md](08_Combinator_Based_Architecture.md)** - Understanding combinators -10. **[09_No_Explicit_Return_Statements.md](09_No_Explicit_Return_Statements.md)** - Expression-based programming -11. **[10_Table_Literals_as_Primary_Data_Structure.md](10_Table_Literals_as_Primary_Data_Structure.md)** - Advanced table usage -12. **[11_Combinators_Deep_Dive.md](11_Combinators_Deep_Dive.md)** - Advanced combinator patterns -13. **[12_Functional_Harness_Integration.md](12_Functional_Harness_Integration.md)** - Integration with external tools +9. **[08_Combinators.md](08_Combinators.md)** - Understanding the combinator-based architecture +10. **[09_Expression_Based.md](09_Expression_Based.md)** - Expression-based programming without explicit returns +11. **[10_Tables_Deep_Dive.md](10_Tables_Deep_Dive.md)** - Advanced table usage and data structures +12. **[11_Standard_Library.md](11_Standard_Library.md)** - Overview of available functions and combinators +13. **[12_IO_Operations.md](12_IO_Operations.md)** - Input/output operations and assertions +14. **[13_Error_Handling.md](13_Error_Handling.md)** - Error handling patterns and validation -### 🎯 **Best Practices** +### 🎯 **Advanced Level** -14. **[13_Operator_Spacing_Best_Practices.md](13_Operator_Spacing_Best_Practices.md)** - **Operator spacing and syntax guidelines** +15. **[14_Advanced_Combinators.md](14_Advanced_Combinators.md)** - Advanced combinator patterns and optimization +16. **[15_Integration_Patterns.md](15_Integration_Patterns.md)** - External system integration and APIs +17. **[16_Best_Practices.md](16_Best_Practices.md)** - Best practices and coding guidelines ## Key Concepts Covered @@ -37,9 +40,10 @@ Start with the **Introduction** tutorial to learn the basics, then follow the nu - **Pattern Matching**: `when` expressions for conditional logic - **Tables**: Immutable data structures with functional operations - **Combinators**: Higher-order functions for data transformation -- **Operator Spacing**: Proper syntax for unary and binary operators -- **Function Application**: Juxtaposition-based function calls -- **Composition**: Function composition with `via` operator +- **IO Operations**: Input/output, assertions, and event handling +- **Error Handling**: Functional error patterns and validation +- **Integration**: External system integration patterns +- **Best Practices**: Operator spacing, syntax guidelines, and code organization ## REPL Integration Documentation @@ -73,10 +77,14 @@ when value is /* Table literals */ {key1: value1, key2: value2}; -/* Operator spacing */ --5; /* Unary minus */ -5 - 3; /* Binary minus */ -5 + 3; /* Binary plus */ +/* Function references */ +map @function_name collection; + +/* IO operations */ +..out "Hello, World!"; +..assert "test" 5 = 5; +..emit "event" data; +..listen "event" handler; ``` ### Best Practices @@ -85,12 +93,15 @@ when value is - ✅ **Unary minus works without parentheses**: `-5`, `f -5` - ✅ **Use parentheses for explicit grouping**: `(-5)`, `(5 + 3) * 2` - ✅ **Follow functional conventions**: Immutable data, pure functions +- ✅ **Keep functions focused**: Single responsibility principle +- ✅ **Use descriptive names**: Clear intent and purpose +- ✅ **Handle errors explicitly**: Pattern matching over exceptions ## Running Examples To run examples from these tutorials: -1. Create a `.txt` file with the example code +1. Create a `.txt` or `.baba` file with the example code 2. Run: `node lang.js your_file.txt` Example: @@ -102,10 +113,16 @@ echo "result : 5 - 3;" > test.txt node lang.js test.txt ``` +## File Extensions + +Baba Yaga files should use either the `.txt` file extension, or the `.baba` extension. + ## Need Help? - Check the [main README](../README.md) for language overview -- Review [Operator Spacing Best Practices](13_Operator_Spacing_Best_Practices.md) for syntax guidelines +- Review [Best Practices](16_Best_Practices.md) for syntax guidelines - Run the test suite: `./run_tests.sh` to see working examples +- Explore [Advanced Combinators](14_Advanced_Combinators.md) for complex patterns +- Check [Integration Patterns](15_Integration_Patterns.md) for external system integration Happy learning! 🚀 \ No newline at end of file |