<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Meow Programming Language - Cat-themed Functional Language that Transpiles to Go on Meow Programming Language</title><link>https://meow.oreha.dev/</link><description>Recent content in Meow Programming Language - Cat-themed Functional Language that Transpiles to Go on Meow Programming Language</description><generator>Hugo</generator><language>en</language><atom:link href="https://meow.oreha.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Contributing to the Meow Programming Language</title><link>https://meow.oreha.dev/community/contributing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/community/contributing/</guid><description>&lt;p&gt;Thank you for your interest in contributing to the Meow Programming Language! This guide covers everything you need to know to get started.&lt;/p&gt;
&lt;h2 id="development-environment-setup"&gt;Development Environment Setup&lt;/h2&gt;
&lt;h3 id="prerequisites"&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Go 1.26+&lt;/strong&gt; — required (see &lt;code&gt;go.mod&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;stringer&lt;/strong&gt; — for code generation of token type names&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Install stringer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go install golang.org/x/tools/cmd/stringer@latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="clone-and-build"&gt;Clone and Build&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/135yshr/meow.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;cd&lt;/span&gt; meow
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go build ./cmd/meow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="run-tests"&gt;Run Tests&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go &lt;span style="color:#8be9fd;font-style:italic"&gt;test&lt;/span&gt; ./...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="build-and-run"&gt;Build and Run&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Build the compiler&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go build ./cmd/meow
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Run a .nyan program&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go run ./cmd/meow run examples/hello.nyan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Show transpiled Go code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go run ./cmd/meow transpile examples/hello.nyan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Run tests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go &lt;span style="color:#8be9fd;font-style:italic"&gt;test&lt;/span&gt; ./...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Run tests verbose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go &lt;span style="color:#8be9fd;font-style:italic"&gt;test&lt;/span&gt; ./... -v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Static analysis&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go vet ./...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Update golden files (required when changing compiler output)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go &lt;span style="color:#8be9fd;font-style:italic"&gt;test&lt;/span&gt; ./compiler/ -update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Regenerate stringer output (after changing token types)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go generate ./...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="project-structure"&gt;Project Structure&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flowchart LR
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subgraph meow[&amp;#34; meow/ &amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; direction TB
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subgraph cmd[&amp;#34;cmd/meow/ — CLI entry point&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cmd_main[&amp;#34;main.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subgraph compiler[&amp;#34;compiler/ — Pipeline orchestration + E2E tests&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; comp_go[&amp;#34;compiler.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; comp_test[&amp;#34;compiler_test.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subgraph pkg[&amp;#34;pkg/&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; token[&amp;#34;token/ — Token types, keywords, positions&amp;lt;br/&amp;gt;token.go, tokentype_string.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; lexer[&amp;#34;lexer/ — iter.Seq-based tokenizer&amp;lt;br/&amp;gt;lexer.go, lexer_test.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ast[&amp;#34;ast/ — AST node definitions&amp;lt;br/&amp;gt;ast.go, types.go, walk.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser[&amp;#34;parser/ — Pratt parser (iter.Pull)&amp;lt;br/&amp;gt;parser.go, parser_test.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; checker[&amp;#34;checker/ — Type checker&amp;lt;br/&amp;gt;checker.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; types[&amp;#34;types/ — Type system definitions&amp;lt;br/&amp;gt;types.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; codegen[&amp;#34;codegen/ — AST → Go source generation&amp;lt;br/&amp;gt;codegen.go, codegen_test.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; formatter[&amp;#34;formatter/ — Code formatter&amp;lt;br/&amp;gt;formatter.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; linter[&amp;#34;linter/ — Code linter&amp;lt;br/&amp;gt;linter.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mutation[&amp;#34;mutation/ — Mutation testing&amp;lt;br/&amp;gt;mutation.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subgraph runtime[&amp;#34;runtime/&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; meowrt[&amp;#34;meowrt/ — Core runtime: Value, operators, builtins&amp;lt;br/&amp;gt;value.go, operators.go, builtins.go, list.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; file[&amp;#34;file/ — File I/O (snoop, stalk)&amp;lt;br/&amp;gt;file.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; http[&amp;#34;http/ — HTTP client (pounce, toss, knead, swat, prowl)&amp;lt;br/&amp;gt;http.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testing[&amp;#34;testing/ — Test framework (judge, expect, refuse, run)&amp;lt;br/&amp;gt;testing.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; coverage[&amp;#34;coverage/ — Statement coverage tracking&amp;lt;br/&amp;gt;coverage.go&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; examples[&amp;#34;examples/ — Sample .nyan programs&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testdata[&amp;#34;testdata/ — Golden file tests (.nyan + .golden)&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; docs[&amp;#34;docs/ — Documentation&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="adding-a-new-keyword"&gt;Adding a New Keyword&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add the token&lt;/strong&gt; in &lt;code&gt;pkg/token/token.go&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Meow Programming Language Release Notes</title><link>https://meow.oreha.dev/blog/release-notes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/blog/release-notes/</guid><description>&lt;p&gt;A summary of features and changes in each Meow Programming Language release, organized from newest to oldest.&lt;/p&gt;
&lt;p&gt;From v0.20.0 onwards each release also gets its own post, with runnable &lt;code&gt;.nyan&lt;/code&gt; examples and upgrade notes. See the &lt;a href="https://meow.oreha.dev/blog/"&gt;blog index&lt;/a&gt; for the full list.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="kitty-struct-types--pr-26"&gt;Kitty (Struct) Types — PR #26&lt;/h2&gt;
&lt;p&gt;User-defined composite types with typed fields.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kitty Cat {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name: string
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; age: int
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nyan nyantyu = Cat(&amp;#34;Nyantyu&amp;#34;, 3)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nya(nyantyu.name) # =&amp;gt; Nyantyu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;What&amp;rsquo;s new:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Meow Programming Language Specification: Syntax, Types, Functions, and Pattern Matching</title><link>https://meow.oreha.dev/doc/spec/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/doc/spec/</guid><description>&lt;p&gt;This document defines the syntax and semantics of the Meow Programming Language.&lt;/p&gt;
&lt;p&gt;Meow is a cat-themed programming language that transpiles to Go. Source files use the &lt;code&gt;.nyan&lt;/code&gt; extension and are encoded in UTF-8.&lt;/p&gt;
&lt;h2 id="notation"&gt;Notation&lt;/h2&gt;
&lt;p&gt;This specification uses Extended Backus-Naur Form (EBNF) for grammar productions:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ebnf" data-lang="ebnf"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Production &lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;name &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;=&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;Expression &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;.&amp;#34;&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Expression &lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;Term &lt;/span&gt;{ &lt;span style="color:#f1fa8c"&gt;&amp;#34;|&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;Term &lt;/span&gt;} .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Term &lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;Factor &lt;/span&gt;{ &lt;span style="color:#ff79c6"&gt;Factor &lt;/span&gt;} .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Factor &lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;name &lt;/span&gt;| &lt;span style="color:#ff79c6"&gt;literal &lt;/span&gt;| &lt;span style="color:#f1fa8c"&gt;&amp;#34;(&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;Expression &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;)&amp;#34;&lt;/span&gt; | &lt;span style="color:#f1fa8c"&gt;&amp;#34;[&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;Expression &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;]&amp;#34;&lt;/span&gt; | &lt;span style="color:#f1fa8c"&gt;&amp;#34;{&amp;#34;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;Expression &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;}&amp;#34;&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;[ ... ]&lt;/code&gt; denotes optional (0 or 1).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{ ... }&lt;/code&gt; denotes repetition (0 or more).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot; ... &amp;quot;&lt;/code&gt; denotes terminal symbols.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source-code-representation"&gt;Source Code Representation&lt;/h2&gt;
&lt;p&gt;Source code is UTF-8 encoded text in &lt;code&gt;.nyan&lt;/code&gt; files. Newlines serve as statement terminators (semicolons are not used); the one exception is a line beginning with &lt;code&gt;|=|&lt;/code&gt;, which continues the expression on the line above — see &lt;a href="#pipe-expression"&gt;Pipe Expression&lt;/a&gt;. The compiler processes a single &lt;code&gt;.nyan&lt;/code&gt; file at a time.&lt;/p&gt;</description></item><item><title>Meow Programming Language Tutorial: Learn .nyan Syntax from Hello World</title><link>https://meow.oreha.dev/learn/tutorial/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/learn/tutorial/</guid><description>&lt;p&gt;A step-by-step guide to learning the Meow Programming Language. Each section builds on the previous one and includes runnable &lt;code&gt;.nyan&lt;/code&gt; examples.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Go 1.26+ installed&lt;/li&gt;
&lt;li&gt;Meow compiler installed (see &lt;a href="https://meow.oreha.dev/community/contributing/#clone-and-build"&gt;Installation&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Verify your installation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;meow version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="1-hello-world"&gt;1. Hello, World!&lt;/h2&gt;
&lt;p&gt;Create a file called &lt;code&gt;hello.nyan&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nya(&amp;#34;Hello, World!&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;meow run hello.nyan
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hello, World!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;nya&lt;/code&gt; is Meow&amp;rsquo;s print function. It prints its arguments separated by spaces, followed by a newline.&lt;/p&gt;
&lt;p&gt;You can also build a native binary:&lt;/p&gt;</description></item><item><title>Effective Meow Programming Language: Idiomatic Patterns and Conventions</title><link>https://meow.oreha.dev/learn/effective-meow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/learn/effective-meow/</guid><description>&lt;p&gt;Idiomatic patterns and conventions for writing clean, consistent code in the Meow Programming Language.&lt;/p&gt;
&lt;h2 id="placeholder-names"&gt;Placeholder Names&lt;/h2&gt;
&lt;p&gt;Every language has its go-to stand-in names — the world at large reaches for
&lt;code&gt;foo&lt;/code&gt;, &lt;code&gt;bar&lt;/code&gt;, and &lt;code&gt;baz&lt;/code&gt;. In Meow, we have our own cast of characters:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Nyantyu&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;The first cat on the scene — your default placeholder&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Tyako&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;The second — shows up when one name isn&amp;rsquo;t enough&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Tyomusuke&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;The third — for when the gang&amp;rsquo;s all here&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Use them in examples, tests, and documentation whenever you need throwaway
names. Keeping these consistent makes &lt;code&gt;.nyan&lt;/code&gt; code feel at home everywhere
in the project.&lt;/p&gt;</description></item><item><title>Meow Programming Language Standard Library</title><link>https://meow.oreha.dev/doc/stdlib/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/doc/stdlib/</guid><description>&lt;p&gt;This document describes all built-in functions and standard library packages available in the Meow Programming Language.&lt;/p&gt;
&lt;h2 id="built-in-functions-no-nab-required"&gt;Built-in Functions (no &lt;code&gt;nab&lt;/code&gt; required)&lt;/h2&gt;
&lt;p&gt;These functions are available globally in every &lt;code&gt;.nyan&lt;/code&gt; program.&lt;/p&gt;
&lt;h3 id="nyaargs"&gt;&lt;code&gt;nya(args...)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Print values to standard output, separated by spaces, followed by a newline.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nya(&amp;#34;Hello&amp;#34;, &amp;#34;World&amp;#34;) # =&amp;gt; Hello World
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nya(42) # =&amp;gt; 42
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nya([1, 2, 3]) # =&amp;gt; [1, 2, 3]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Returns &lt;code&gt;catnap&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="hissargs"&gt;&lt;code&gt;hiss(args...)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Raise an error by panicking. Arguments are joined with spaces and prefixed with &lt;code&gt;&amp;quot;Hiss! &amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Meow Programming Language Quick Reference</title><link>https://meow.oreha.dev/doc/reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/doc/reference/</guid><description>&lt;p&gt;A complete reference of all keywords, operators, and syntax in the Meow Programming Language.&lt;/p&gt;
&lt;h2 id="keywords"&gt;Keywords&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Meow&lt;/th&gt;
 &lt;th&gt;Meaning&lt;/th&gt;
 &lt;th&gt;Example&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nyan&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Variable declaration&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nyan x = 42&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;meow&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Function definition&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;meow add(a int, b int) int { bring a + b }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bring&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Return a value&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bring x + 1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;sniff&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Conditional branch (if)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;sniff (x &amp;gt; 0) { ... }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;scratch&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Else branch&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;} scratch { ... }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;purr&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Loop (count, range, list, or condition)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;purr i (10) { ... }&lt;/code&gt;, &lt;code&gt;purr (ready) { ... }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bolt&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Leave the loop&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;sniff (found) { bolt }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;slink&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;On to the next turn&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;sniff (empty) { slink }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;paw&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lambda (anonymous function)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paw(x int) { x * 2 }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nya&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Print values&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nya(&amp;quot;Hello!&amp;quot;)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;lick&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Transform each element in a list (map)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;lick(nums, paw(x) { x * 2 })&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;picky&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Select elements matching a condition (filter)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;picky(nums, paw(x) { x &amp;gt; 0 })&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;curl&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Combine a list into a single value (reduce)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;curl(nums, 0, paw(a, x) { a + x })&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;peek&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Branch based on a value (pattern match)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;peek(v) { 0 =&amp;gt; &amp;quot;zero&amp;quot;, _ =&amp;gt; &amp;quot;other&amp;quot; }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;hiss&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Raise an error&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;hiss(&amp;quot;something went wrong&amp;quot;)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;gag&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Catch errors (try/recover)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;gag(paw() { risky() })&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;is_furball&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Check if a value is an error&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;is_furball(result)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nab&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Import standard library package&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nab &amp;quot;http&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;flaunt&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Export &lt;em&gt;(reserved)&lt;/em&gt;&lt;/td&gt;
 &lt;td&gt;&amp;mdash;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;yarn&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;True (boolean literal)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nyan ok = yarn&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;hairball&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;False (boolean literal)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nyan ng = hairball&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;catnap&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Nil (represents no value)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nyan nothing = catnap&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kitty&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Struct (composite type) definition&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;kitty Cat { name: string }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;breed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Type alias (transparent)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;breed Nickname = string&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;collar&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Newtype (nominal wrapper)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;collar UserId = int&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pose&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Interface definition&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pose Showable { meow show() string }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;groom&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Add methods to a type&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;groom Cat { meow show() string { ... } }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;self&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Instance reference in methods&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;self.name&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trill&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Pure-function modifier (opt-in purity check)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;trill meow add(a int, b int) int { bring a + b }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="type-keywords"&gt;Type Keywords&lt;/h2&gt;
&lt;p&gt;Meow supports gradual static typing. Type keywords annotate variables, function
parameters, and return values.&lt;/p&gt;</description></item><item><title>Meow Programming Language vs Go: Side-by-Side Reference</title><link>https://meow.oreha.dev/learn/go-comparison/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/learn/go-comparison/</guid><description>&lt;p&gt;A side-by-side reference for Go developers learning the Meow Programming Language. Meow transpiles to Go, so many concepts map directly.&lt;/p&gt;
&lt;h2 id="syntax-comparison"&gt;Syntax Comparison&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Concept&lt;/th&gt;
 &lt;th&gt;Go&lt;/th&gt;
 &lt;th&gt;Meow&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Variable&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;var x int = 42&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nyan x int = 42&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Short variable&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;x := 42&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nyan x = 42&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Function&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;func add(a, b int) int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;meow add(a, b int) int&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Return&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;return x&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bring x&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;If&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;if x &amp;gt; 0 { }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;sniff (x &amp;gt; 0) { }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Else&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;} else { }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;} scratch { }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Else if&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;} else if x == 0 {&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;} scratch sniff (x == 0) {&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;For (counting)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;for i := 0; i &amp;lt; n; i++&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;purr i (n)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;For (inclusive)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;for i := a; i &amp;lt;= b; i++&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;purr i (a..b)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Lambda&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;func(x int) int { return x*2 }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paw(x int) { x * 2 }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Print&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;fmt.Println(x)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nya(x)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;True&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;yarn&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;hairball&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Nil&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nil&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;catnap&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Struct&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;type Cat struct { ... }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;kitty Cat { ... }&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Import&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;import &amp;quot;net/http&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nab &amp;quot;http&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Error&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;errors.New(&amp;quot;msg&amp;quot;)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;hiss(&amp;quot;msg&amp;quot;)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Panic&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;panic(&amp;quot;msg&amp;quot;)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;hiss(&amp;quot;msg&amp;quot;)&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Recover&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;defer func() { recover() }()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;gag(paw() { ... })&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="detailed-examples"&gt;Detailed Examples&lt;/h2&gt;
&lt;h3 id="variable-declaration"&gt;Variable Declaration&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Go:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Meow Programming Language Compiler Internals</title><link>https://meow.oreha.dev/doc/internals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/doc/internals/</guid><description>&lt;p&gt;This document describes the internal architecture of the Meow Programming Language compiler for contributors who want to understand or modify the compilation pipeline.&lt;/p&gt;
&lt;h2 id="pipeline-overview"&gt;Pipeline Overview&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flowchart TD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; src[&amp;#34;.nyan source&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; lexer[&amp;#34;Lexer&amp;lt;br/&amp;gt;pkg/lexer&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser[&amp;#34;Parser&amp;lt;br/&amp;gt;pkg/parser&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; checker[&amp;#34;Checker&amp;lt;br/&amp;gt;pkg/checker&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; codegen[&amp;#34;Codegen&amp;lt;br/&amp;gt;pkg/codegen&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; gobuild[&amp;#34;go build&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bin([&amp;#34;binary&amp;#34;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; interp[&amp;#34;Interpreter&amp;lt;br/&amp;gt;pkg/interpreter&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; output([&amp;#34;output&amp;#34;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; src --&amp;gt; lexer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; lexer -- &amp;#34;iter.Seq[Token]&amp;#34; --&amp;gt; parser
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser -- &amp;#34;AST&amp;#34; --&amp;gt; checker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; checker -- &amp;#34;TypeInfo&amp;#34; --&amp;gt; codegen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; checker -- &amp;#34;TypeInfo&amp;#34; --&amp;gt; interp
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; codegen -- &amp;#34;Go source&amp;#34; --&amp;gt; gobuild
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; gobuild --&amp;gt; bin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; interp -- &amp;#34;direct execution&amp;#34; --&amp;gt; output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There are two execution paths from the AST:&lt;/p&gt;</description></item><item><title>Meow Programming Language v0.21.4: The Documentation Says What the Language Does</title><link>https://meow.oreha.dev/blog/v0-21-4/</link><pubDate>Thu, 20 Aug 2026 15:05:06 +0000</pubDate><guid>https://meow.oreha.dev/blog/v0-21-4/</guid><description>&lt;p&gt;Released 2026-08-20. No compiler behaviour changed in this one. What changed
is that the documentation now describes the language that v0.17.0 through
v0.21.3 actually built, and a test keeps it that way.&lt;/p&gt;
&lt;h2 id="what-the-reference-did-not-say"&gt;What the reference did not say&lt;/h2&gt;
&lt;p&gt;The reference had never learned about &lt;code&gt;nab go&lt;/code&gt; at all — its import section
ended at the list of Meow&amp;rsquo;s own packages. Reaching a Go package by import
path, naming it with &lt;code&gt;tag&lt;/code&gt;, and pinning a version with &lt;code&gt;@&lt;/code&gt; are all documented
now, and every example was run rather than written from memory:&lt;/p&gt;</description></item><item><title>Meow Programming Language v0.21.3: Purity Judged by the Declaration a Name Reaches</title><link>https://meow.oreha.dev/blog/v0-21-3/</link><pubDate>Thu, 20 Aug 2026 08:23:16 +0000</pubDate><guid>https://meow.oreha.dev/blog/v0-21-3/</guid><description>&lt;p&gt;Released 2026-08-20. A &lt;code&gt;trill&lt;/code&gt; function is pure: it must not call a non-pure
one. Until this release, the guard judged that by name alone, so a &lt;code&gt;trill&lt;/code&gt;
body could not call a pure local of its own where an impure top-level function
happened to share the name.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;meow helper(x int) int {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nya(&amp;#34;side effect&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bring x + 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;trill meow adds(n int) int {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nyan helper = paw(x) { bring x + 1 }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bring helper(n)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hiss! pure function adds must not call non-pure function helper, nya~
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The local has nothing to do with the top-level &lt;code&gt;helper&lt;/code&gt;, but the purity check
looked the name up in the table of top-level functions and never asked whether
it still reached that declaration here.&lt;/p&gt;</description></item><item><title>Meow Programming Language v0.21.2: A Call Goes to the Declaration the Name Reaches</title><link>https://meow.oreha.dev/blog/v0-21-2/</link><pubDate>Thu, 20 Aug 2026 05:27:36 +0000</pubDate><guid>https://meow.oreha.dev/blog/v0-21-2/</guid><description>&lt;p&gt;Released 2026-08-20. &lt;a href="https://meow.oreha.dev/blog/v0-21-1/"&gt;v0.21.1&lt;/a&gt; settled what a
name &lt;em&gt;read&lt;/em&gt; rather than called reaches. Calling through the same name did not
follow — it went to the top-level function of that name, in both halves of the
compiler.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;meow greet(who string) string { bring &amp;#34;hi &amp;#34; + who }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;meow rename() string {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nyan greet = paw(a, b) { bring a + &amp;#34;/&amp;#34; + b }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bring greet(&amp;#34;x&amp;#34;, &amp;#34;y&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The checker looked the name up in its table of top-level functions before it
looked in scope, so the call was checked against the wrong signature and
refused outright:&lt;/p&gt;</description></item><item><title>Meow Programming Language v0.21.1: A Top-Level Function Named Rather Than Called</title><link>https://meow.oreha.dev/blog/v0-21-1/</link><pubDate>Thu, 20 Aug 2026 03:36:22 +0000</pubDate><guid>https://meow.oreha.dev/blog/v0-21-1/</guid><description>&lt;p&gt;Released 2026-08-20. v0.21.0 made a &lt;em&gt;member&lt;/em&gt; readable as a value. A plain
top-level function was still not one, and saying so leaked Go&amp;rsquo;s own complaint:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;meow greet(who string) string { bring &amp;#34;hi &amp;#34; + who }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nya(greet)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cannot use greet (value of type func(who string) string) as meowrt.Value value
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;in argument to meow.Nya: func(who string) string does not implement meowrt.Value
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Not a &lt;code&gt;Hiss!&lt;/code&gt;, and not something a Meow program could act on. It was not only
&lt;code&gt;nya&lt;/code&gt; — no top-level function could be used as a value at all, so the plainest
functional idiom did not work:&lt;/p&gt;</description></item><item><title>Meow Programming Language v0.21.0: A Member Read as Well as Called</title><link>https://meow.oreha.dev/blog/v0-21-0/</link><pubDate>Wed, 19 Aug 2026 22:47:43 +0000</pubDate><guid>https://meow.oreha.dev/blog/v0-21-0/</guid><description>&lt;p&gt;Released 2026-08-19. Reading a member without calling it used to come apart —
codegen emitted an unchecked assertion, so a program ended with a Go panic
rather than a furball:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nyan swap = strings.new_replacer(&amp;#34;cat&amp;#34;, &amp;#34;nyan&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nyan speak = swap.replace
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;interface conversion: meowrt.Value is *meowrt.Opaque, not *meowrt.Kitty
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="a-member-read-is-now-a-value"&gt;A member read is now a value&lt;/h2&gt;
&lt;p&gt;A field is what it holds. A method — one groomed on, or one belonging to
something from Go — is that method bound to what it was reached through, which
is a function like any other:&lt;/p&gt;</description></item><item><title>Meow Programming Language v0.20.0: A Value Read Out of Go Remembers Where It Came From</title><link>https://meow.oreha.dev/blog/v0-20-0/</link><pubDate>Wed, 19 Aug 2026 22:03:28 +0000</pubDate><guid>https://meow.oreha.dev/blog/v0-20-0/</guid><description>&lt;p&gt;Released 2026-08-19. &lt;code&gt;nab go&lt;/code&gt; lets a &lt;code&gt;.nyan&lt;/code&gt; program reach a Go package with no
wrapper written for it. In v0.20.0 the value that comes back stops forgetting
what it is.&lt;/p&gt;
&lt;h2 id="reading-a-go-value-was-what-made-it-unusable"&gt;Reading a Go value was what made it unusable&lt;/h2&gt;
&lt;p&gt;The rule ran backwards: the more of a Go type Meow could read, the less of it
was left to use. A &lt;code&gt;*url.URL&lt;/code&gt; was read into a basket, and once it was a basket
the methods of the URL were gone.&lt;/p&gt;</description></item><item><title>Meow Programming Language vs MeowLang and Other Cat-themed Languages</title><link>https://meow.oreha.dev/meow-programming-language-vs-meowlang/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/meow-programming-language-vs-meowlang/</guid><description>&lt;p&gt;If you searched for &amp;ldquo;Meow language&amp;rdquo; or &amp;ldquo;MeowLang&amp;rdquo; and landed here, this page
explains what the &lt;strong&gt;Meow Programming Language&lt;/strong&gt; is, and how it relates to
other projects that share a similar cat-themed name.&lt;/p&gt;
&lt;h2 id="what-is-the-meow-programming-language"&gt;What is the Meow Programming Language?&lt;/h2&gt;
&lt;p&gt;The Meow Programming Language is a cat-themed &lt;strong&gt;functional&lt;/strong&gt; programming
language that transpiles &lt;code&gt;.nyan&lt;/code&gt; source files into Go source code, which is
then compiled to a native binary using the standard Go toolchain.&lt;/p&gt;</description></item><item><title>Sitemap - Meow Programming Language</title><link>https://meow.oreha.dev/sitemap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://meow.oreha.dev/sitemap/</guid><description>&lt;p&gt;Browse every page of the Meow Programming Language website. If you cannot find a page through navigation, this directory lists everything that is published.&lt;/p&gt;</description></item></channel></rss>