PLFA-zh
所属分类:编程语言基础
开发工具:Haskell
文件大小:0KB
下载次数:0
上传日期:2023-04-13 09:04:56
上 传 者:
sh-1993
说明: 《编程语言基础:Agda 描述》,Programming Language Foundations in Agda 中文版
(Programming Language Foundations in Agda)
文件列表:
PLFA-zh-dev/ (0, 2023-04-13)
PLFA-zh-dev/.dir-locals.el (391, 2023-04-13)
PLFA-zh-dev/.epubcheck.tsv (64, 2023-04-13)
PLFA-zh-dev/.htmlvalidate.json (359, 2023-04-13)
PLFA-zh-dev/.htmlvalidateignore (86, 2023-04-13)
PLFA-zh-dev/.node-version (3, 2023-04-13)
PLFA-zh-dev/.nojekyll (0, 2023-04-13)
PLFA-zh-dev/.pre-commit-config.yaml (738, 2023-04-13)
PLFA-zh-dev/.python-version (7, 2023-04-13)
PLFA-zh-dev/.ruby-version (6, 2023-04-13)
PLFA-zh-dev/.vscode/ (0, 2023-04-13)
PLFA-zh-dev/.vscode/tasks.json (794, 2023-04-13)
PLFA-zh-dev/CONTRIBUTING.md (9421, 2023-04-13)
PLFA-zh-dev/Gemfile (116, 2023-04-13)
PLFA-zh-dev/LICENSE (18664, 2023-04-13)
PLFA-zh-dev/Makefile (3819, 2023-04-13)
... ...
---
title : 使用说明
permalink: /GettingStarted/
translators : ["Rongxiao Fu", "Oling Cat"]
---
[![Build Status][plfa-badge-status-svg]][plfa-badge-status-url]
[![pre-commit.ci status][pre-commit-status-svg]][pre-commit-status-url]
[![Release Version][plfa-badge-version-svg]][plfa-badge-version-url]
[![agda][agda-badge-version-svg]][agda-badge-version-url]
[![standard-library][agda-stdlib-version-svg]][agda-stdlib-version-url]
## 读者指南 {#getting-started-for-readers}
《编程语言基础:Agda 语言描述》的使用方法与《Programming Language Foundations in Agda》一致。
**本书可访问 [PLFA-zh][plfa-zh] 在线阅读。**
**要参与翻译,请先阅读[翻译规范][trans-spec]。**
你可以[在线阅读][plfa-zh] PLFA,无需安装任何东西。
然而,如果你想要交互式编写代码或完成习题,那么就需要几样东西:
- macOS 上:[XCode 命令行工具](https://github.com/Agda-zh/PLFA-zh/blob/master/#on-macos-install-the-xcode-command-line-tools)
- [Git](https://github.com/Agda-zh/PLFA-zh/blob/master/#install-git)
- [GHC and Cabal](https://github.com/Agda-zh/PLFA-zh/blob/master/#install-ghc-and-cabal)
- [Agda](https://github.com/Agda-zh/PLFA-zh/blob/master/#install-agda)
- [Agda 标准库](https://github.com/Agda-zh/PLFA-zh/blob/master/#install-plfa-and-the-agda-standard-library)
- [PLFA](https://github.com/Agda-zh/PLFA-zh/blob/master/#install-plfa-and-the-agda-standard-library)
PLFA 只针对特定的 Agda 和 标准库版本进行了测试,相应版本已在前面的徽章中指明。
Agda 和标准库变化得十分迅速,而这些改变经常搞坏 PLFA,因此使用旧版或新版通常会出现问题。
Agda 和 Agda 标准库有多个版本。如果你使用了包管理器(如 Homebrew 或者 Debian
apt),Agda 的版本可能不是最新的。除此之外,Agda
仍然在活跃的开发之中,如果你从 GitHub
上安装了开发版本,开发者的新变更也可能让这里的代码出现问题。
因此,使用上述版本的 Agda 和 Agda 标准库很重要。
### macOS 平台:安装 XCode 命令行工具{#on-macos-install-the-xcode-command-line-tools}
在 macOS 平台,你需要安装 [XCode 命令行工具][xcode]。
在大多数 macOS 系统版本上,你可以用下面的命令安装它们:
```bash
xcode-select --install
```
### 安装 Git {#install-git}
你可以使用下面的命令来检查你是否安装了 Git。
```bash
git --version
```
如果你没有 Git,请参阅 [Git 下载页面][git]。
### 安装 GHC 和 Cabal {#install-ghc-and-cabal}
Agda 是用 Haskell 写成的,所以为了安装它我们需要 _Glorious Haskell Compiler_
和它的包管理器 _Cabal_。PLFA 应该在任何 >=8.10 的 GHC 版本下运行,在 8.10 和 9.2 版本下完成测试。我们建议使用 [ghcup][ghcup] 来安装两者。
在 `ghcup` 安装好之后,输入下列命令:
```bash
ghcup install ghc 9.2.4
ghcup install cabal recommended
ghcup set ghc 9.2.4
ghcup set cabal recommended
```
或使用 `ghcup tui` 来『设置』合适的工具。
### 安装 Agda {#install-agda}
安装 Agda 最简单的方法是通过 Cabal。PLFA 使用 Agda 版本
2.6.3。运行下面的命令:
```bash
cabal update
cabal install Agda-2.6.3
```
这一步会消耗很长时间和很多内存来完成。
如果你遇到了问题,或者想参考替代的方法,可参阅 [Agda 安装指引][agda-readthedocs-installation]。
如果你愿意,你可以[测试 Agda 是否已正确安装][agda-readthedocs-hello-world]。
### 安装 PLFA 和 Agda 标准库 {#install-plfa-and-the-agda-standard-library}
我们建议您使用下面的命令把 PLFA 安装至你的家目录:
```bash
git clone --depth 1 --recurse-submodules --shallow-submodules https://github.com/plfa/plfa.github.io plfa
```
PLFA 包括了所需要的 Agda 标准库版本,如果你在克隆时使用了 `--recurse-submodule` 选项,你在 `standard-library` 文件夹中已经有了 Agda 标准库!
最后,我们需要让 Agda 知道如何找到标准库。
你需要两个配置文件,一个用于指定库的路径,一个用于指定默认载入的库。
在 macOS 和 Unix 上,如果 PLFA
已经安装至家目录,且你没有希望保存的配置文件,运行下面的命令:
```bash
mkdir -p ~/.agda
cp ~/plfa/data/dotagda/* ~/.agda
```
这条命令提供了 Agda 标准库,也让 PLFA 可以当作一个 Agda 库来使用。
否则,你需要手动编辑相关的配置文件。两者都位于 `AGDA_DIR` 目录下。
在 UNIX 和 macOS 平台,`AGDA_DIR` 默认为
`~/.agda`。在 Windows 平台,`AGDA_DIR` 一般默认为 `%AppData%\agda`,而
`%AppData%` 默认为 `C:\Users\USERNAME\AppData\Roaming`。
- 如果 `AGDA_DIR` 文件夹不存在,创建它。
- 在 `AGDA_DIR` 中,创建一个纯文本文件 `libraries`,内容为
`/path/to/standard-library.agda-lib` (即上文中记录的路径)。
这个文件让 Agda 知道有一个名为 `standard-library` 的库可用。
- 在 `AGDA_DIR` 中,创建一个纯文本文件 `defaults`,内容__仅__为 `standard-library` 这一行。
- 如果你想完成 的习题,或者想导入书中的模块,
那么需要将 PLFA 设置为 Agda 库。如果 `PLFA` 是 PLFA
的根目录,完成此设置需要将 `PLFA/src/plfa.agda-lib` 作为单独的一行添加到
`AGDA_DIR/libraries`,并将 `plfa` 作为单独的一行添加到 `AGDA_DIR/defaults`。
关于放置标准库的更多信息可以参阅 Agda 文档中的[库管理][agda-readthedocs-package-system]。
## 设置 Agda 的编辑器
### Emacs
推荐的 Agda 编辑器是 Emacs。安装 Emacs 可以用下面的方法:
- __UNIX 平台__:包管理器中的 Emacs 应该可以使用(只要它的版本比较新),[GNU
Emacs 下载页面][emacs]也有最近发布版本的链接。
- __MacOS 平台__:推荐的 Emacs 是 [Aquamacs][aquamacs],但是 GNU Emacs
也可以通过 Homebrew 或者 MacPorts 安装。参阅 [GNU Emacs
下载页面][emacs]中的指示。
- __Windows 平台__:参阅 [GNU Emacs 下载页面][emacs]中的指示。
确保你可以用你安装的版本打开、编辑、保存文件。GNU Emacs 网站上的 [Emacs
向导][emacs-tour]描述了如果打开 Emacs 安装中的教程。
Agda 自带了 Emacs 编辑器支持,如果你安装了 Agda,运行下面的命令来配置 Emacs:
```bash
agda-mode setup
agda-mode compile
```
如果你已经是 Emacs 用户,并有自己的设置,你会注意到 `setup` 命令向你的 `.emacs`
文件中追加了配置,来配合你已有的设置。
加上 `agda-mode`。Agda 自带了 `agda-mode`,
因此如果你已经安装了 Agda,那么之需要运行以下命令就能配置好 `agda-mode` 了:
#### 检查 `agda-mode` 是否正确安装
打开之前创建的 `nats.agda` 文件,使用 [`C-c C-l`][agda-readthedocs-emacs-notation]
来载入和类型检查这个文件。
#### 在 Emacs 中自动加载 `agda-mode`
从版本 2.6.0 开始,Agda 支持 Markdown 风格的文学编程,文件使用 `.lagda.md` 扩展名。
该扩展名的一个问题就是 Emacs 默认会进入 Markdown 编辑模式。
而为了让 `agda-mode` 在你打开 `.agda` 或 `.lagda.md` 文件时自动加载,
请将以下内容放到你的 Emacs 配置文件中:
```elisp
;; auto-load agda-mode for .agda and .lagda.md
(setq auto-mode-alist
(append
'(("\\.agda\\'" . agda2-mode)
("\\.lagda.md\\'" . agda2-mode))
auto-mode-alist))
```
如果你配置中已有了改变 `auto-mode-alist`
的设置,将上述内容放置在已有的设置__之后__,或者将其与已有设置合并(如果你对
Emacs Lisp 足够了解)。
Emacs 的配置文件通常位于 `~/.emacs` 或 `~/.emacs.d/init.el`,然而
Aquamacs 用户需要将启动设置放到位于 `~/Library/Preferences/Aquamacs Emacs/Preferences`
的 `Preferences.el` 文件中。
对于 Windows 平台,请参阅 [GNU Emacs 文档][emacs-home] 来寻找配置文件的位置。
#### 可选:在 Emacs 中使用 Mononoki 字体
Agda 中的很多重要符号是用 Unicode 来表示的,因此用来显示和编辑 Agda
的字体需要正确地显示这些符号。最重要的是你使用的字体需要有好的 Unicode
字符支持。我们推荐 [Mononoki][font-mononoki],
其他的备选字体有 [Source Code Pro][font-sourcecodepro]、
[DejaVu Sans Mono][font-dejavusansmono] 和 [FreeMono][font-freemono]。
你可以直接从[此网站][font-mononoki] 下载并安装
Mononoki。对于大多数系统来说,安装字体只是简单的下载 `.otf` 或者 `.ttf` 文件。
如果你的包管理器提供了 Mononoki 的包,那样可能更加简单。
例如,macOS 的 Homebrew 提供了
`font-mononiki` 包;Debian 的 APT 提供了 `fonts-mononoki` 包。
将下面的内容加入 Emacs 配置文件,可以把 Mononoki 设置为 Emacs 的默认字体:
```elisp
;; default to mononoki
(set-face-attribute 'default nil
:family "mononoki"
:height 120
:weight 'normal
:width 'normal)
```
#### 在 Emacs 中使用 `agda-mode`
要加载文件并对其执行类型检查,请使用 [`C-c C-l`][agda-readthedocs-emacs-notation]。
Agda 的编辑是通过使用「[洞][agda-readthedocs-holes]」来交互的,它表示程序中尚未填充的片段。
如果用问号作为表达式,并用 `C-c C-l` 加载缓冲区,Agda 会将问号替换为一个「洞」。
当光标在洞中时,你可以做以下这些事情:
- `C-c C-c`: 分项(询问变量名,**c**ase)
- `C-c C-空格`:填洞
- `C-c C-r`:用构造子精化(**r**efine)
- `C-c C-a`:自动填洞(**a**utomatic)
- `C-c C-,`:目标类型和上下文
- `C-c C-.`:目标类型,上下文,以及推断的类型
更多细节请见 [emacs-mode 文档][agda-readthedocs-emacs-mode]。
如果你想在 Agda 代码的侧边而非底栏查看信息,那么可以这样做:
- 打开 Agda 文件并按 `C-c C-l`;
- 按 `C-x 1` 来仅显示当前 Agda 文件;
- 按 `C-x 3` 来垂直分割窗口;
- 将光标移动到右侧窗口;
- 按 `C-x b` 并输入「Agda information」切换到该缓冲区。
现在,Agda 的错误消息将会在代码右侧显示,而非被挤压在底部的狭小空间里。
#### 在 Emacs 中使用 `agda-mode` 输入 Unicode 字符
当你书写 Agda 代码时,你需要输入标准键盘上没有的字符。Emacs
的「Agda-mode」定义了字符翻译来让这件事更容易:当你输入特定普通字符的序列时,Emacs
会在 Agda 文件中使用对应的特殊字符来替换。
例如,我们可以在之前的 `.agda` 测试文件中加入一条注释。
比如说,我们想要加入下面的注释:
```agda
{- I am excited to type and → and ≤ and ≡ !! -}
```
前几个字符都是普通字符,我们可以如往常的方式输入它们……
```agda
{- I am excited to type
```
在最后一个空格之后,我们无法在键盘上找到 这个键。这个字符的输入序列是四个字符
`\all`,所以我们输入这四个字符,当我们完成时,Emacs 会把它们替换成我们想要的……
```agda
{- I am excit ... ...
近期下载者:
相关文件:
收藏者: