1 个不稳定版本
0.1.0 | 2019年8月15日 |
---|
#1034 在 开发工具
380KB
4K SLoC
The Language
位于 https://gitlab.com/the-language/the-language
名称
- 标识
TheLanguage
文档
https://the-language.gitlab.io/the-language/
编译、运行、测试
可以使用./builder-containers/docker/run.sh
或zaoqi/the-language-builder
在Docker中编译。
Docker Hub: https://hub.docker.com/r/zaoqi/the-language-builder
- 编译
./make.sh
- 测试
./test.sh
编译、运行、测试的依赖
见core/pure/README.md或builder-containers/docker/Dockerfile
.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
precomposeunicode = true
[remote "origin"]
url = [email protected]:the-language/the-language.git
fetch = +refs/heads/*:refs/remotes/origin/*
pushurl = [email protected]:the-language/the-language.git
pushurl = [email protected]:the-language/the-language.git
[branch "master"]
remote = origin
merge = refs/heads/master
实验性特性
- 使
能否实现一个总是停机的解释器
成为未解决的数学问题 ...
使能否实现一个总是停机的解释器成为未解决的数学问题
- 直观上还可以描述所有可计算算法。但与图灵机不等价。
值
:顶层是类似cons
null
等的表达式
。值
的定义同The Little Typer一书中中的定义。解释没有值
:允许解释器解释一部分或全部没有值
的表达式
为某种错误
(错误
是一种值
)。要求尽可能减少(这个尽可能
还没有被精确定义)被解释没有值
的表达式
的大小。没有值
:解释没有值
任意次之后,如果不能继续解释没有值
,不能化简为任何值
的表达式
。含有有没有值
无法判定的情况。- 一次
解释没有值
可以解释任意个表达式
。 - 暂时没有不可判定的情况。上面的"含有
有没有值
无法判定的情况"暂时没有用处。 - 每一层
eval
都没有判定这个eval
本身一个表达式是否没有值
的函数。只判定被解释的表达式
在某个状态下(解释没有值
任意次之后)是否没有值
。
可接受的结果
- 一个
表达式
可能有多個合理的值
。比如(letrec ([x (car y)] [y (car x)]) x)