1 line
No EOL
5.2 KiB
Scheme
1 line
No EOL
5.2 KiB
Scheme
'(body (article (hgroup (h1 "feature change applier") (p (em "a first attempt at a conlanging tool"))) (section (hgroup (h2 "what is this?") (p (em "a tool for conlanging: a feature-based sound-change applier\n capable of applying multiple sets of rules at once.")) (hr)) (p "you can try it out here: " (a ((href "https://sorrelbri.github.io/feature-change-applier/")) "feature change applier app")) (img ((src "/static/img/settled/1/fca.jpg") (alt "an image of Feature Change Applier application. visible\n are labeled sections. 'proto language lexicon' is a text\n field with nonsense weirds. 'phonetic features' is a list\n of binary values shuch as '+ back' / '- back' and\n characters representing associated sounds like 'a / u / ɯ'\n / 'ə', 'epoch 1' is a text field with a list of phonetic\n rules such as\n '[+ occlusive - nasal]>[+ occlusive + nasal]/n_.' and\n buttons to 'Remove epoch 1' or 'Add Epoch'. 'modeling\n options' is a single selected radio button labeled\n 'Default output' with buttons labeled 'Run Changes' and\n 'Clear Output'. 'Results of Run' is a list headed 'epoch\n 1' and containing newline separated words 'annɯ anat ant\n annɯ tʰa nnɯ"))) (h3 "an unfinished project") (p "some background on conlanging and my interst in conlanging software\n can be found in this " (a ((href "/unsettled/1")) "introductory post about conlanging software")) (p "this project was initially intended to function as a sound change\n applier: a software tool that takes as input a list of lexical items\n in a language and a list of sound change rules and produces as\n output a new list of lexical items resulting from the application of\n each rule to each of the lexical items in the input. more info about\n sound change appliers will be available: " (a ((href "/unsettled/?")) "[pending] review of existing conlanging tools")) (p "there are two ways in which i sought to extend the functionality of\n the typical sound change applier: through feature-based rules, and\n through the processing of multiple rule sets at one time. " (a ((href "https://en.wikipedia.org/wiki/Distinctive_feature")) "phonological features") " are proposed binary attributes of phonology that can be used to\n distinguish different phonemes. [+/- nasal] is the distinguishing\n feature in the minimal pair of phones [n][d]. the processing of\n multiple rule sets is accomplished in this project via the notion\n of an 'epoch.' at least one epoch must be defined, which takes as\n its input the initial lexicon. any additional epochs must have\n their input lexicons configured by the user, but they will default\n to running in sequence. what this allows is for 'snapshots' of\n lexicons between suites of rules (analogous to 'intermediate'\n phases in historical linguistics, such as old english>middle\n english>early modern english>modern english.) this also allows for\n comparisons of different rule sets or the simulation of sound\n changes across a family of related languages (analogous to vulgar\n latin>italo-western, vulgar-latin>eastern romance, vulgar\n latin>southern romance)") (p "both of these additional features are present, although the app is\n quite buggy and unreliable")) (section (hgroup (h2 "how does it work?") (p (em "i'll tell you what i remember")) (hr)) (p "i made this a few years ago, right after i first learning how to\n write web apps and so i used the tools that i knew a few years ago.\n this means that it's javascript! specifically, a react app, where\n all the fun processing stuff happens via the react hooks useReducer\n pattern. " (a ((href "https://github.com/sorrelbri/feature-change-applier/tree/sj_latl/src/reducers")) "all of the reducers are here")) (p "at the end of my meaningful work on the project, i started using a " (a ((href "https://nearley.js.org/")) "javascript earley parser called nearley") " as i started conceptualizing the tool as just one component in a\n larger suite of tools i hoped to create. the language part never got\n very far--writing a language is hard! writing a language when you've\n not had significant programming experience is hard! ill advised? " (a ((href "https://github.com/sorrelbri/feature-change-applier/blob/sj_latl/src/utils/latl/grammar.ne")) "there's the start of something like an ebnf grammar for the\n project")) (p "this project isn't done! and it never will be!"))) (footer (a ((href "https://git.bunk.computer/oxaliq/oxaliq.net/src/branch/main/source/settled1.scm")) "view source") (hr) (section (h5 "tagged") (ul ((class "tag-list")) (li ((class "tag-item")) (span ((class "hx-target")) (a ((href "/tagged/conlang") (hx-get "/hx/tagged/conlang") (hx-target "closest span.hx-target") (hx-swap "innerHTML")) "conlang"))) (li ((class "tag-item")) (span ((class "hx-target")) (a ((href "/tagged/tool") (hx-get "/hx/tagged/tool") (hx-target "closest span.hx-target") (hx-swap "innerHTML")) "tool"))))) (hr) (p ((class "doc-history")) (small "published: 2024-01-25T16:26:10")) (p ((class "license-info")) (small (a ((href "static/license/license.txt")) "license"))))) |