豫言入门教程
这份教程带你从打印一行文字开始,逐步写出能处理列表、拆分模块和处理失败的豫言程序。你不需要先学文言文,也不需要事先掌握函数式编程。遇到 乃、化、鉴 这样的关键字时,把它们当作编程语法学习即可;正文会用现代汉语解释它们的用途。
开始前的准备
本教程在豫言仓库内操作。请先按快速开始安装稳定种子并运行 make 豫构,得到当前版本的 yy豫构。后文的命令都在仓库根目录执行。
第一章会建立一个练习包。后续章节中标为“完整程序”的代码,都可以替换这个包的 入口。豫,用同一组命令构建和运行。只展示语法或函数定义的代码块是局部片段,需要放回相应的完整程序中使用。
学习顺序
| 章节 | 你将完成的事情 |
|---|---|
| 1. 运行第一个程序 | 创建练习包,打印文字,区分构建和运行 |
| 2. 名称、值与类型 | 定义整数和字符串,读懂类型错误 |
| 3. 定义和调用函数 | 接收参数,保存中间结果,计算平方和 |
| 4. 条件判断 | 根据比较结果选择返回值 |
| 5. 自定义数据类型 | 表示“没有来客”和“有姓名的来客” |
| 6. 模式匹配与对子 | 区分数据情况,取出其中的值 |
| 7. 列表与递归处理 | 创建整数列表,逐项求和 |
| 8. 把函数作为参数 | 编写高阶函数,让同一实现适用于不同类型 |
| 9. 编写递归函数 | 分析停止条件,定义局部递归 |
| 10. 把程序拆成模块 | 导入另一个文件,明确函数来源 |
| 11. 文本与输入输出 | 拼接文本,控制输出顺序,读取一行输入 |
| 12. 缺失结果、异常与可变状态 | 表示除法失败,读取和修改引用 |
| 13. 完成一个列表处理程序 | 把映射、筛选和累计组合起来 |
建议边读边运行,每章至少改一次输入,并在运行前预测结果。练习附有预期结果或检查方法,便于判断自己是否理解。第十三章会把前面的知识组合成完整程序。
查阅资料
遇到某个语法形式需要查证时,查语言规范;需要了解包配置和构建选项时,查仓库包构建。教程负责解释用法和思路,规范负责给出精确定义。
仓库中还保留了《豫言赋》文言版及其示例目录。两版按主题对应,现代汉语版按教学需要独立编写。原《豫言赋》的十三篇体例受到《文言阴符》启发,本教程保留章节对应关系,方便切换阅读。