xesite/blog/mapatei-2019-09-22.markdown

372 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "mapatei"
date: "2019-09-22"
series: conlangs
tags:
- mapatei
- protolang
---
I've been working on a project in the [Conlang Critic][conlangcritic] Discord with some friends for a while now, and I'd like to summarize what we've been doing and why here. We've been working on creating a constructed language (conlang) with the end goal of each of us going off and evolving it in our own separate ways. Our goal in this project is really to create a microcosm of the natural process of language development.
## Why
One of the questions you, as the reader, might be asking is "why?" To which I say "why not?" This is a tool I use to define, explore and challenge my fundamental understanding of reality. I don't expect anything I do with this tool to be useful to anyone other than myself. I just want to create something by throwing things at the wall and seeing what makes sense for _me_. If other people like it or end up benefitting from it I consider that icing on the cake.
A language is a surprisingly complicated thing. There's lots of nuance and culture encoded into it, not even counting things like metaphors and double-meanings. Creating my own languages lets me break that complicated thing into its component parts, then use that understanding to help increase my knowledge of natural languages.
So, like I mentioned earlier, I've been working on a conlang with some friends, and here's what we've been creating.
## mapatei grammar
mapatei is the language spoken by a primitive culture of people we call maparaja (people of the language). It is designed to be very simple to understand, speak and learn.
### Phonology
The phonology of mapltapei is simple. It has 5 vowels and 17 consonants. The sounds are written mainly in [International Phonetic Alphabet](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet).
#### Vowels
The vowels are:
| International Phonetic Alphabet | Written as | Description / Bad Transcription for English speakers |
| :--- | :--- | :--- |
| a | a | unstressed "ah" |
| aː | ā | stressed "AH" |
| e | e | unstressed "ayy" |
| eː | ē | stressed "AYY" |
| i | i | unstressed "ee" |
| iː | ī | stressed "EE" |
| o | o | unstressed "oh" |
| oː | ō | stressed "OH" |
| u | u | unstressed "ooh" |
| uː | ū | stressed "OOH" |
The long vowels (anything with the funny looking bar/macron on top of them) also mark for stress, or how "intensely" they are spoken.
#### Consonants
The consonants are:
| International Phonetic Alphabet | Written as | Description / Bad Transcription for English speakers |
| :--- | :--- | :--- |
| m | m | the m in mother |
| n | n | the n in money |
| ᵐb | mb | a combination of the m in mother and the b in baker |
| ⁿd | nd | as in handle |
| ᵑg | ng | as in finger |
| p | p | the p in spool |
| t | t | the t in stool |
| k | k | the k in school |
| pʰ | ph | the ph in pool |
| tʰ | th | the th in tool |
| kʰ | kh | the kh in cool |
| ɸ~f | f | the f in father |
| s | s | the s in sock |
| w | w | the w in water |
| l | l | the l in lie |
| j | j or y | the y in young |
| r~ɾ | r | the r in rhombus |
### Word Structure
The structure of words is based on syllables. Syllables are formed of a pair of maybe a consonant and always a vowel. There can be up to two consecutive vowels in a word, but each vowel gets its own syllable. If a word is stressed, it can only ever be stressed on the first syllable.
Here are some examples of words and their meanings (the periods in the words mark the barriers between syllables):
| mapatei word | Intentional Phonetic Alphabet | Meaning |
| :--- | :--- | :--- |
| ondoko | o.ⁿdo.ko | pig |
| māo | maː.o | cat |
| ameme | a.me.me | to kill/murder |
| ero | e.ro | can, to be able to |
| ngōe | ᵑgoː.e | I/me |
| ke | ke | cold |
| ku | ku | fast |
There are only a few parts of speech: nouns, pronouns, verbs, determiners, numerals, prepositions and interjections.
### Nouns
Nouns describe things, people, animals, animate objects (such as plants or body parts) and abstract concepts (such as days). Nouns in mapatei are divided into four classes (this is similar to how languages like French handle the concept of grammatical gender): human, animal, animate and inanimate.
Here are some examples of a few nouns, their meaning and their noun class:
| mapatei word | International Phonetic Alphabet | Class | Meaning |
| :--- | :--- | :--- | :--- |
| okha | o.kʰa | human | female human, woman |
| awu | a.wu | animal | dog |
| fōmbu | (ɸ~f)oː.ᵐbu | animate | name |
| ipai | i.pa.i | inanimate | salt |
Nouns can also be singular or plural. Plural nouns are marked with the -ja suffix. See some examples:
| singular mapatei word | plural mapatei word | International Phonetic Alphabet | Meaning |
| :--- | :--- | :--- | :--- |
| ra | raja | ra.ja | person / people |
| meko | mekoja | me.ko.ja | ant / ants |
| kindu | kinduja | kiː.ⁿdu.ja | liver / livers |
| fīfo | fīfoja | (ɸ~f)iː.(ɸ~f)o.ja | moon / moons |
### Pronouns
Pronouns are nouns that replaces a noun or noun phrase with a special meaning. Examples of pronouns in English are words like I, me, or you. This is to avoid duplication of people's names or the identity of the speaker vs the listener.
| Pronouns | singular | plural | Rough English equivalent |
| :--- | :--- | :--- | :--- |
| 1st person | ngōe | tha | I/me, we |
| 2nd person | sīto | khē | you, y'all |
| 3rd person human | rā | foli | he/she, they |
| 3rd person animal | mi | wāto | they |
| 3rd person animate | sa | wāto | they |
| 3rd person inanimate | li | wāto | they |
### Verbs
Verbs describe actions, existence or occurrence. Verbs in mapatei are conjugated in terms of tense (or when the thing being described has/will happen/ed in relation to saying the sentence) and the number of the subject of the sentence.
Verb endings:
| Verbs | singular | plural |
| :--- | :--- | :--- |
| past | -fu | -phi |
| present | | -ja |
| future | māu $verb | māu $verb-ja |
For example, consider the verb ōwo (oː.wo) for to love:
| ōwo - to love | singular | plural |
| :--- | :--- | :--- |
| past | ōwofu | ōwophi |
| present | ōwo | ōwoja |
| future | māu ōwo | māu ōwoja |
### Determiners
Determiners are words that can function both as adjectives and adverbs in English do. A determiner gives more detail or context about a noun/verb. Determiners follow the things they describe, like French or Toki Pona. Determiners must agree with the noun they are describing in class and number.
| Determiners | singular | plural |
| :--- | :--- | :--- |
| human | -ra | -fo |
| animal | -mi | -wa |
| animate | -sa | -to |
| inanimate | -li | -wato |
See these examples:
a big human: ra sura
moving cats: māoja wuwa
a short name: fōmbu uwiisa
long days: lundoseja khāngandiwato
Also consider the declensions for uri (u.ri), or dull
| uri | singular | plural |
| :--- | :--- | :--- |
| human | urira | urifo |
| animal | urimi | uriwa |
| animate | urisa | urito |
| inanimate | urili | uriwato |
### Numerals
There are two kinds of numerals in mapltatei, cardinal (counting) and ordinal (ordering) numbers. Numerals are always in [seximal](<https://www.seximal.net>).
| cardinal (base 6) | mapatei |
| :--- | :--- |
| 0 | fangu |
| 1 | āre |
| 2 | mawo |
| 3 | piru |
| 4 | kīfe |
| 5 | tamu |
| 10 | rupe |
| 11 | rupe jo āre |
| 12 | rupe jo mawo |
| 13 | rupe jo piru |
| 14 | rupe jo kīfe |
| 15 | rupe jo tamu |
| 20 | mawo rupe |
| 30 | piru rupe |
| 40 | kīfe rupe |
| 50 | tamu rupe |
| 100 | theli |
Ordinal numbers are formed by reduplicating (or copying) the first syllable of cardinal numbers and decline similarly for case. Remember that only the first syllable can be stressed, so any reduplicated syllable must become unstressed.
| ordinal (base 6) | mapatei |
| :--- | :--- |
| 0th | fangufa |
| 1st | ārea |
| 2nd | mawoma |
| 3rd | pirupi |
| 4th | kīfeki |
| 5th | tamuta |
| 10th | ruperu |
| 11th | ruperu jo ārea |
| 12th | ruperu jo mawoma |
| 13th | ruperu jo pirupi |
| 14th | ruperu jo kīfeki |
| 15th | ruperu jo tamuki |
| 20th | mawoma ruperu |
| 30th | pirupi ruperu |
| 40th | kīfeki ruperu |
| 50th | tamuta ruperu |
| 100th | thelithe |
Cardinal numbers are optionally declined for case when used as determiners with the following rules:
| Numeral Class | suffix |
| :--- | :--- |
| human | -ra |
| animal | -mi |
| animate | -sa |
| inanimate | -li |
Numeral declension always happens last, so the inanimate nifth (seximal 100 or decimal 36) is thelitheli.
Here's a few examples:
three pigs: ondoko pirumi
the second person: ra mawomara
one tree: kho āremi
the nifth day: lundose thelitheli
### Prepositions
Prepositions mark any other details about a sentence. In essence, they add information to verbs that would otherwise lack that information.
fa: with, adds an auxiliary possession to a sentence
ri: possession, sometimes indicates ownership
I eat with my wife: wā ngōe fa epi ri ngōe
ngi: the following phrase is on top of the thing being described
ka: then (effect)
ēsa: if/whether
If I set this dog on the rock, then the house is good: ēsa adunga ngōe pā āwu ngi, ka iri sare eserili
### Interjections
Interjections have the following meanings:
Usually they act like vocatives and have free word order. As a determiner they change meta-properties about the noun/verb like negation.
wo: no, not
| English | mapatei |
| :--- | :--- |
| No! Don't eat that! | wo! wā wo ūto |
| I don't eat ants | wā wo ngōe mekoja |
### Word Order
mapltapei has a VSO word order for sentences. This means that the verb comes first, followed by the subject, and then the object.
| English | mapatei | gloss |
| :--- | :--- | :--- |
| the/a child runs | kepheku rako | kepheku.VERB rako.NOUN.human |
| The child gave the fish a flower | indofu rako ora āsu | indo.VERB.past rako.NOUN.human ora.NOUN.animal āsu.NOUN.animate |
| I love you | ōwo ngōe sīto | ōwo.VERB ngōe.PRN sīto.PRN |
| I do not want to eat right now | wā wo ngōe oko mbeli | wā.VERB wo.INTERJ ngōe.PRN oko.PREP mbeli.DET.singular.inanimate |
| I have a lot of love, and I'm happy about it | urii ngōe erua fomboewato, jo iri ngōe phajera lo li | urii.VERB ngōe.PRN eruaja.NOUN.plural.inanimate fomboewato.DET.plural.inanimate, jo.CONJ iri.VERB ngōe.PRN phajera.DET.singular.human lo.PREP li.PRN |
| The tree I saw yesterday is gone now | pōkhufu kho ngōe, oko iri māndosa mbe | pōkhu.VERB.past kho.NOUN.animate ngōe.PRM, oko.PREP iri.VERB māndo.DET.animate mbe.PRN |
## Code
As I mentioned earlier, I've been working on some code [here](<https://github.com/Xe/mapatei/tree/master/src/mapatei>) to handle things like making sure words are valid. This includes a word validator which I am very happy with.
Words are made up of syllables, which are made up of letters. In code:
```
type
  Letter* = object of RootObj
    case isVowel*: bool
    of true:
      stressed*: bool
    of false: discard
    value*: string
  Syllable* = object of RootObj
    consonant*: Option[Letter]
    vowel*: Letter
    stressed*: bool
  Word* = ref object
    syllables*: seq[Syllable]
```
Letters are parsed out of strings using [this code](<https://github.com/Xe/mapatei/blob/92a429fa9a509af5df5b55810bda03061f21475c/src/mapatei/letters.nim#L35-L89>). It's an interator, so users have to manually loop over it:
```
import unittest
import mapatei/letters
let words = ["pirumi", "kho", "lundose", "thelitheli", "fōmbu"]
suite "Letter":
  for word in words:
    test word:
      for l in word.letters:
       discard l
```
This test loops over the given words (taken from the dictionary and enlightening test cases) and makes sure that letters can be parsed out of them.
Next, syllables are made out of letters, so syllables are parsed using a [finite state machine](<https://en.wikipedia.org/wiki/Finite-state_machine>) with the following transition rules:
| Present state | Next state for vowel | Next state for consonant | Next state for end of input |
| :--- | :--- | :--- | :--- |
| Init | Vowel/stressed | Consonant | Illegal |
| Consonant | Vowel/stressed | End | Illegal |
| Vowel | End | End | End |
Some other hacking was done [in the code](<https://github.com/Xe/mapatei/blob/92a429fa9a509af5df5b55810bda03061f21475c/src/mapatei/syllable.nim#L36-L76>), but otherwise it is a fairly literal translation of that truth table.
And finally we can check to make sure that each word only has a head-initial stressed syllable:
```
type InvalidWord* = object of Exception
proc parse*(word: string): Word =
  var first = true
  result = Word()
  for syll in word.syllables:
    if not first and syll.stressed:
      raise newException(InvalidWord, "cannot have a stressed syllable here")
    if first:
      first = false
    result.syllables.add syll
```
And that's enough to validate every word in the [dictionary](<https://docs.google.com/spreadsheets/d/1HSGS8J8IsRzU0e8hyujGO5489CMzmHPZSBbNCtOJUAg>). Future extensions will include automatic conjugation/declension as well as going from a stream of words to an understanding of sentences.
## Useful Resources Used During This
Creating a language from scratch is surprisingly hard work. These resources helped me a lot though.
- [Polyglot](https://draquet.github.io/PolyGlot/) to help with dictionary management
- [Awkwords](http://akana.conlang.org/tools/awkwords/) to help with word creation
- These lists of core concepts: [list 1](https://forum.duolingo.com/comment/4571123) and [list 2](https://forum.duolingo.com/comment/4664475)
- The conlang critic [discord](https://discord.gg/AxEmeDa)
---
Thanks for reading this! I hope this blogpost helps to kick off mapatei development into unique and more fleshed out derivative conlangs. Have fun!
Special thanks to jan Misali for encouraging this to happen.
[conlangcritic]: https://www.youtube.com/user/HBMmaster8472