豫言入门教程

这份教程带你从打印一行文字开始,逐步写出能处理列表、拆分模块和处理失败的豫言程序。你不需要先学文言文,也不需要事先掌握函数式编程。遇到 这样的关键字时,把它们当作编程语法学习即可;正文会用现代汉语解释它们的用途。

开始前的准备

本教程在豫言仓库内操作。请先按快速开始安装稳定种子并运行 make 豫构,得到当前版本的 yy豫构。后文的命令都在仓库根目录执行。

第一章会建立一个练习包。后续章节中标为“完整程序”的代码,都可以替换这个包的 入口。豫,用同一组命令构建和运行。只展示语法或函数定义的代码块是局部片段,需要放回相应的完整程序中使用。

学习顺序

章节 你将完成的事情
1. 运行第一个程序 创建练习包,打印文字,区分构建和运行
2. 名称、值与类型 定义整数和字符串,读懂类型错误
3. 定义和调用函数 接收参数,保存中间结果,计算平方和
4. 条件判断 根据比较结果选择返回值
5. 自定义数据类型 表示“没有来客”和“有姓名的来客”
6. 模式匹配与对子 区分数据情况,取出其中的值
7. 列表与递归处理 创建整数列表,逐项求和
8. 把函数作为参数 编写高阶函数,让同一实现适用于不同类型
9. 编写递归函数 分析停止条件,定义局部递归
10. 把程序拆成模块 导入另一个文件,明确函数来源
11. 文本与输入输出 拼接文本,控制输出顺序,读取一行输入
12. 缺失结果、异常与可变状态 表示除法失败,读取和修改引用
13. 完成一个列表处理程序 把映射、筛选和累计组合起来

建议边读边运行,每章至少改一次输入,并在运行前预测结果。练习附有预期结果或检查方法,便于判断自己是否理解。第十三章会把前面的知识组合成完整程序。

查阅资料

遇到某个语法形式需要查证时,查语言规范;需要了解包配置和构建选项时,查仓库包构建。教程负责解释用法和思路,规范负责给出精确定义。

仓库中还保留了《豫言赋》文言版及其示例目录。两版按主题对应,现代汉语版按教学需要独立编写。原《豫言赋》的十三篇体例受到《文言阴符》启发,本教程保留章节对应关系,方便切换阅读。