
LabCraft 推出 Nix 课程第六部分 Expressions,教你读懂 shell.nix
来源标题:What does Nix see when it reads a shell.nix?
LabCraft 的免费 Nix 课程发布第六部分 Expressions,接续 First Contact,带学员从单值进阶到像求值器一样读懂真实的 shell.nix。课程包含七个动手实验,覆盖值、字符串、列表、属性集、let、if、函数和 import,每个实验都要求先故意破坏再依赖。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
LabCraft 的 Nix 课程第六个免费章节“表达式”现已上线。它紧接在“初次接触”之后,带你从单个值进阶到像求值器那样读懂一份真实的 shell.nix。
在 nix repl 里输入 7 / 2,你会得到 3。去掉空格再输入,你得到的却是 /home/learner/7/2。 REPL 本身没出问题。Nix 读到的表达式和你原本想写的并不是同一个,而它返回的正是它读到的那个表达式的确切值。你原本想写的表达式和 Nix 实际解析出的表达式之间的这道鸿沟,正是本章要训练你去看清的东西,而关键在于在运行任何东西之前就看出它。
“表达式”是 LabCraft 的 Nix 课程新增的免费章节。课程里的第一条命令 nix shell nixpkgs#jq,其实已经求值了一个你从未见过的 Nix 表达式。在一台真实的 NixOS 机器上,通过七个动手实验,你直接上手这门语言:值、字符串、列表和属性集、let 和 if、函数,以及 import。每个实验都要求你先故意弄坏点什么,然后再依赖它。
这些实验把语言化作一个个问题,让你对着真实的求值器作答。为什么 a-b 是一个未定义变量,而不是一次减法?为什么一个没有 else 的 if 会在 Nix 求值任何东西之前就失败?为什么 nix eval --expr 会拒绝你自己主目录下的一个文件?每个答案都来自一个你亲手制造、阅读并修复的错误。
最后一个实验摆出的是你在仓库顶层会见到的那种 shell.nix。你逐行读它,预测它所描述的 shell 的名字,然后去问 Nix。求值那一个属性不会构建任何东西,所以唯一被考验的,就是你的阅读。
“表达式”在课程图谱中与“存储路径”并列:两者都只需要“初次接触”。你可以先学语言再学存储部分,也可以之后学,或者同时学。
开始 Nix 课程吧。在 Nix 打印之前,先预测它会打印什么。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。