1 个不稳定版本

0.1.0 2022 年 8 月 4 日

#7 in #describing

MIT/Apache

32KB
648

Iknow

支持 Rust 语法的一种自描述知识格式

动机

从能够描述其他知识格式的根知识格式中启动知识格式。

根知识结构的自描述

以下既是有效的 Rust 代码,也是 Iknow 格式。它描述了 Rust 中 Iknow 格式的内部表示。

"assets/self_root.txt"

enum Root {
    Ty(Arc<String>),
    Str(Arc<String>),
    F64(f64),
    Bool(bool),
    Avatar(Box<(Self, Self)>),
    Tup(Vec<Self>),
    Struct {name: Box<Self>, fields: Vec<Self>},
    Enum {name: Box<Self>, variants: Vec<Self>},
    Instance {class: usize, data: Option<Box<Self>>},
    InstanceTy {ty: Box<Self>, data: Option<Box<Self>>},
}

泛型版本

根知识格式可以描述其自身的泛型版本。这不是有效的 Rust 代码,因为在使用 . 注释自定义/泛型类型之前存在限制,例如 .T

"source/test/generics/gen_root.txt"

enum Root<.T> {
    Ty(Arc<String>),
    Val(.T),
    Avatar(Box<(Self<.T>, Self<.T>)>),
    Tup(Vec<Self<.T>>),
    Struct {name: Box<Self<.T>>, fields: Vec<Self<.T>>},
    Enum {name: Box<Self<.T>>, variants: Vec<Self<.T>>},
    Instance {class: usize, data: Option<Box<Self<.T>>>},
    InstanceTy {ty: Box<Self<.T>>, data: Option<Box<Self<.T>>>},
}

"Iknow" 名称的来源

在《星球大战》第五部电影中,Han Solo 被冷冻,而 Leia 在看。

Leia: "我爱你"

Han: "我知道"

依赖关系

~250KB