|
| 1 | +{ |
| 2 | + caduceus: { |
| 3 | + book: { |
| 4 | + basics: { |
| 5 | + caduceus_changes: { |
| 6 | + "": "Caduceus 中的改动", |
| 7 | + "1": "我注意到某类$(l:patterns/meta#hexcasting:eval/cc)云运行技术/$的表现在近期发生了变化。$(br2)\ |
| 8 | + 跳转 iota 不再无法深入检验了:我现在可以看见组成它们的$(l:patterns/jump_manipulation)许多组件/$,但还没法把各组件分离出来。", |
| 9 | + "2": "而且,似乎使用跳转 iota 时 $(l:casting/mishaps)Iota 过多/$事故会频繁出现。小心不要陷入沉思了。", |
| 10 | + }, |
| 11 | + }, |
| 12 | + casting: { |
| 13 | + continuations: { |
| 14 | + "": "跳转入门", |
| 15 | + "1": "如同普通的操作需对$(l:casting/vectors)向量/$有所见地,在将我的新发现运用到极致之前,也应当更深入地了解跳转 iota(又称“续体”/“continuation”)。我收集了些有关本主题的“轻松读物”。", |
| 16 | + "2": { |
| 17 | + text: "首先是一篇百科条目,主要介绍“第一类续体”的概念;这一概念由跳转 iota 实现。条目中还讨论了“以当前续体调用”/“call/cc”运算符,它和$(l:patterns/meta#hexcasting:eval/cc)$(action)伊里斯之策略/$大致等价。", |
| 18 | + link_text: "维基百科", |
| 19 | + }, |
| 20 | + "3": { |
| 21 | + text: "然后是一篇博客,主要介绍“定界续体”/“delimited continuation”,还附带了详实的示例,可用$(hex)咒术/$重写以便练习。如果觉得理解$(l:patterns/delimcc#caduceus:eval/prompt)$(action)忒提斯之策略/$和$(l:patterns/delimcc#caduceus:eval/prompt)$(action)阿尔刻之策略/$有困难,可以读读这篇博客。", |
| 22 | + link_text: "博客", |
| 23 | + }, |
| 24 | + "4": { |
| 25 | + text: "最后,如果不担心在某种程度上打破第四面墙,可以阅读这篇概览文档,以了解自然解读我$(hex)咒术/$的具体方式。", |
| 26 | + link_text: "施法的原理", |
| 27 | + }, |
| 28 | + }, |
| 29 | + caduceus_mishaps: { |
| 30 | + "": "Caduceus 事故", |
| 31 | + "1": "本节记录了操纵跳转 iota 和使用定界跳转时会出现的事故。", |
| 32 | + no_prompt: { |
| 33 | + title: "阿尔刻未受限", |
| 34 | + text: "试图在$(l:patterns/delimcc#caduceus:eval/prompt)$(action)忒提斯之策略/$之外绘制$(l:patterns/delimcc#caduceus:eval/prompt)$(action)阿尔刻之策略/$。", |
| 35 | + }, |
| 36 | + }, |
| 37 | + }, |
| 38 | + patterns: { |
| 39 | + delimcc: { |
| 40 | + "": "定界跳转", |
| 41 | + "eval/prompt": "运行栈中的图案或图案列表,与$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$完全一致;区别在于,其内部的$(l:patterns/delimcc#caduceus:eval/control)$(action)阿尔刻之策略/$无法获取其外部的 iota。", |
| 42 | + "eval/control": { |
| 43 | + "1": "运行栈中的图案或图案列表,与$(l:patterns/meta#hexcasting:eval/cc)$(action)伊里斯之策略/$类似。必须绘制于$(l:patterns/delimcc#caduceus:eval/prompt)$(action)忒提斯之策略/$内部。", |
| 44 | + "2": "将在图案列表末尾和$(l:patterns/delimcc#caduceus:eval/prompt)$(action)忒提斯之策略/$闭合之间绘制的图案会$(italic)转移/$到调用 iota 中;压入栈中的也不会是跳转 iota,而是此调用 iota。$(br2)\ |
| 45 | + 执行到调用 iota 时,其中捕获的图案会如同对其使用$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$一样施放。如果不去执行调用 iota,即会跳过$(l:patterns/delimcc#caduceus:eval/prompt)$(action)忒提斯之策略/$闭合前剩余的图案。", |
| 46 | + }, |
| 47 | + }, |
| 48 | + jump_manipulation: { |
| 49 | + "": "跳转操作", |
| 50 | + "1": "就和我的$(hex)咒术/$能和$(l:casting/stack)栈/$交互一样,自然在处理我的$(hex)咒术/$时会使用自己的栈(由“帧”组成)。跳转 iota 中包含了该栈在某一时刻的快照,这些快照可由本节中的图案拆解和重构。$(br)\ |
| 51 | + 可惜,虽然调用 iota 和跳转 iota 很相似,但这些图案$(italic)无法/$作用于前者。", |
| 52 | + add: "移除栈顶跳转 iota,再将其中所有栈帧加到此时栈顶跳转 iota 的底部。", |
| 53 | + abs: "移除栈顶跳转 iota,再返回其中栈帧数。", |
| 54 | + splat: "移除栈顶跳转 iota,再为其中各栈帧返回一个仅包含该栈帧本身的跳转 iota。", |
| 55 | + construct: "移除栈顶跳转 iota,再将其顶部帧加到此时栈顶跳转 iota 的顶部。", |
| 56 | + deconstruct: "移除栈顶跳转 iota 的顶部帧,再返回一个仅包含该栈帧本身的跳转 iota。", |
| 57 | + jump_tags: { |
| 58 | + title: "跳转标签", |
| 59 | + text: "$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$并不是$(hex)咒术/$中唯一用来存储信息的位置。其实,我可以直接把 iota 藏到运行这一概念中去。我把这种技术叫作$(thing)跳转标签/$,部分其他文献则称其“续体标记”。$(br2)\ |
| 60 | + 不过,$(thing)跳转标签/$有一项局限:它们同一时刻只能持有单个 iota。和$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$不一样的是,它们就连列表都存不下。" |
| 61 | + }, |
| 62 | + "read/mark/local": "复制当前运行所对应的$(thing)跳转标签/$中存储的 iota,并压入栈顶。", |
| 63 | + "read/mark/iota": "和$(l:patterns/jump_manipulation#caduceus:read/mark/local)$(action)壶罐之精思/$类似,但会从跳转 iota 的顶部帧所对应的$(thing)跳转标签/$中读出。", |
| 64 | + "write/mark/local": { |
| 65 | + "1": "移除栈顶 iota,将其写入当前运行所对应的$(thing)跳转标签/$。$(br)\ |
| 66 | + 和$(l:patterns/readwrite#hexcasting:write/entity)$(action)编年史家之策略/$一样,不可向其写入真名。", |
| 67 | + "2": "在调用结尾使用$(l:patterns/jump_manipulation#caduceus:read/mark/local)$(action)壶罐之精思/$或$(l:patterns/jump_manipulation#caduceus:write/mark/local)$(action)壶罐之策略/$时应当小心。它们读取或写入的标签并不一定符合预期。", |
| 68 | + }, |
| 69 | + }, |
| 70 | + }, |
| 71 | + }, |
| 72 | + |
| 73 | + tooltip: { |
| 74 | + continuation: { |
| 75 | + "": "[Jump -> (%s)]", |
| 76 | + delimited: "[Call -> (%s)]", |
| 77 | + |
| 78 | + frame: { |
| 79 | + mark: { |
| 80 | + inline: "%s*", |
| 81 | + hover: "包含:%s", |
| 82 | + }, |
| 83 | + |
| 84 | + "caduceus:": { |
| 85 | + prompt: "Prompt", |
| 86 | + }, |
| 87 | + "hexcasting:": { |
| 88 | + evaluate: "Evaluate", |
| 89 | + foreach: "ForEach", |
| 90 | + end: "FinishEval", |
| 91 | + }, |
| 92 | + }, |
| 93 | + }, |
| 94 | + }, |
| 95 | + }, |
| 96 | + |
| 97 | + hexcasting: { |
| 98 | + action: { |
| 99 | + "caduceus:": { |
| 100 | + "eval/prompt": "忒提斯之策略", |
| 101 | + "eval/control": "阿尔刻之策略", |
| 102 | + "read/mark/local": "壶罐之精思", |
| 103 | + "read/mark/iota": "壶罐之纯化", |
| 104 | + "write/mark/local": "壶罐之策略", |
| 105 | + }, |
| 106 | + }, |
| 107 | + |
| 108 | + mishap: { |
| 109 | + no_prompt: "没有先使用忒提斯之策略", |
| 110 | + invalid_value: { |
| 111 | + class: { |
| 112 | + continuation: "一个跳转", |
| 113 | + continuation_mark: "一个有效的跳转标签", |
| 114 | + }, |
| 115 | + }, |
| 116 | + }, |
| 117 | + }, |
| 118 | +} |
0 commit comments