Введение в логос
badtЛогос построен таким образом, что вся логика скрывается в пунктуации.
Возможная пунктуация:
ТРОИЦА := :: -> ЧТО ГДЕ КОГДА = ≠ ? ! ОСТАЛЬНЫЕ < > <= >= + - * / ^ % & ~ |
Диалект является описанием символов и пропозиций — грамматикой языковой игры. Из диалектов строится представление о мире, как дискурсе. Диалекты далее можно компоновать для описания более сложных языковых игр.
Элементарные пропозиции: void, iota
Атомарные пропозиции: bool, true, false, int, rune, string (выводятся из элементарных)
:= значит сказать: дать новое название уже возможной структуре. Оператор поддерживает два возможных синтаксиса:
// Прим. АП - атомарная пропозиция // // Прямое определение <АП> := <AП> // Структурное определение <АП> := <Символ_1> <Символ_2> <Cимвол_3> // Толкование пропозиции <АП> в контексте := //..несколько строк определения..
:: значит показать: такие символы, о которых нельзя ничего сказать. Взамен на описание структуры, символ определяется тем, что можно о нем сказать — семантикой (списком пропозиций, в которых он встречается).
// Список пропозиций в формате // // <пропозиция> -> значение <АП> :: определенный <АП> контекст -> одно <АП> иное выражение -> другое //..список пропозиций..
–> значит следует: знак импликации, "если a, то b". Используется для определения значения пропозиций. В таких языках программирования, как Python, вместо этого используется просто присвоение формы a = b, но мне показалось что это немного вздор.
Если слева от стрелки ничего нет (или стоит точка), то импликация устанавливает значение определяемой пропозиции.
not x := x := bool -> x ? true -> false false -> true y := int y -> 42
Остальные операторы достаточно тривиальны: = и ≠ проверяют на эквивалентность как структуру сравниваемых пропозиций, так и их значения.
Знак вопроса ? на самом деле же намного интереснее! Он выполняет две основные роли: в качестве суффикса (одного из слов), явно указывает на булевое значение пропозиции, а так же может быть символьным предикатом для йота-пропозиций (сама по себе йота не является пропозицией).
Task := iota Todo, InProgress, Done := Status // только в -> bool пропозициях можно // t done? := t := Task -> t = Done format t := t := Task // <йота> ? {многострочные варианты} -> t ? Todo -> "TODO" InProgress -> "IN PROGRESS" Done -> "DONE"