LP库的模块职责[#44]

  • (lp core):make-fragment、make-program、make-import、instantiate-program、instance-binding;fragment-*与program-*访问身份、源码、来源、导入和装配信息。没有Grove依赖。
  • (lp project):make-module-output、make-project、instantiate-project、project-binding;组织显式有序的Guile模块工程,检查项目内导出与模块依赖,不依赖Grove。
  • (lp check):check-equal返回核验值,check-samples返回通过的样本数,check-error返回指定的异常key。失败抛出异常,不生成文档。
  • (lp scribble):code-fragment保存完整定义的syntax、原文、范围、#:requires和#:initial-requires,声明时不执行定义。
  • (lp forester):fragment-tree、program-tree、project-tree产生内容树;program-output、source-output、project-output声明.scm输出,lp-artifacts生成文件;program-check关联已经核验的tree。lp-enrich-site从可缓存的IR建立程序关系导航。
  • (lp checked):program执行文章内表达式并展示;checked-example、checked-property、checked-error将核验写成Example tree。

Flora的project.scm把仓库根目录加入Guile模块搜索路径,在森林分析之前调用lp-enrich-site,并在renderers中登记lp-artifacts。导航来自片段、计划、输出和核验的普通数据,不依赖全局注册表。其他项目需要配置这些接入点,并为展示选择CSS;纯核心使用guile -L库所在目录即可加载。