Skip to main content

Tutorial

Tutorial

📄️ Linguistic programs as databases

A Gramble program is a way of specifying a linguistic database in an efficient manner, without having to list out every possible entry. This is useful for very complex languages like Swahili or Kanyen'keha (in which there are millions of possible verb forms), or for syntactic phenomena like sentences (where we can't possibly list every possible sentence), or for procedures like Romanization where you want to produce a Roman-alphabet version of any user input, even if it's not a word you've ever seen before.

📄️ Flat vs. nested

The previous examples used a structure where we define each morpheme (e.g. that the root can be "call" or "jump", that the suffix can be "s" or "ing" or "ed", etc.) and then at the end we concatenate all the morphemes together. Let's call that a "flat" structure. (You might also call it a "templatic" structure, but I'm going to avoid that term here because it can mean a lot of things. You might be modeling a language that linguists say has "templatic morphology", but you might not want to structure your grammar that way.)

📄️ Circumfixes

When word formation requires you do add both a prefix and suffix at the same time, that's sometimes called a circumfix. The existence of circumfixes in English are debatable, but consider something like "enliven": there's a root "live" and then an "en- -en" surrounding it. This one isn't the greatest example because we can also say this was formed "live -> liven -> enliven", but there are languages where this step-by-step approach doesn't work, where BOTH affixes have to be put on together or else the word is meaningless, or where their presence together has a different meaning contribution than you'd predict from their individual meanings.