Введение в логос
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"