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 = 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
实验性特性
- 使
能否实现一个总是停机的解释器成为未解决的数学问题 ...
使能否实现一个总是停机的解释器成为未解决的数学问题
- 直观上还可以描述所有可计算算法。但与图灵机不等价。
值:顶层是类似consnull等的表达式。值的定义同The Little Typer一书中中的定义。解释没有值:允许解释器解释一部分或全部没有值的表达式为某种错误(错误是一种值)。要求尽可能减少(这个尽可能还没有被精确定义)被解释没有值的表达式的大小。没有值:解释没有值任意次之后,如果不能继续解释没有值,不能化简为任何值的表达式。含有有没有值无法判定的情况。- 一次
解释没有值可以解释任意个表达式。 - 暂时没有不可判定的情况。上面的"含有
有没有值无法判定的情况"暂时没有用处。 - 每一层
eval都没有判定这个eval本身一个表达式是否没有值的函数。只判定被解释的表达式在某个状态下(解释没有值任意次之后)是否没有值。
可接受的结果
- 一个
表达式可能有多個合理的值。比如(letrec ([x (car y)] [y (car x)]) x)