This commit is contained in:
rhiannon morris 2024-09-15 17:50:32 +02:00
parent 3f827564b4
commit 9f850de9ba
14 changed files with 325 additions and 375 deletions

View file

@ -1,189 +0,0 @@
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<link rel=stylesheet href=/style/page.css>
<title></title>
<header>
<h1>merr chrismas</h1>
<div class=meta>
<h2 class=date>monday 25 december 2023</h2>
<nav class=tags>
tags:
<ul>
<li><a href=/tag-l_ntas.html>lántas</a>
<li><a href=/tag-conlangs.html>conlangs</a>
</ul>
</nav>
</div>
<hr>
</header>
<main>
# just tell me how to say it please
sure thing. here.
```{=html}
<figure class="glosses">
```
---------------------------------------------------------------------- ----------------------------------------------------
![](chrismas/ufit_þulkussarim.svg "ufit þulkussarim"){.scr .laantas}
ufit þulkussarim
\[ˌufit ˈθuɫkɔsːɐʑɪ̃\]
ufi--t þulkus(i)--sa--ri--m
cozy--[GEN]{.abbr} midwinter--[AD]{.abbr}--[PRL]{.abbr}--[DEF]{.abbr}
(be) cozy during midwinter
---------------------------------------------------------------------- ----------------------------------------------------
```{=html}
</figure>
```
# details
now i am not a huge fan of putting christianity into my conlang, which
is hopefully understandable. but having a midwinter festival sounds
cute. the days are finally getting longer! you made it through the worst
part! and so on. so that's what this is. i think it probably takes place
the day after the solstice, but with several days of festivities, so
that there is still a little overlap with the *other* winter holiday.
it's still appropriate to say it today.
## seasons
time name pron. translation
---------- --------------------------------------------------------------- ------------------- ---------------------------------- -------------
nov--jan [![](chrismas/igisim.svg "igisim"){.scr .laantas}]{.lang} [igisim]{.lang} [\[ˈiʝɛsĩ\]]{.ipa .ipa-narrow} the freeze
feb [![](chrismas/susurum.svg "susurum"){.scr .laantas}]{.lang} [susurum]{.lang} [\[ˈsusʊrõ\]]{.ipa .ipa-narrow} the melt
mar--may [![](chrismas/šangubam.svg "šangubam"){.scr .laantas}]{.lang} [šangubam]{.lang} [\[ˈʃaŋɡɔvɑ̃\]]{.ipa .ipa-narrow} the bloom
jun--aug [![](chrismas/guwanḿ.svg "guwanḿ"){.scr .laantas}]{.lang} [guwanḿ]{.lang} [\[ˈɡɔwɑnm̩\]]{.ipa .ipa-narrow} the sun
sep--oct [![](chrismas/santum.svg "santum"){.scr .laantas}]{.lang} [santum]{.lang} [\[ˈsantõ\]]{.ipa .ipa-narrow} the rain
- in between [![](chrismas/igisim.svg "igisim"){.scr
.laantas}[igisim]{.text}]{.lang} (winter) and
[![](chrismas/šangubam.svg "šangubam"){.scr
.laantas}[šangubam]{.text}]{.lang} (spring), the month of february
is considered a transition between the two,
[![](chrismas/susurum.svg "susurum"){.scr
.laantas}[susurum]{.text}]{.lang}.
- as a result, [![](chrismas/santum.svg "santum"){.scr
.laantas}[santum]{.text}]{.lang} (autumn) is only two months long.
- [![](chrismas/šangubam.svg "šangubam"){.scr
.laantas}[šangubam]{.text}]{.lang} comes from
[![](chrismas/šani.svg "šani"){.scr .laantas}[šani]{.text}]{.lang}
(flower) and [![](chrismas/guba.svg "guba"){.scr
.laantas}[guba]{.text}]{.lang} (grow, thrive).
## putting it together
the word "midwinter", without any inflections, is
[![](chrismas/þulkusim.svg "þulkusim"){.scr
.laantas}[þulkusim]{.text}]{.lang}, which comes from
[![](chrismas/þulku.svg "þulku"){.scr .laantas}[þulku]{.text}]{.lang}
"be deep" and [![](chrismas/igisim.svg "igisim"){.scr
.laantas}[igisim]{.text}]{.lang}. unusually for lántas,
[![](chrismas/þulku.svg "þulku"){.scr .laantas}[þulku]{.text}]{.lang} is
a verb, rather than a noun. why? who knows.
```{=html}
<aside class='floating'>
```
on that page, where you see a [ƶ]{.lang}, replace it with [þ]{.lang}. i
haven't got round to updating that yet. it also has the ugly text until
i redraw [![](chrismas/č__ǧ_.svg "č ǧ"){.scr
.laantas}[č ǧ]{.text}]{.lang}, since at least if it's all ugly it's
consistent. sorry about that.
```{=html}
</aside>
```
the suffix [![](chrismas/sari.svg "sari"){.scr
.laantas}[--sari]{.text}]{.lang} is actually a pair of two suffixes,
which together mean through, or during. the details of the whole
situation are
[here](https://lang.niss.website/laantas/nouns.html#locational-cases),
but it is a cool two-dimensional system based on a thing that can be
found in some languages of the caucasus. the
[![](chrismas/m.svg "m"){.scr .laantas}[--m]{.text}]{.lang} on the end
(of all these words so far, actually) is "the". so the full form
[![](chrismas/þulkusisarim.svg "þulkusisarim"){.scr
.laantas}[þulkusisarim]{.text}]{.lang} means "during midwinter", and
that one [i]{.lang} is dropped in this phrase to give the form
[![](chrismas/þulkussarim.svg "þulkussarim"){.scr
.laantas}[þulkussarim]{.text}]{.lang}.
now, for [![](chrismas/ufit.svg "ufit"){.scr
.laantas}[ufit]{.text}]{.lang}. there is a small, but technically
non-zero, chance that you remember the word
[![](chrismas/uf_a_t.svg "uf{a}t"){.scr
.laantas}[uf`<u>`{=html}a`</u>`{=html}t]{.text}]{.lang} from
[here](https://cohost.org/niss/post/3366713-ufat-iksaha), with the
meaning of "warm". this is actually the same word, but a bit cutesy. it
means cozy.
the implied verb in this sentence is
[![](chrismas/iksaha.svg "iksaha"){.scr
.laantas}[iksaha]{.text}]{.lang}, like before. this is an auxiliary verb
for requests. for example, if [![](chrismas/šikkúha.svg "šikkúha"){.scr
.laantas}[šikkúha]{.text}]{.lang} means "you are going", then
[![](chrismas/šikkúm_iksaha.svg "šikkúm iksaha"){.scr
.laantas}[šikkúm iksaha]{.text}]{.lang} means "please go away". the
[--ha]{.lang} here means "you" (singular). here it's dropped because the
phrase is long enough already to be easily understood.
so in the end, you get
[![](chrismas/ufit_þulkussarim.svg "ufit þulkussarim"){.scr
.laantas}[ufit þulkussarim]{.text}]{.lang}, meaning "\[stay\] cozy
during the midwinter".
::: twocol-grid
![](images/crismas1.png){width="100%"}
```{=html}
<figure class="glosses left">
```
---------------------------------------------------------- ----
![](chrismas/þugusim_ai.svg "þugusim ai"){.scr .laantas}
þugusim ai
\[ˈθuɣɔsĩm‿ai\]
þugusi--m ai
miwiner--[DEF]{.abbr} be
it crismas
---------------------------------------------------------- ----
```{=html}
</figure>
```
![](images/crismas2.png){width="100%"}
```{=html}
<figure class="glosses left">
```
------------------------------------------------------------------ ----------------------------------------
![](chrismas/ufi_þugussarim.svg "ufi þugussarim"){.scr .laantas}
ufi þugussarim
\[ˌufi ˈθuɣɔsːɐʑĩ\]
ufi--(t) þugus(i)--sari--m
cozy--([GEN]{.abbr}) miwiner--[DURING]{.abbr}--[DEF]{.abbr}
merr crismas
------------------------------------------------------------------ ----------------------------------------
```{=html}
</figure>
```
:::
</main>
<footer>
<hr>
<a href=/index.html>all posts</a> ·
<a href=/all-tags.html>all tags</a>
</footer>

BIN
images/quorientation.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

BIN
images/skip-some-floors.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -1,177 +0,0 @@
---
title: quox. the language
date: 2023-10-25
tags: [quox, computer, types]
bibliography: quox.bib
link-citations: true
show-toc: true
...
<style>
header h1 { margin-left: 0; }
header h1::before, header h1::after {
content: url(../images/qt.svg);
display: inline-block;
height: 0.75em; width: 0.75em;
padding: 0 0.5em;
}
header h1::before {
transform: rotateY(0.5turn);
}
main > :is(h1, h2, h3, h4, h5, h6)::after {
content: url(../images/quox-tod.png);
image-rendering: crisp-edges;
image-rendering: pixelated;
margin-left: 0.5em;
}
.qtt-q { font-family: Muller; font-weight: 600; color: #60c; }
.xtt-x { font-family: Muller; font-weight: 600; color: #082; }
#panqt {
--width: 202px; --height: 200px;
}
#panqt div {
width: var(--width); height: var(--height);
position: relative;
}
#panqt img, #panqt div::before {
position: absolute;
top: 0; left: 0;
width: var(--width); height: var(--height);
}
#panqt div::before {
content:
image-set(url(../images/panqt.png) 1x,
url(../images/panqt2x.png) 2x);
mix-blend-mode: multiply;
}
#panqt figcaption {
width: var(--width);
}
</style>
:::{.aside .floating}
### [hot minute](https://en.wiktionary.org/wiki/hot_minute)&ensp;<i>n.</i> {.unnumbered}
1. A long period of time.
2. A short period of time.
3. An unspecified period of time.
:::
for the last _hot minute_ [@hotminute], ive been working on a little programming language. its finally starting to approach a state where it can compile some programs, so maybe i should talk about it a bit.
# what is a quox [(tl;dr for type system nerds)]{.note}
<figure class=floating>
<img src=../images/quox.png class='shadow pixel'
alt='a dragon from an old arcade game'
title='use my warps to skip some floors!'>
<figcaption>this is also a quox.</figcaption>
</figure>
0. its a *dependently typed functional language*, like your agdas and your idrises.
1. it has a *closed type universe*. you dont define new datatypes, but the language gives you building blocks to put them together.
2. *[q]{.qtt-q}uantitative type theory* (qtt) [@nuttin; @qtt] is a nice combination of dependent types, resource tracking, and erasure of stuff like proofs.
3. *[x]{.xtt-x}tt* [@xtt], which `*i sure hope i remember to come back and add this!*`
- the closed type universe is a consequence of xtt (as well as its kinda-predecessor ott [@ott-now]), but i decided to just run with it.
- “xtt” stands for “extensional type theory”, but its not _that_ extensional type theory. i know. not my fault.
so now you can see where the name [q]{.qtt-q}uo[x]{.xtt-x} comes from. other than my favourite dragon. anyway it also has
<figure class=floating id=panqt>
<div><img src=../images/panqt.nobg.png srcset='../images/panqt.nobg2x.png 2x'
width=202 height=200
alt='one of my fursonas is a quox with three heads'
title='i hear putting pictures of your fursona on your blog is a good way to get hacker news types Big Mad if they find out about it'></div>
<figcaption>
sometimes i am also a quox. or three, depending on how you count.
</figcaption>
</figure>
4. *bidirectional type checking* [@bidi] `*this one too*`
5. crude-but-effective stratification [@crude; @crude-blog] for dealing with universes. `*does this need more detail too?*`
6. *written in idris2*. that doesnt really have much impact on the language itself, other than the compilation process, but im enjoying using a dependently typed language for something substantial. even if its one youre not currently supposed to be using for anything substantial. also currently it spits out scheme, like idris, because that was easy.
7. all the non-ascii syntax is [optional], but i like it.
[optional]: https://git.rhiannon.website/rhi/quox/wiki/ascii-syntax
as for what it _doesnt_ have: any but the most basic of conveniences. sorry.
# dependent types
there are lots of languages with dependent types—well, quite a few—so i wont spend too much time on this.
`*but still something*`
# closed type universe
instead of having datatypes like in normal languages, in quox you get the basic building blocks to make them. the main building blocks are functions, pairs, enumerations, equality types, strings, and natural numbers. some sort of syntactic sugar to expand a datatype declaration into this representation _is_ something i want to add, but it'd be in the pretty distant future.
:::aside
_at the moment_, natural numbers are the only recursion possible. so you can define types with the same recursive structure, like lists, but binary trees and stuff are not _currently_ possible, until i replace them with something more general. probably w-types [@nlab-wtype].
:::
but right now you can define a few types like this. see [qtt](#qtt) below for what all the `0`s and `ω`s mean. due to the lack of generic recursion, but the presence of _natural numbers_ specifically, a list is a length, followed by a nested tuple of that length (terminated by `'nil`).
```quox
def0 Vec : → ★ → ★ =
λ n A ⇒
case n return ★ of {
zero ⇒ {nil};
succ p, As ⇒ A × As
} -- ↖ As = Vec p A
def0 List : ★ → ★ = λ A ⇒ (n : ) × Vec n A
def Nil : 0.(A : ★) → List A = λ A ⇒ (0, 'nil)
def Cons : 0.(A : ★) → A → List A → List A =
λ A x xs ⇒ case xs return List A of { (len, xs) ⇒ (succ len, x, xs) }
def NilS = Nil String
def ConsS = Cons String
def example = ConsS "im" (ConsS "gay" NilS)
def0 example-eq : example ≡ (2, "im", "gay", 'nil) : List String =
refl (List String) example
```
you might have noticed that i didn't write the eliminator. that is because they are kind of ugly. if you want to see it anyway you can find it in [the example folder][ex].
[ex]: https://git.rhiannon.website/rhi/quox/src/commit/246d80eea2/examples/list.quox#L12-L25
# qtt
sometimes, values of some type can only be used in certain ways to make sense. this is hardly controversial; if you do this with
a problem that dependent types used to have a lot is that the blurring of compile-time and run-time data can lead to more being retained than necessary.
`*is there an example that has superlinear junk data without resorting to peano naturals or some shit*`
consider this vector (length-indexed list) definition from a _hypothetical language_ with normal inductive types.
```agda
data Vect (A : ★) : → ★ where
[] : Vect A 0
_∷_ : (n : ) → A → Vect A n → Vect A (succ n)
```
in a totally naive implementation, `cons` would store `n`, the length of its tail (and maybe even some kind of representation of `A` too). so a three element list would look something like
# xtt
`*mention about type-case and the closed universe*`
# bidirectional type checking
# references {#refs}

67
posts-wip/qpoly.md Normal file
View file

@ -0,0 +1,67 @@
---
title: quantity polymorphism (draft)
date: 2024-04-21
tags: [quox, computer]
...
im getting sick of writing `elim` and `elimω`, and `fold` and `foldω` and—
so let's call the quantity context, uh, $Ξ$. it's just a list of bound vars.
quantity arguments have to be full expressions though because arithmetic shows
up in the typing rules
## syntax
:::texdefs
$$ \newcommand\HL{\textcolor{blueviolet}} $$
:::
$$
\begin{aligned}
D &::=
\cdots \mid \mathtt{def} \; \mathsf{a}_{\HL{\overline α}} : A = s
& \text{declarations} \\
e &::=
\cdots \mid \mathsf{a}_{\HL{\overline π}}^{}
& \text{eliminations} \\
π, ρ &::=
𝔮 \HL{\mid α \mid π + ρ \mid π \cdot ρ}
& \HL{\text{quantity expressions}} \\[1em]
\HL{α, β} && \HL{\text{quantity variables}} \\
𝔮 &::=
0 \mid 1 \mid ω
& \text{quantity constants} \\
\HL{Ξ} &\mathrel{\HL{::=}}
\HL{\cdot \mid Ξ, α}
& \HL{\text{quantity contexts}}
\end{aligned}
$$
- a _quantity value_ $π̃$ in a context $Ξ$ is a polynomial with variables from
$Ξ$ and coefficients from $\{0,1,ω\}$.
## typing
:::texdefs
$$
\newcommand\FracS[2]{\frac{\;#1\;}{\;#2\;}}
\newcommand\Many[1]{\begin{gathered}#1\end{gathered}}
\newcommand\Rule[3][]{\FracS{\Many{#2}}{\Many{#3}}\;\text{\small[#1]}}
\newenvironment{Rules}
{\begin{gathered}\newcommand\nl{\\[1em]}}
{\end{gathered}}
$$
:::
:::rulebox
$$
\newcommand\Syn\Rightarrow \newcommand\Chk\Leftarrow
\begin{gathered}
\HL{Ξ \mid} Ψ \mid Γ \vdash σ \cdot s \Chk A \rhd Σ \\
\HL{Ξ \mid} Ψ \mid Γ \vdash σ \cdot e \Syn A \rhd Σ
\end{gathered}
$$
:::

95
posts-wip/record.md Normal file
View file

@ -0,0 +1,95 @@
---
title: records
date: 2024-06-02
tags: ['quox (language)']
...
n-ary products to replace pairs _and_ boxes, since the nested `case`
expressions for nested pairs are actually really annoying.
# syntax
$$
\newcommand\CEQ{\operatorname{::=}}
\begin{aligned}
A, B, s, t &\CEQ \dotsb
\mid [Δ]
\mid [𝔇]
& \text{terms} \\
e, f &\operatorname{::=} \dotsb
\mid e\mathord·
& \text{eliminations} \\
𝔅 &\operatorname{::=} \dotsb
\mid [ \overline{=x} ] ⇒ s
& \text{case bodies} \\[1em]
&\operatorname{::=} x \mid n & \text{labels ($n ∈ $)} \\[1em]
Δ &\operatorname{::=} \overline{π· =x : A} & \text{telescopes} \\
𝔇 &\operatorname{::=} \overline{=s} & \text{list of bindings} \\
ϕ &\operatorname{::=} \overline{x=e} & \text{substitutions} \\
\end{aligned}
$$
- this __replaces__ the box syntax. pair syntax __still exists__ but
expands to this. this means that
$A \times B \times C$ and $A \times (B \times C)$ are no longer equivalent.
i guess that's fine but it is a change.
- overlined things are comma separated.
- in $Δ$, $π$ is optional and defaults to $1$ like everywhere else.
- the pair syntax
$(x_0, \dotsc, x_n) : (x_0 : A_0) \times \dotsb \times A_n$
is now an abbreviation for
$[0=x_0, \dotsc, n=x_n] : [0=x_0: A_0, \dotsc, n: A_n]$.
- instead of $\operatorname{\mathsf{fst}} e$ and $\operatorname{\mathsf{snd}} e$, it's now $e\mathord.0$
and $e\mathord.1$ (and $e\mathord.2$, …).
- "`'[0. 0 : A]`" looks bad. i know.
- a telescope $Δ$ can be used as a context by ignoring the outer labels $$.
# typing
## telescope checking
:::rulebox
$$Γ ⊢ Δ$$
:::
$$
\frac{}{Γ ⊢ •}
\qquad
\frac{
Γ ⊢ Δ \qquad
Γ, Δ ⊢_0 A ⇐ ★
}{
Γ ⊢ Δ, π·ℓ = x : A
}
$$
## binding list checking
:::rulebox
$$ Γ ⊢ σ·𝔇 ⇐ Δ ⊳ Σ $$
:::
$$ \frac{}{Γ ⊢ σ·• ⇐ • ⊳ 𝟎} $$
$$
\frac{
Γ ⊢ σ·𝔇 ⇐ Δ ⊳ Σ_𝔇 \qquad
Γ ⊢ ⌊σπ⌋ · s ⇐ A[𝔇:Δ] ⊳ Σ_s
}{
Γ ⊢ σ· (𝔇, = s) ⇐ (Δ, π·ℓ = x : A) ⊳ Σ_𝔇 + πΣ_s
}
$$
:::rulebox
$$ 𝔇 : Δ = ϕ $$
:::
produce a substitution from a binding list and a telescope by distributing the
type annotations
$$
\begin{aligned}
• : • &= • \\
(𝔇, x = s) : (Δ, π·ℓ=x : A) &= (𝔇 : Δ), (x = s ∷ A)
\end{aligned}
$$

View file

@ -3,6 +3,8 @@ title: a little ats program
date: 2022-09-16
tags: [computer, ATS, cool languages]
show-toc: true
summary: |
a little program in a little-known, little-documented language called ATS.
...
[ats] is a language that is a little infamous among type system likers, for its
@ -60,9 +62,7 @@ let's start by defining the syntax for types. it's going to be a single base
type, and functions.
$$
\newcommand\Typ{\mathit{typ}}
\newcommand\OR{\mathrel|}
\Typ ::= \bullet \OR \Typ_1 \to \Typ_2
A, B \operatorname{::=} \mathord• \mid A → B
$$
so obviously, my first attempt was to just write this:
@ -159,11 +159,7 @@ overload print with print_typ
types are done, now let's move on to terms. we just want names, lambdas, and
application.
$$
\newcommand\Term{\mathit{term}}
\newcommand\Var{\mathit{var}}
\Term ::= \Var \OR \lambda \Var : \Typ. \Term \OR \Term_1 \; \Term_2
$$
$$ s, t \operatorname{::=} x \mid λ x : A. s \mid s \; t $$
for the same reason as before, terms are indexed by their height, but _also_ by
the number of variables in scope, since i want de bruijn indices to be

View file

@ -3,6 +3,9 @@ date: 2022-07-12
title: a few undocumented beluga features
tags: [computer, beluga, cool languages]
toc: true
summary: |
some undocumented features i found while looking through the source code
of the proof language beluga.
...

View file

@ -3,6 +3,11 @@ date: 2023-12-25
title: merr chrismas
tags: [lántas, conlangs]
conlang: laantas
summary: |
how to say "merr chrismas" in my conlang lántas.
if you don't care about the details, the answer is
“ufit þulkusimari”.
...
# just tell me how to say it please
@ -74,7 +79,7 @@ so in the end, you get `{!ufit þulkusimsari}`, meaning "[stay] cozy during the
midwinter".
:::twocol-grid
::: {.twocol-grid .light}
![](images/crismas1.png){width=100%}
::: {.glosses .left}

View file

@ -2,6 +2,9 @@
title: digitle in maude
date: 2022-03-14
tags: [maude, computer, cool languages]
summary: |
a solver for digitle (numbers countdown) in maude, a language
for rewriting systems.
...
so you know [digitle] right. it's the countdown numbers round.

View file

@ -2,6 +2,8 @@
title: fibonacci in maude and ats
date: 2022-10-24
tags: [computer, maude, ATS]
summary: |
fibonacci numbers in the languages maude and ATS.
...
i might submit these [here], if i can be bothered to get a new github account.

View file

@ -2,6 +2,10 @@
title: undocumented idris2 features
date: 2022-11-12
tags: [computer, idris]
summary: |
some lesser-known features in the dependently-typed language
idris (2).
header-includes: |
<style>
.sidebyside {

141
posts/quorientation.md Normal file
View file

@ -0,0 +1,141 @@
---
date: 2024-03-14
title: quorientation
tags: [lántas, conlangs]
conlang: laantas
summary: |
in my latest art, i put some text in my conlang lántas. here is approximately
too much detail about that.
...
<figure>
<a href=http://gallery.niss.website/main/niss/2024-03-14-quorientation/>
<img src=../images/quorientation.png>
</a>
</figure>
in [this picture], what is q.t. saying? this:
:::{.figure .bigscr}
`{#suatł pattalal šilbari gulaigúšḿ fulla}` \
`{#sá sá panísat igitḿ ǧunailam lám ušmináša nat lánášḿ fulla}` \
`{#ǧisat fuhat siham iksaháš}`
:::
so. one sentence at a time.
[this picture]: http://gallery.niss.website/main/niss/2024-03-14-quorientation/
# one
:::glosses
- suatł pattalal šilbari gulaigúšḿ fulla
- [ˌsuətɫ̩ ˈpatːɐləlʲ ˈʃilʲbɐɾɪ ɡɔˈlaɪɣɔːʃm̩ fʊɫːɑ]
- sua-t-ł patta-la-l šil-ba-ri gulai-gúš-ḿ fulla
- 2-GEN-PL door-INS-PL floor-SUP-PRL jump-2p can
- use your warps to skip some floors
:::
you know! the thing! from the game!
<figure class='floating right'>
<figcaption> well. from the fan translation </figcaption>
<img src=../images/skip-some-floors.png class=pixel alt=''>
</figure>
- out of context, `{!patta}` means door. i suppose a portal would be a magic
door, an `{!ustaitł patta}`. but in the context of someone making one right
in front of you, it is clear what kind of door we're talking about.
:::{.aside .no-line}
the word `{!ustail}` also means "songs". did you know there's an old english
word for magic, `{ġealdor}`, that comes from the proto-germanic `{galdr}`,
meaning both "song" and "incantation"? i thought it was cute.
:::
- the suffix pair `{!bari}` together mean "over". there was something like this
[last time](chrismas.html) too. since it is how the language expresses all
spatial and temporal relationships, that's not very surprising.
# two
:::glosses
- sá sá panísat igitḿ ǧunailam lám ušmináša nat lánášḿ fulla
- [saːsɐ pɐˈniːsɐt ˈiʝɛtm̩ dʒuˈnaɪlɐ̃ ˌlãːm‿ʊʃmiˈnaːʃə ˌnat ˈlaːnaːʃm̩ ˌfʊɫːə]
- sá_sá panísa-t igi(s)-t-ḿ ǧunai-la-m lá-m ušmi-náš-(j)a na(i)-t lá-náš-ḿ fulla
- now blue-GEN crystal-GEN-DEF rod-INS-DEF do-DEF want-1p-REL one-GEN do-1p-DEF can
- these days we can use the blue crystal rod for whatever we want
:::
babylon no longer exists, so it doesn't need protecting. go have fun
- one `{!sá}` means "right at this moment". two `{!sá sá}` means "these days".
the second one is actually pronounced with a short vowel.
- `{!igis}` also means "ice". "crystal" more explicitly can be `{!kut igis}`,
or "stone ice".
- `{!nai}` means both "one" and "anything". phrased more literally,
`{!lám ušmináša nat}` is "anything that we want to do".
- the way auxiliary verbs like "can" work is a little strange. let's take
a shorter sentence, `{!šanil gubam fulla}`, "flowers can grow". first you take
the base sentence, `{!šanil guba}` "flowers grow", and add `{m}`, which
when it's not part of a grammatical template, means "the", but makes the
clause into a noun phrase. then that is used as the subject of the verb
`{!fulla}`, or `{!bulla}` "must", etc. so more literally, these auxiliaries
mean something like "is possible/necessary".
"{flowers grow here} is possible".
:::{.aside .no-line}
the similarity of `{!fulla}` and `{!bulla}` is just a weird accident, in case
you're wondering. i made the words at different times. no etymology puzzle
here, sorry
:::
# three
:::glosses
- ǧisat fuhat siham iksaháš
- [ˈdʒisɐt ˌfuxɑt ˈsixɑ̃m‿ˌiksɐxɑːʃ]
- ǧisa-t fuha-t siha-m iksa-háš
- fire-GEN breath-GEN remember-DEF IMP-2p
- be careful with the fire breath
:::
- `{!iksa}` has the same grammatical structure as `{!fulla}` above. it makes a
sentence into a request. it has one special feature: since in the
vast majority of cases, it only makes sense for both `{!iksa}` and the main
verb to be second person, when that _is_ the case, only `{!iksa}` needs to
have the person marking. otherwise it would be `{!sihaham}` above.
# abbreviation list
:::{.twocol .abbr-list}
DEF
: [definite](https://lang.niss.website/laantas/nouns.html#definiteness)
["the"]{.note}
GEN
: [genitive](https://lang.niss.website/laantas/nouns.html#corecases)
["of"]{.note}
INS
: [instrumental](https://lang.niss.website/laantas/nouns.html#corecases)
["using"]{.note}
PL
: [plural](https://lang.niss.website/laantas/nouns.html#number)
PRL
: [perlative](https://lang.niss.website/laantas/nouns.html#locational-cases)
["through"]{.note}
REL
: [relative clause suffix](https://lang.niss.website/laantas/verbs.html#modifier-forms)
["which/that"]{.note}
SUP
: [superessive](https://lang.niss.website/laantas/nouns.html#locational-cases)
["above"]{.note}
:::