1 个不稳定版本
0.0.1 | 2019年8月16日 |
---|
#1684 in #language
505KB
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 = git@gitlab.com:the-language/the-language.git
fetch = +refs/heads/*:refs/remotes/origin/*
pushurl = git@gitlab.com:the-language/the-language.git
pushurl = git@github.com:the-language/the-language.git
[branch "master"]
remote = origin
merge = refs/heads/master
实验性特性
- 使
能否实现一个总是停机的解释器
成为一个未解决的数学问题 ...
使能否实现一个总是停机的解释器成为一个未解决的数学问题
- 直观上还能描述所有可计算算法。但与Turing机不等价。
值
:顶层是类似cons
null
等东西的表达式
。值
的定义同The Little Typer一书中中的定义。解释没有值
:允许解释器解释一部分或全部没有值
的表达式
为某种错误
(错误
是一种值
)。要求尽可能减小(这个尽可能
还没有被精确定义)被解释没有值
的表达式
的大小。没有值
:解释没有值
任意次后,如果不继续解释没有值
,不能化简为任何值
的表达式
。含有有没有值
无法判断的情况。- 一次
解释没有值
可以解释任意个表达式
。 - 暂时没有不可判断的情况。上面的"含有
有没有值
无法判断的情况。"暂时没有用处。 - 每一层
eval
都没有判定这个eval
本身一个表达式是否没有值
的函数。只判定被解释的表达式
在某个状态下(解释没有值
任意次后)是否没有值
。
可以接受的结果
- 一个
表达式
可能有多多个合理的值
。比如(letrec ([x (car y)] [y (car x)]) x)