about summary refs log tree commit diff stats
path: root/js/scripting-lang/docs/baba-yaga/0.0.1/tutorial-11_Standard_Library.html
diff options
context:
space:
mode:
Diffstat (limited to 'js/scripting-lang/docs/baba-yaga/0.0.1/tutorial-11_Standard_Library.html')
-rw-r--r--js/scripting-lang/docs/baba-yaga/0.0.1/tutorial-11_Standard_Library.html164
1 files changed, 164 insertions, 0 deletions
diff --git a/js/scripting-lang/docs/baba-yaga/0.0.1/tutorial-11_Standard_Library.html b/js/scripting-lang/docs/baba-yaga/0.0.1/tutorial-11_Standard_Library.html
new file mode 100644
index 0000000..e56d300
--- /dev/null
+++ b/js/scripting-lang/docs/baba-yaga/0.0.1/tutorial-11_Standard_Library.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>11_Standard_Library - Documentation</title>
+
+    <script src="scripts/prettify/prettify.js"></script>
+    <script src="scripts/prettify/lang-css.js"></script>
+    <!--[if lt IE 9]>
+      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+    <link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
+    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
+    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
+</head>
+<body>
+
+<input type="checkbox" id="nav-trigger" class="nav-trigger" />
+<label for="nav-trigger" class="navicon-button x">
+  <div class="navicon"></div>
+</label>
+
+<label for="nav-trigger" class="overlay"></label>
+
+<nav>
+    <li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Tutorials</li><li class="nav-item"><a href="tutorial-00_Introduction.html">00_Introduction</a></li><li class="nav-item"><a href="tutorial-01_Function_Calls.html">01_Function_Calls</a></li><li class="nav-item"><a href="tutorial-02_Function_Composition.html">02_Function_Composition</a></li><li class="nav-item"><a href="tutorial-03_Table_Operations.html">03_Table_Operations</a></li><li class="nav-item"><a href="tutorial-04_Currying.html">04_Currying</a></li><li class="nav-item"><a href="tutorial-05_Pattern_Matching.html">05_Pattern_Matching</a></li><li class="nav-item"><a href="tutorial-06_Immutable_Tables.html">06_Immutable_Tables</a></li><li class="nav-item"><a href="tutorial-07_Function_References.html">07_Function_References</a></li><li class="nav-item"><a href="tutorial-08_Combinators.html">08_Combinators</a></li><li class="nav-item"><a href="tutorial-09_Expression_Based.html">09_Expression_Based</a></li><li class="nav-item"><a href="tutorial-10_Tables_Deep_Dive.html">10_Tables_Deep_Dive</a></li><li class="nav-item"><a href="tutorial-11_Standard_Library.html">11_Standard_Library</a></li><li class="nav-item"><a href="tutorial-12_IO_Operations.html">12_IO_Operations</a></li><li class="nav-item"><a href="tutorial-13_Error_Handling.html">13_Error_Handling</a></li><li class="nav-item"><a href="tutorial-14_Advanced_Combinators.html">14_Advanced_Combinators</a></li><li class="nav-item"><a href="tutorial-15_Integration_Patterns.html">15_Integration_Patterns</a></li><li class="nav-item"><a href="tutorial-16_Best_Practices.html">16_Best_Practices</a></li><li class="nav-item"><a href="tutorial-README.html">README</a></li><li class="nav-heading"><a href="global.html">Globals</a></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#callStackTracker">callStackTracker</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#debugError">debugError</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#debugLog">debugLog</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#executeFile">executeFile</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#initializeStandardLibrary">initializeStandardLibrary</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#interpreter">interpreter</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#lexer">lexer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#main">main</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#parser">parser</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#readFile">readFile</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="global.html#run">run</a></span></li>
+</nav>
+
+<div id="main">
+    
+    <h1 class="page-title">11_Standard_Library</h1>
+    
+
+    <section>
+
+<header>
+    
+</header>
+
+<article>
+    <h1>Standard Library Overview</h1>
+<h2>What is the Standard Library?</h2>
+<p>The Baba Yaga standard library provides a comprehensive set of functions for common operations. Everything is a function - even operators like <code>+</code> and <code>*</code> are just functions under the hood.</p>
+<h2>Core Categories</h2>
+<h3>Arithmetic Functions</h3>
+<pre class="prettyprint source lang-plaintext"><code>/* Basic arithmetic */
+add 5 3;           /* 8 */
+subtract 10 4;     /* 6 */
+multiply 6 7;      /* 42 */
+divide 20 5;       /* 4 */
+modulo 17 5;       /* 2 */
+power 2 8;         /* 256 */
+negate 42;         /* -42 */
+</code></pre>
+<h3>Comparison Functions</h3>
+<pre class="prettyprint source lang-plaintext"><code>/* Comparisons return booleans */
+equals 5 5;        /* true */
+notEquals 3 7;     /* true */
+lessThan 3 7;      /* true */
+greaterThan 10 5;  /* true */
+lessEqual 5 5;     /* true */
+greaterEqual 8 3;  /* true */
+</code></pre>
+<h3>Logical Functions</h3>
+<pre class="prettyprint source lang-plaintext"><code>/* Logical operations */
+logicalAnd true false;  /* false */
+logicalOr true false;   /* true */
+logicalXor true true;   /* false */
+logicalNot true;        /* false */
+</code></pre>
+<h3>Higher-Order Functions</h3>
+<pre class="prettyprint source lang-plaintext"><code>/* Function manipulation */
+compose @double @increment 5;  /* 12 */
+pipe @increment @double 5;     /* 12 */
+apply @add 3 4;                /* 7 */
+curry @add 3;                  /* function that adds 3 */
+</code></pre>
+<h3>Collection Functions</h3>
+<pre class="prettyprint source lang-plaintext"><code>/* Working with collections */
+map @double {1, 2, 3};         /* {2, 4, 6} */
+filter @is_even {1, 2, 3, 4};  /* {2, 4} */
+reduce @add 0 {1, 2, 3};       /* 6 */
+each @add {1, 2} {10, 20};     /* {11, 22} */
+</code></pre>
+<h3>Enhanced Combinators</h3>
+<pre class="prettyprint source lang-plaintext"><code>/* Utility functions */
+identity 42;                   /* 42 */
+constant 5 10;                 /* 5 */
+flip @subtract 5 10;           /* 5 (10 - 5) */
+on @length @add &quot;hello&quot; &quot;world&quot;; /* 10 */
+both @is_even @is_positive 6;  /* true */
+either @is_even @is_negative 6; /* true */
+</code></pre>
+<h2>Table Operations (<code>t.</code> namespace)</h2>
+<p>All table operations are immutable and return new tables:</p>
+<pre class="prettyprint source lang-plaintext"><code>/* Table-specific operations */
+data : {a: 1, b: 2, c: 3};
+doubled : t.map @double data;           /* {a: 2, b: 4, c: 6} */
+filtered : t.filter @is_even data;      /* {b: 2} */
+updated : t.set data &quot;d&quot; 4;             /* {a: 1, b: 2, c: 3, d: 4} */
+removed : t.delete data &quot;b&quot;;            /* {a: 1, c: 3} */
+merged : t.merge data {d: 4, e: 5};     /* {a: 1, b: 2, c: 3, d: 4, e: 5} */
+value : t.get data &quot;a&quot;;                 /* 1 */
+has_key : t.has data &quot;b&quot;;               /* true */
+count : t.length data;                  /* 3 */
+</code></pre>
+<h2>When to Use Which Function</h2>
+<ul>
+<li><strong>Use <code>map</code></strong> for transforming every element in a collection</li>
+<li><strong>Use <code>filter</code></strong> for selecting elements that match a condition</li>
+<li><strong>Use <code>reduce</code></strong> for combining all elements into a single value</li>
+<li><strong>Use <code>each</code></strong> for element-wise operations across multiple collections</li>
+<li><strong>Use <code>t.map</code>/<code>t.filter</code></strong> when you want to emphasize table operations</li>
+<li><strong>Use <code>compose</code></strong> for mathematical-style function composition (right-to-left)</li>
+<li><strong>Use <code>pipe</code></strong> for pipeline-style composition (left-to-right)</li>
+</ul>
+<h2>Common Patterns</h2>
+<pre class="prettyprint source lang-plaintext"><code>/* Data processing pipeline */
+data : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+is_even : x -> x % 2 = 0;
+double : x -> x * 2;
+sum : x -> reduce @add 0 x;
+
+/* Process: filter evens, double them, sum the result */
+result : sum map @double filter @is_even data;
+/* Result: 60 */
+
+/* Table transformation */
+users : {
+  alice: {name: &quot;Alice&quot;, age: 25},
+  bob: {name: &quot;Bob&quot;, age: 30}
+};
+get_age : x -> x.age;
+is_adult : x -> x >= 18;
+format_age : x -> x + &quot; years old&quot;;
+
+/* Get formatted ages of adult users */
+adult_ages : map @format_age filter @is_adult map @get_age users;
+/* Result: {alice: &quot;25 years old&quot;, bob: &quot;30 years old&quot;} */
+</code></pre>
+<h2>Next Steps</h2>
+<p>Now that you understand the standard library, explore:</p>
+<ul>
+<li><a href="14_Advanced_Combinators.md">Advanced Combinators</a> for complex patterns</li>
+<li><a href="12_IO_Operations.md">IO Operations</a> for input/output</li>
+<li><a href="13_Error_Handling.md">Error Handling</a> for robust programs</li>
+</ul>
+</article>
+
+</section>
+
+</div>
+
+<br class="clear">
+
+<footer>
+    Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Tue Jul 29 2025 23:15:00 GMT-0400 (Eastern Daylight Time) using the Minami theme.
+</footer>
+
+<script>prettyPrint();</script>
+<script src="scripts/linenumber.js"></script>
+</body>
+</html>
\ No newline at end of file