import Spec.Courseware.Model.Primitives /-! # Element —— 课程内容的最小单位 一个 element = 一个 kind 标签 + 符合该 kind schema 的数据(ADR-0005)。 用依赖结构编码,使"数据必须匹配 kind"成为类型层面的事实,不是运行时校验。 -/ namespace Spec.Courseware variable (P : Primitives) /-- 一个 element 实例(ADR-0005)。data 的类型由 kind 决定,所以没法造出数据和 kind 不符的 element——schema 合规由类型保证。逐字稿、重点圈划这类跟具体 kind 强相关 的字段,落在该 kind 的 ElementData 里,不放在这个通用结构上。 -/ structure Element where /-- 这个 element 的 kind。 -/ kind : P.KindId /-- 符合 kind schema 的数据,类型随 kind 变。 -/ data : P.ElementData kind end Spec.Courseware