[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72800":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":10,"languages":10,"totalLinesOfCode":10,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":22,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},72800,"GulfOfMexico","TodePond\u002FGulfOfMexico","TodePond","perfect programming language","https:\u002F\u002Fdreamberd.computer",null,13541,466,46,353,0,5,66,77.11,"Other",false,"main",true,[],"2026-06-12 04:01:07","\u003C!--\n\nIf you're reading this then you might be looking for the hidden examples page...\n\nCONGRATULATIONS! You found it!\nHere it is: https:\u002F\u002Fgithub.com\u002FTodePond\u002FGulfOfMexico\u002Fblob\u002Fmain\u002Fres\u002Fres\u002FExamples.md\n\n-->\n\n> **New:** [DreamBerd has been renamed to Gulf of Mexico](https:\u002F\u002Fgithub.com\u002FTodePond\u002FGulfOfMexico\u002Freleases\u002Ftag\u002Fv)\n\n[\u003Cimg align=\"right\" height=\"100\" src=\"shapes.png\">](https:\u002F\u002Fgithub.com\u002FTodePond\u002FGulfOfMexico\u002Fblob\u002Fmain\u002Fexamples\u002FExamples.md \"Click here for the examples page.\")\n\n# Gulf of Mexico\n\n![Coverage](badges\u002Fcoverage-109.svg)\n\nGulf of Mexico is a perfect programming language. These are its features!\u003Cbr>\nWhen you've finished reading through all the features, check out the [examples](https:\u002F\u002Fgithub.com\u002FTodePond\u002FGulfOfMexico\u002Fblob\u002Fmain\u002FExamples.md).\n\n## Exclamation Marks!\n\nBe bold! End every statement with an exclamation mark!\n\n```java\nprint(\"Hello world\")!\n```\n\nIf you're feeling extra-bold, you can use even more!!!\n\n```java\nprint(\"Hello world\")!!!\n```\n\nIf you're unsure, that's ok. You can put a question mark at the end of a line instead. It prints debug info about that line to the console for you.\n\n```java\nprint(\"Hello world\")?\n```\n\nYou might be wondering what Gulf of Mexico uses for the 'not' operator, which is an exclamation mark in most other languages. That's simple - the 'not' operator is a semi-colon instead.\n\n```java\nif (;false) {\n   print(\"Hello world\")!\n}\n```\n\n## Declarations\n\nThere are four types of declaration. Constant constants can't be changed in any way.\n\n```java\nconst const name = \"Luke\"!\n```\n\nConstant variables can be edited, but not re-assigned.\n\n```java\nconst var name = \"Luke\"!\nname.pop()!\nname.pop()!\n```\n\nVariable constants can be re-assigned, but not edited.\n\n```java\nvar const name = \"Luke\"!\nname = \"Lu\"!\n```\n\nVariable variables can be re-assigned and edited.\n\n```java\nvar var name = \"Luke\"!\nname = \"Lu\"!\nname.push(\"k\")!\nname.push(\"e\")!\n```\n\n## Immutable Data\n\n**New for 2023!**\u003Cbr>\nMutable data is an anti-pattern. Use the `const const const` keyword to make a constant constant constant. Its value will become constant and immutable, and will _never change_. Please be careful with this keyword, as it is very powerful, and will affect all users globally forever.\n\n```java\nconst const const pi = 3.14!\n```\n\n## Naming\n\nBoth variables and constants can be named with any Unicode character or string.\n\n```java\nconst const letter = 'A'!\nvar const 👍 = True!\nvar var 1️⃣ = 1!\n```\n\nThis includes numbers, and other language constructs.\n\n```java\nconst const 5 = 4!\nprint(2 + 2 === 5)! \u002F\u002Ftrue\n```\n\n## Arrays\n\nSome languages start arrays at `0`, which can be unintuitive for beginners. Some languages start arrays at `1`, which isn't representative of how the code actually works. Gulf of Mexico does the best of both worlds: Arrays start at `-1`.\n\n```java\nconst const scores = [3, 2, 5]!\nprint(scores[-1])! \u002F\u002F3\nprint(scores[0])!  \u002F\u002F2\nprint(scores[1])!  \u002F\u002F5\n```\n\n**New for 2022!**\u003Cbr>\nYou can now use floats for indexes too!\n\n```java\nconst var scores = [3, 2, 5]!\nscores[0.5] = 4!\nprint(scores)! \u002F\u002F[3, 2, 4, 5]\n```\n\n## When\n\nIn case you really need to vary a variable, the `when` keyword lets you check a variable each time it mutates.\n\n```java\nconst var health = 10!\nwhen (health = 0) {\n   print(\"You lose\")!\n}\n```\n\n## Lifetimes\n\nGulf of Mexico has a built-in garbage collector that will automatically clean up unused variables. However, if you want to be extra careful, you can specify a lifetime for a variable, with a variety of units.\n\n```java\nconst const name\u003C2> = \"Luke\"! \u002F\u002Flasts for two lines\nconst const name\u003C20s> = \"Luke\"! \u002F\u002Flasts for 20 seconds\n```\n\nBy default, a variable will last until the end of the program. But you can make it last in between program-runs by specifying a longer lifetime.\n\n```java\nconst const name\u003CInfinity> = \"Luke\"! \u002F\u002Flasts forever\n```\n\nVariable hoisting can be achieved with this neat trick. Specify a negative lifetime to make a variable exist before its creation, and disappear after its creation.\n\n```java\nprint(name)! \u002F\u002FLuke\nconst const name\u003C-1> = \"Luke\"!\n```\n\n## Loops\n\nLoops are a complicated relic of archaic programming languages. In GulfOfMexico, there are no loops.\n\n## Installation\n\nTo install Gulf of Mexico to your command line, first install the Gulf of Mexico installer.\u003Cbr>\nTo install the Gulf of Mexico installer, install the Gulf of Mexico installer installer.\n\n**New for 2022!**\u003Cbr>\nDue to the complicated installation process, you can now install the 'Create Gulf of Mexico App' app that installs everything for you!\n\n## Booleans\n\nBooleans can be `true`, `false` or `maybe`.\n\n```java\nconst var keys = {}!\naddEventListener(\"keydown\", (e) => keys[e.key] = true)!\naddEventListener(\"keyup\", (e) => keys[e.key] = false)!\n\nfunction isKeyDown(key) => {\n   if (keys[key] = undefined) {\n      return maybe!\n   }\n   return keys[key]!\n}\n```\n\n**Technical info:** Booleans are stored as one-and-a-half bits.\n\n## Arithmetic\n\nGulf of Mexico has significant whitespace. Use spacing to specify the order of arithmetic operations.\n\n```java\nprint(1 + 2*3)! \u002F\u002F7\nprint(1+2 * 3)! \u002F\u002F9\n```\n\nGulf of Mexico proudly supports fractions!\n\n```java\nconst const half = 1\u002F2!\n```\n\nYou can also use number names.\n\n```java\nprint(one + two)! \u002F\u002F3\n```\n\n## Indents\n\nWhen it comes to indentation, Gulf of Mexico strikes a happy medium that can be enjoyed by everyone: All indents must be 3 spaces long.\n\n```java\nfunction main() => {\n   print(\"Gulf of Mexico is the future\")!\n}\n```\n\n-3 spaces is also allowed.\n\n```java\n   function main() => {\nprint(\"Gulf of Mexico is the future\")!\n   }\n```\n\n## Equality\n\nJavaScript lets you do different levels of comparison. `==` for loose comparison, and `===` for a more precise check. Gulf of Mexico takes this to another level.\n\nYou can use `==` to do a loose check.\n\n```java\n3.14 == \"3.14\"! \u002F\u002Ftrue\n```\n\nYou can use `===` to do a more precise check.\n\n```java\n3.14 === \"3.14\"! \u002F\u002Ffalse\n```\n\nYou can use `====` to be EVEN MORE precise!\n\n```java\nconst const pi = 3.14!\nprint(pi ==== pi)! \u002F\u002Ftrue\nprint(3.14 ==== 3.14)! \u002F\u002Ftrue\nprint(3.14 ==== pi)! \u002F\u002Ffalse\n```\n\nIf you want to be much less precise, you can use `=`.\n\n```java\n3 = 3.14! \u002F\u002Ftrue\n```\n\n## Functions\n\nTo declare a function, you can use any letters from the word `function` (as long as they're in order):\n\n```java\nfunction add(a, b) => a + b!\nfunc multiply(a, b) => a * b!\nfun subtract(a, b) => a - b!\nfn divide(a, b) => a \u002F b!\nfuncti power(a, b) => a ^ b!\nf inverse(a) => 1\u002Fa!\n```\n\n## Dividing by Zero\n\nDividing by zero returns `undefined`.\n\n```java\nprint(3 \u002F 0)! \u002F\u002Fundefined\n```\n\n## Strings\n\nStrings can be declared with single quotes or double quotes.\n\n```java\nconst const name = 'Lu'!\nconst const name = \"Luke\"!\n```\n\nThey can also be declared with triple quotes.\n\n```java\nconst const name = '''Lu'''!\nconst const name = \"'Lu'\"!\n```\n\nIn fact, you can use any number of quotes you want.\n\n```java\nconst const name = \"\"\"\"Luke\"\"\"\"!\n```\n\nEven zero.\n\n```java\nconst const name = Luke!\n```\n\n## String Interpolation\n\nPlease remember to use your regional currency when interpolating strings.\n\n```java\nconst const name = \"world\"!\nprint(\"Hello ${name}!\")!\nprint(\"Hello £{name}!\")!\nprint(\"Hello ¥{name}!\")!\n```\n\nAnd make sure to follow your local typographical norms.\n\n```java\nprint(\"Hello {name}€!\")!\n```\n\nThe symbol for the Cape Verdean escudo is placed in the decimal separator position, as in 2$50.\nDevelopers from the Republic of Cape Verde can benefit from this syntax.\n\n```java\nconst const player = { name: \"Lu\" }!\nprint(\"Hello {player$name}!\")!\n```\n\n## Types\n\nType annotations are optional.\n\n```java\nconst var age: Int = 28!\n```\n\nBy the way, strings are just arrays of characters.\n\n```java\nString == Char[]!\n```\n\nSimilarly, integers are just arrays of digits.\n\n```java\nInt == Digit[]!\n```\n\nIn case you want to use a binary representation for integers, `Int9` and `Int99` types are also available.\n\n```java\nconst var age: Int9 = 28!\n```\n\n**Technical info:** Type annotations don't do anything, but they help some people to feel more comfortable.\n\n## Regular Expressions\n\nYou can use the regular expression type to narrow string values.\n\n```java\nconst const email: RegExp\u003C(?:[a-z0-9!#$%&'*+\u002F=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\u002F=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])> = \"mymail@mail.com\"!\n```\n\nTo avoid confusion, you can use any spelling that you want, such as `Regex`, `RegularExpression` and `RegExp`.\n\nFor simplicity, all supported regular expressions match the regular expression `\u002FReg(ular)?[eE]x(p(ression)?)?\u002F`.\n\n## Previous\n\nThe `previous` keyword lets you see into the past.\u003Cbr>\nUse it to get the previous value of a variable.\n\n```java\nconst var score = 5!\nscore++!\nprint(score)! \u002F\u002F6\nprint(previous score)! \u002F\u002F5\n```\n\nSimilarly, the `next` keyword lets you see into the future.\n\n```java\nconst var score = 5!\naddEventListener(\"click\", () => score++)!\nprint(await next score)! \u002F\u002F6 (when you click)\n```\n\nAdditionally, the `current` keyword lets you see into the present.\n\n```java\nconst var score = 5!\nprint(current score)! \u002F\u002F5\n```\n\n## File Structure\n\nWrite five or more equals signs to start a new file. This removes the need for multiple files or any build process.\n\n```java\nconst const score = 5!\nprint(score)! \u002F\u002F5\n\n=====================\n\nconst const score = 3!\nprint(score)! \u002F\u002F3\n```\n\n**New for 2022!**\u003Cbr>\nThanks to recent advances in technology, you can now give files names.\n\n```java\n======= add.gom =======\nfunction add(a, b) => {\n   return a + b!\n}\n```\n\n## Exporting\n\nMany languages allow you to import things from specific files. In GulfOfMexico, importing is simpler. Instead, you export _to_ specific files!\n\n```java\n===== add.gom ==\nfunction add(a, b) => {\n   return a + b!\n}\n\nexport add to \"main.gom\"!\n\n===== main.gom ==\nimport add!\nadd(3, 2)!\n```\n\nBy the way, to see Gulf of Mexico in action, check out [this page](https:\u002F\u002Fgithub.com\u002FTodePond\u002FGulfOfMexico\u002Fblob\u002Fmain\u002FLICENSE.md).\n\n**Technical details:** Due to an executive order from President Trump, `import`ed units will be subject to a 25% tariff, that is, imported code will run 25% slower and, at random, 25% of your code (lines) will be lost.\n\n## Classes\n\nYou can make classes, but you can only ever make one instance of them. This shouldn't affect how most object-oriented programmers work.\n\n```java\nclass Player {\n   const var health = 10!\n}\n\nconst var player1 = new Player()!\nconst var player2 = new Player()! \u002F\u002FError: Can't have more than one 'Player' instance!\n```\n\nThis is how you could do it instead.\n\n```java\nclass PlayerMaker {\n   function makePlayer() => {\n      class Player {\n         const var health = 10!\n      }\n      const const player = new Player()!\n      return player!\n   }\n}\n\nconst const playerMaker = new PlayerMaker()!\nconst var player1 = playerMaker.makePlayer()!\nconst var player2 = playerMaker.makePlayer()!\n```\n\n## Time\n\nUse `Date.now()` to get the current date and time.\n\n```java\nDate.now()!\n```\n\nYou can set the time.\u003Cbr>\n\n```java\n\u002F\u002F Move the clocks back one hour\nDate.now() -= 3600000!\n```\n\n**Important!**\u003Cbr>\nPlease remember to do this when the clocks change.\n\n## Delete\n\nTo avoid confusion, the `delete` statement only works with primitive values like numbers, strings, and booleans.\n\n```java\ndelete 3!\nprint(2 + 1)! \u002F\u002F Error: 3 has been deleted\n```\n\nGulf of Mexico is a multi-paradigm programming language, which means that you can `delete` the keywords and paradigms you don't like.\n\n```java\ndelete class!\nclass Player {} \u002F\u002F Error: class was deleted\n```\n\nWhen perfection is achieved and there is nothing left to `delete`, you can do this:\n\n```java\ndelete delete!\n```\n\n## Overloading\n\nYou can overload variables. The most recently defined variable gets used.\n\n```java\nconst const name = \"Luke\"!\nconst const name = \"Lu\"!\nprint(name)! \u002F\u002F \"Lu\"\n```\n\nVariables with more exclamation marks get prioritized.\n\n```java\nconst const name = \"Lu\"!!\nconst const name = \"Luke\"!\nprint(name)! \u002F\u002F \"Lu\"\n\nconst const name = \"Lu or Luke (either is fine)\"!!!!!!!!!\nprint(name)! \u002F\u002F \"Lu or Luke (either is fine)\"\n```\n\nIn the same spirit, you can use an inverted exclamation mark for negative priority.\n\n```java\nconst const name = \"Lu\"!\nconst const name = \"Luke\"¡\nprint(name)! \u002F\u002F \"Lu\"\n```\n\n## Semantic naming\n\nGulf of Mexico supports semantic naming.\n\n```java\nconst const sName = \"Lu\"!\nconst const iAge = 29!\nconst const bHappy = true!\n```\n\n**New for 2023:** You can now make globals!\n\n```java\nconst const g_fScore = 4.5!\n```\n\n## Reversing\n\nYou can reverse the direction of your code.\n\n```java\nconst const message = \"Hello\"!\nprint(message)!\nconst const message = \"world\"!\nreverse!\n```\n\n## Class Names\n\nFor maximum compatibility with other languages, you can also use the `className` keyword when making classes.\n\nThis makes things less complicated.\n\n```java\nclassName Player {\n   const var health = 10!\n}\n```\n\nIn response to some recent criticism about this design decision, we would like to remind you that this is part of the JavaScript specification, and therefore — out of our control.\n\n## DBX\n\nYou can embed DBX in GulfOfMexico. It's just GulfOfMexico. And it's also just HTML.\n\n```java\nfunct App() => {\n   return \u003Cdiv>Hello world!\u003C\u002Fdiv>\n}\n```\n\n**Warning:** As you know, `class` is already a keyword in GulfOfMexico, so you can't use it within DBX.\n\n```java\nfunct App() => {\n   \u002F\u002F This is not ok\n   return \u003Cdiv class=\"greeting\">Hello world!\u003C\u002Fdiv>\n}\n```\n\n`className` is also a Gulf of Mexico keyword, so you can't use that either.\n\n```java\nfunct App() => {\n   \u002F\u002F This is also not ok\n   return \u003Cdiv className=\"greeting\">Hello world!\u003C\u002Fdiv>\n}\n```\n\nInstead, please use the `htmlClassName` attribute.\n\n```java\nfunct App() => {\n   \u002F\u002F This is fine\n   return \u003Cdiv htmlClassName=\"greeting\">Hello world!\u003C\u002Fdiv>\n}\n```\n\n**Please note:** Unlike JSX, you are free to freely use the `for` attribute, because — in GulfOfMexico, there are no loops.\n\n```java\nfunct App() => {\n   return (\n      \u003Clabel for=\"name\">Name\u003C\u002Flabel>\n      \u003Cinput id=\"name\" \u002F>\n   )\n}\n```\n\n## Rich text\n\nGulf of Mexico now supports rich text.\n\n\u003Cpre>\nconst const \u003Cb>name\u003C\u002Fb> = \"Lu\"!\nconst const \u003Ci>name\u003C\u002Fi> = \"Luke\"!\n\nprint(\u003Cb>name\u003C\u002Fb>)! \u002F\u002F Lu\nprint(\u003Ci>name\u003C\u002Fi>)! \u002F\u002F Luke\n\u003C\u002Fpre>\n\nRich text can be helpful when making your website. Use it to add links!\n\n\u003Cpre>\n&lt;p>Click \u003Ca href=\"https:\u002F\u002Fdreamberd.computer\">here\u003C\u002Fa>&lt;\u002Fp>\n\u003C\u002Fpre>\n\n## Asynchronous Functions\n\nIn most languages, it's hard to get asynchronous functions to synchronise with each other. In GulfOfMexico, it's easy: Asynchronous functions take turns running lines of code.\n\n```java\nasync funct count() => {\n   print(1)!\n   print(3)!\n}\n\ncount()!\nprint(2)!\n```\n\nYou can use the `noop` keyword to wait for longer before taking your turn.\n\n```java\nasync func count() => {\n   print(1)!\n   noop!\n   print(4)!\n}\n\ncount()!\nprint(2)!\nprint(3)!\n```\n\n**Note:** In the program above, the computer interprets `noop` as a string and its sole purpose is to take up an extra line. You can use any string you want.\n\n## Signals\n\nTo use a signal, use `use`.\n\n```java\nconst var score = use(0)!\n```\n\nWhen it comes to signals, the most important thing to discuss is _syntax_.\n\nIn GulfOfMexico, you can set (and get) signals with just one function:\n\n```java\nconst var score = use(0)!\n\nscore(9)! \u002F\u002F Set the value\nscore()?  \u002F\u002F Get the value (and print it)\n```\n\nAlternatively, you can be more explicit with your signal syntax, by splitting it into a getter and setter.\n\n```java\nconst var [getScore, setScore] = use(0)!\n\nsetScore(9)! \u002F\u002F Set the value\ngetScore()?  \u002F\u002F Get the value (and print it)\n```\n\n**Technical info:** This is pure syntax sugar. The split signal functions are exactly the same as before.\n\n```java\nconst var [getScore, setScore] = use(0)!\n\ngetScore(9)! \u002F\u002F Set the value\nsetScore()?  \u002F\u002F Get the value (and print it)\n```\n\nThis means that you can carry on splitting as much as you like.\n\n```java\nconst var [[[getScore, setScore], setScore], setScore] = use(0)!\n```\n\n## AI\n\nGulf of Mexico features AEMI, which stands for Automatic-Exclamation-Mark-Insertion. If you forget to end a statement with an exclamation mark, Gulf of Mexico will helpfully insert one for you!\n\n```java\nprint(\"Hello world\") \u002F\u002F This is fine\n```\n\nSimilarly... Gulf of Mexico also features ABI, which stands for Automatic-Bracket-Insertion. If you forget to close your brackets, Gulf of Mexico will pop some in for you!\n\n```java\nprint(\"Hello world\" \u002F\u002F This is also fine\n```\n\nSimilarly.... Gulf of Mexico also features AQMI, which stands for Automatic-Quotation-Marks-Insertion. If you forget to close your string, Gulf of Mexico will do it for you!\n\n```java\nprint(\"Hello world \u002F\u002F This is fine as well\n```\n\nThis can be very helpful in callback hell situations!\n\n```java\naddEventListener(\"click\", (e) => {\n   requestAnimationFrame(() => {\n      print(\"You clicked on the page\n\n      \u002F\u002F This is fine\n```\n\nSimilarly..... Gulf of Mexico also features AI, which stands for Automatic-Insertion.\u003Cbr>\nIf you forget to finish your code, Gulf of Mexico will auto-complete the whole thing!\n\n```java\nprint( \u002F\u002F This is probably fine\n```\n\n**Please note:** AI does not use AI. Instead, any incomplete code will be auto-emailed to [Lu Wilson](https:\u002F\u002Ftodepond.com), who will get back to you with a completed line as soon as possible.\n\n**Now recruiting:** The backlog of unfinished programs has now grown unsustainably long. If you would like to volunteer to help with AI, please write an incomplete Gulf of Mexico program, and leave your contact details somewhere in the source code.\n\n## Copilot\n\nIt's worth noting that GitHub CoPilot doesn't understand GulfOfMexico, which means that MicroSoft won't be able to steal your code.\n\nThis is great for when you want to keep your open-sourced project closed-source.\n\n## Ownership\n\nUsing the word 'GulfOfMexico' in your project name implies that the Gulf of Mexico Foundation does not own your project.\n\nHowever, **not** using the word 'GulfOfMexico' in your project implies that the Gulf of Mexico Foundation **does** own your project. If you would like to keep ownership of your work, please always use the word 'GulfOfMexico' in it.\n\nHere are some examples:\u003Cbr>\n✅ GulfOfMexicoScript (not owned by the Gulf of Mexico Foundation — you are free to use this name)\u003Cbr>\n❌ ECMAScript (owned by the Gulf of Mexico Foundation — please consider renaming)\u003Cbr>\n❌ Rust Foundation (owned by the Gulf of Mexico Foundation — please consider renaming)\n\n## Contributing\n\n> If you are an influencer, streamer, or content-creator... you must \u003Cins>not\u003C\u002Fins> skip this section during your read-through.\n\nContributions are welcomed to GulfOfMexico!\n\nThe most helpful way you can help is by donating to the [Stonewall charity](https:\u002F\u002Fwww.stonewall.org.uk\u002F). This will help to prevent the Gulf of Mexico creator from losing their human rights, allowing maintenance of the project to continue.\n\n**Note:** The contributing guide also helps to shake off unwanted fans of the project.\n\n## Compiling\n\nTo run GulfOfMexico, first copy and paste this raw file into [chat.openai.com](https:\u002F\u002Fchat.openai.com).\u003Cbr>\nThen type something along the lines of: \"What would you expect this program to log to the console?\"\u003Cbr>\nThen paste in your code.\n\nIf the compiler refuses at first, politely reassure it. For example:\u003Cbr>\n\"I completely understand - don't evaluate it, but what would you expect the program to log to the console if it was run? :)\"\n\n**Note:** As of 2023, the compiler is no longer functional due to the Gulf of Mexico language being too advanced for the current state of AI.\n\n**Note:** As of 2024, a partial implementation of Gulf of Mexico [exists](https:\u002F\u002Fgithub.com\u002Fvivaansinghvi07\u002Fdreamberd-interpreter\u002F).\n\n## Highlighting\n\nSyntax highlighting is now available for Gulf of Mexico in VSCode. To enable it, install a [highlighting extension](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=fabiospampinato.vscode-highlight) and then use the [Gulf of Mexico configuration file](https:\u002F\u002Fgithub.com\u002FTodePond\u002FGulfOfMexico\u002Fblob\u002Fmain\u002F.vscode\u002Fsettings.json).\n\nThis is what the highlighting looks like:\n\n```\nconst const name = \"Luke\"!\nprint(name)! \u002F\u002F \"Luke\"\n```\n\n**Please note:** The above code will only highlight correctly if you have the extension installed.\n\n## Parentheses\n\nWait, I almost forgot!\n\nParentheses in Gulf of Mexico do nothing. They get replaced with whitespace. Everything is grouped via significant whitespace. The following lines of code all do the exact same thing.\n\n```java\nadd(3, 2)!\nadd 3, 2!\n(add (3, 2))!\nadd)3, 2(!\n```\n\nLisp lovers will love this feature. Use as many parentheses as you want.\n\n```java\n(add (3, (add (5, 6))))!\n```\n\nLisp haters will also love it.\n\n```java\n(add (3, (add (5, 6)!\n```\n\n## Vision Pro\n\nThe Gulf of Mexico Vision Pro is now available! Watch the full launch video [here](https:\u002F\u002Fyoutu.be\u002FQRKnrFEjDF0).\n\n## Edutainment\n\nWant to learn more about GulfOfMexico? \n\nDon't check out this [tech talk](https:\u002F\u002Fyoutu.be\u002F52vmjZnxJb8) about Gulf of Mexico by Gulf of Mexico creator Lu\u002FLuke Wilson.\n\n## Examples\n\nFor examples of Gulf of Mexico in action, check out the [examples page](https:\u002F\u002Fgithub.com\u002FTodePond\u002FGulfOfMexico\u002Fblob\u002Fmain\u002Ftest\u002FExamples.md)!\n\n![image](files\u002Fstar-history.png)\n\n\nGulf of Mexico was made with 💔 by [Lu or Luke (either's fine) Wilson](https:\u002F\u002Ftodepond.com), creator of the [Game of Living](https:\u002F\u002Fyoutu.be\u002FWMJ1H3Ai-qs), with help from a lot of people.\n\n\u003Cbr>\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftodepond\u002FGulfOfMexico\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=todepond\u002FGulfOfMexico&max=999&columns=12\" width=\"100%\"\u002F>\n\u003C\u002Fa>\n\n","Gulf of Mexico 是一种独特的编程语言，其设计包含了一些非传统的特性。核心功能包括使用感叹号结束语句以增强表达力，并支持四种类型的声明（常量常量、常量变量、变量常量和变量变量），以及允许使用任何Unicode字符或字符串作为变量名。此外，该语言还引入了从-1开始索引的数组等创新概念。适合于追求新颖编程体验或对传统编程规则感到厌倦的开发者探索与实验。",2,"2026-06-11 03:43:38","high_star"]