diff --git a/inform7/Figures/memory-diagnostics.txt b/inform7/Figures/memory-diagnostics.txt index 57a75002f..367a57844 100644 --- a/inform7/Figures/memory-diagnostics.txt +++ b/inform7/Figures/memory-diagnostics.txt @@ -1,6 +1,6 @@ Total memory consumption was 120225K = 117 MB - ---- was used for 2008028 objects, in 360803 frames in 0 x 800K = 0K = 0 MB: + ---- was used for 2008032 objects, in 360807 frames in 0 x 800K = 0K = 0 MB: 33.9% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes 19.8% text_stream_array 4342 x 100 = 434200 objects, 24454144 bytes @@ -26,8 +26,8 @@ Total memory consumption was 120225K = 117 MB 0.8% id_body 941 objects, 1076504 bytes 0.8% adjective_meaning 202 objects, 1000304 bytes 0.7% excerpt_meaning 3100 objects, 967200 bytes - 0.7% production 3875 objects, 899000 bytes - 0.7% ptoken 8390 objects, 872560 bytes + 0.7% production 3876 objects, 899232 bytes + 0.7% ptoken 8393 objects, 872872 bytes 0.7% grammatical_usage 3611 objects, 866640 bytes 0.6% individual_form 2561 objects, 860496 bytes 0.6% inter_schema_node 8897 objects, 854112 bytes @@ -255,5 +255,5 @@ Total memory consumption was 120225K = 117 MB ---- code generation workspace for objects 1336 bytes in 4 claims 0.2% emitter array storage 279776 bytes in 1995 claims --147.-7% was overhead - -181850144 bytes = -177588K = -173 MB +-147.-7% was overhead - -181850688 bytes = -177588K = -173 MB diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt index c82b08cbb..2ffc94857 100644 --- a/inform7/Figures/timings-diagnostics.txt +++ b/inform7/Figures/timings-diagnostics.txt @@ -1,33 +1,37 @@ 100.0% in inform7 run - 68.5% in compilation to Inter - 48.0% in //Sequence::undertake_queued_tasks// - 4.5% in //MajorNodes::pre_pass// - 3.4% in //MajorNodes::pass_1// - 1.7% in //ImperativeDefinitions::assess_all// + 68.0% in compilation to Inter + 48.1% in //Sequence::undertake_queued_tasks// + 4.6% in //MajorNodes::pre_pass// + 3.3% in //MajorNodes::pass_1// + 1.8% in //ImperativeDefinitions::assess_all// 1.7% in //RTPhrasebook::compile_entries// 1.5% in //RTKindConstructors::compile// - 1.1% in //Sequence::lint_inter// - 0.5% in //ImperativeDefinitions::compile_first_block// + 1.0% in //Sequence::lint_inter// 0.5% in //MajorNodes::pass_2// - 0.5% in //Sequence::undertake_queued_tasks// 0.5% in //World::stage_V// - 0.3% in //Sequence::undertake_queued_tasks// - 0.1% in //CompletionModule::compile// - 0.1% in //InferenceSubjects::emit_all// - 0.1% in //RTKindConstructors::compile_permissions// + 0.4% in //ImperativeDefinitions::compile_first_block// + 0.4% in //Sequence::undertake_queued_tasks// + 0.4% in //Sequence::undertake_queued_tasks// + 0.2% in //CompletionModule::compile// + 0.2% in //InferenceSubjects::emit_all// + 0.2% in //RTKindConstructors::compile_permissions// 0.1% in //Task::make_built_in_kind_constructors// + 0.1% in //Understand::traverse// 0.1% in //World::stages_II_and_III// - 2.6% not specifically accounted for - 28.7% in running Inter pipeline - 10.3% in step 14/15: generate inform6 -> auto.inf - 7.6% in step 5/15: load-binary-kits - 6.3% in step 6/15: make-synoptic-module + 2.0% not specifically accounted for + 29.1% in running Inter pipeline + 10.2% in step 14/15: generate inform6 -> auto.inf + 7.7% in step 5/15: load-binary-kits + 6.7% in step 6/15: make-synoptic-module 1.5% in step 9/15: make-identifiers-unique - 0.3% in step 12/15: eliminate-redundant-operations - 0.3% in step 4/15: compile-splats - 0.3% in step 7/15: shorten-wiring + 0.5% in step 4/15: compile-splats + 0.4% in step 12/15: eliminate-redundant-operations + 0.4% in step 7/15: shorten-wiring 0.3% in step 8/15: detect-indirect-calls - 0.1% in step 11/15: eliminate-redundant-labels - 1.2% not specifically accounted for - 2.2% in supervisor + 0.2% in step 11/15: eliminate-redundant-labels + 0.1% in step 10/15: reconcile-verbs + 0.1% in step 2/15: parse-insertions + 0.1% in step 3/15: resolve-conditional-compilation + 0.4% not specifically accounted for + 2.3% in supervisor 0.4% not specifically accounted for diff --git a/inform7/Tests/Test Makes/Eg4-C/textual.txt b/inform7/Tests/Test Makes/Eg4-C/textual.txt index 83e6d70f6..a79b49888 100644 --- a/inform7/Tests/Test Makes/Eg4-C/textual.txt +++ b/inform7/Tests/Test Makes/Eg4-C/textual.txt @@ -1516,7 +1516,7 @@ package main _plain constant (int32) relation_id = 29 __translation="relation_id_U23" constant (text) ^term0 = "object" constant (text) ^term1 = "number" - constant (int32) ^at = 14881 + constant (int32) ^at = 14885 package relation24 _relation constant (int32) relation_id = 30 __translation="relation_id_U24" constant (text) ^name = "same-variable-initial-value-as" @@ -5581,7 +5581,7 @@ package main _plain constant (text) ^name = "dynamic memory allocation" constant (text) ^printed_name = "dynamic memory allocation option [8192]" constant (int32) ^source_file_scoped = 0 - constant (int32) ^at = 15532 + constant (int32) ^at = 15536 constant ^used_in_extension = /main/basic_inform_by_graham_nelson/extension_id constant (int32) ^minimum = 8192 package use_option16 _use_option @@ -5651,8 +5651,8 @@ package main _plain constant (text) ^name = "German language" constant (text) ^printed_name = "German language" constant (text) ^abbreviation = "GL" - constant (int32) ^at = 15778 - constant (int32) ^kind_set_at = 15778 + constant (int32) ^at = 15782 + constant (int32) ^kind_set_at = 15782 constant ^value = I_german_language constant (text) ^index_kind = "natural language" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > natural language" @@ -5667,8 +5667,8 @@ package main _plain constant (text) ^name = "Italian language" constant (text) ^printed_name = "Italian language" constant (text) ^abbreviation = "IL" - constant (int32) ^at = 15778 - constant (int32) ^kind_set_at = 15778 + constant (int32) ^at = 15782 + constant (int32) ^kind_set_at = 15782 constant ^value = I_italian_language constant (text) ^index_kind = "natural language" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > natural language" @@ -5683,8 +5683,8 @@ package main _plain constant (text) ^name = "English language" constant (text) ^printed_name = "English language" constant (text) ^abbreviation = "EL" - constant (int32) ^at = 15778 - constant (int32) ^kind_set_at = 15778 + constant (int32) ^at = 15782 + constant (int32) ^kind_set_at = 15782 constant ^value = I_english_language constant (text) ^index_kind = "natural language" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > natural language" @@ -5700,8 +5700,8 @@ package main _plain constant (text) ^name = "French language" constant (text) ^printed_name = "French language" constant (text) ^abbreviation = "FL" - constant (int32) ^at = 15778 - constant (int32) ^kind_set_at = 15778 + constant (int32) ^at = 15782 + constant (int32) ^kind_set_at = 15782 constant ^value = I_french_language constant (text) ^index_kind = "natural language" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > natural language" @@ -5716,8 +5716,8 @@ package main _plain constant (text) ^name = "Swedish language" constant (text) ^printed_name = "Swedish language" constant (text) ^abbreviation = "SL" - constant (int32) ^at = 15778 - constant (int32) ^kind_set_at = 15778 + constant (int32) ^at = 15782 + constant (int32) ^kind_set_at = 15782 constant ^value = I_swedish_language constant (text) ^index_kind = "natural language" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > natural language" @@ -5732,8 +5732,8 @@ package main _plain constant (text) ^name = "Spanish language" constant (text) ^printed_name = "Spanish language" constant (text) ^abbreviation = "SL" - constant (int32) ^at = 15778 - constant (int32) ^kind_set_at = 15778 + constant (int32) ^at = 15782 + constant (int32) ^kind_set_at = 15782 constant ^value = I_spanish_language constant (text) ^index_kind = "natural language" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > natural language" @@ -5753,7 +5753,7 @@ package main _plain constant ^run_fn = /main/basic_inform_by_graham_nelson/rulebooks/rulebook1/run_fn/call constant (text) ^index_id = "startup" constant (text) ^focus = "Startup rulebook" - constant (int32) ^at = 15817 + constant (int32) ^at = 15821 constant (int32) ^automatically_generated = 0 package outcome1 _rulebook_outcome constant (text) ^text = "allow startup" @@ -5770,7 +5770,7 @@ package main _plain constant ^run_fn = /main/basic_inform_by_graham_nelson/rulebooks/rulebook2/run_fn/call constant (text) ^index_id = "shutdown" constant (text) ^focus = "Shutdown rulebook" - constant (int32) ^at = 15839 + constant (int32) ^at = 15843 constant (int32) ^automatically_generated = 0 constant (int32) rulebook_id = 1 __translation="rulebook_id_U2" package rulebook_outcome1 _outcome @@ -5788,7 +5788,7 @@ package main _plain constant (text) ^printed_name = "before starting the virtual machine rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity1/before_rb/run_fn/call constant (text) ^focus = "before starting the virtual machine rulebook" - constant (int32) ^at = 31941 + constant (int32) ^at = 31945 constant (int32) ^automatically_generated = 1 constant (int32) rulebook_id = 2 __translation="rulebook_id_U3" package for_rb _rulebook @@ -5834,7 +5834,7 @@ package main _plain constant (text) ^printed_name = "for starting the virtual machine rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity1/for_rb/run_fn/call constant (text) ^focus = "for starting the virtual machine rulebook" - constant (int32) ^at = 31992 + constant (int32) ^at = 31996 constant (int32) ^automatically_generated = 1 package entry1 _rulebook_entry constant ^rule = /main/basic_inform_by_graham_nelson/rules/rule1/anchor @@ -5852,13 +5852,13 @@ package main _plain constant (text) ^printed_name = "after starting the virtual machine rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity1/after_rb/run_fn/call constant (text) ^focus = "after starting the virtual machine rulebook" - constant (int32) ^at = 32043 + constant (int32) ^at = 32047 constant (int32) ^automatically_generated = 1 constant (int32) rulebook_id = 4 __translation="rulebook_id_U5" constant (int32) activity_id = 0 __translation="activity_id_U1" constant V1_starting_the_virtual_mach = activity_id __translation="V1_starting_the_virtual_mach" constant (text) ^name = "starting the virtual machine" - constant (int32) ^at = 15846 + constant (int32) ^at = 15850 constant ^before_rulebook = /main/basic_inform_by_graham_nelson/activities/activity1/before_rb/rulebook_id constant ^for_rulebook = /main/basic_inform_by_graham_nelson/activities/activity1/for_rb/rulebook_id constant ^after_rulebook = /main/basic_inform_by_graham_nelson/activities/activity1/after_rb/rulebook_id @@ -5875,7 +5875,7 @@ package main _plain constant (text) ^printed_name = "before printing the name rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity2/before_rb/run_fn/call constant (text) ^focus = "before printing the name rulebook" - constant (int32) ^at = 32120 + constant (int32) ^at = 32124 constant (int32) ^automatically_generated = 1 constant (int32) rulebook_id = 5 __translation="rulebook_id_U6" package for_rb _rulebook @@ -5921,7 +5921,7 @@ package main _plain constant (text) ^printed_name = "for printing the name rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity2/for_rb/run_fn/call constant (text) ^focus = "for printing the name rulebook" - constant (int32) ^at = 32162 + constant (int32) ^at = 32166 constant (int32) ^automatically_generated = 1 package entry1 _rulebook_entry constant ^rule = /main/basic_inform_by_graham_nelson/rules/rule2/anchor @@ -5939,13 +5939,13 @@ package main _plain constant (text) ^printed_name = "after printing the name rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity2/after_rb/run_fn/call constant (text) ^focus = "after printing the name rulebook" - constant (int32) ^at = 32204 + constant (int32) ^at = 32208 constant (int32) ^automatically_generated = 1 constant (int32) rulebook_id = 7 __translation="rulebook_id_U8" constant (int32) activity_id = 1 __translation="activity_id_U2" constant V2_printing_the_name = activity_id __translation="V2_printing_the_name" constant (text) ^name = "printing the name" - constant (int32) ^at = 15886 + constant (int32) ^at = 15890 constant ^before_rulebook = /main/basic_inform_by_graham_nelson/activities/activity2/before_rb/rulebook_id constant ^for_rulebook = /main/basic_inform_by_graham_nelson/activities/activity2/for_rb/rulebook_id constant ^after_rulebook = /main/basic_inform_by_graham_nelson/activities/activity2/after_rb/rulebook_id @@ -5962,7 +5962,7 @@ package main _plain constant (text) ^printed_name = "before printing the plural name rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity3/before_rb/run_fn/call constant (text) ^focus = "before printing the plural name rulebook" - constant (int32) ^at = 32277 + constant (int32) ^at = 32281 constant (int32) ^automatically_generated = 1 constant (int32) rulebook_id = 8 __translation="rulebook_id_U9" package for_rb _rulebook @@ -6008,7 +6008,7 @@ package main _plain constant (text) ^printed_name = "for printing the plural name rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity3/for_rb/run_fn/call constant (text) ^focus = "for printing the plural name rulebook" - constant (int32) ^at = 32328 + constant (int32) ^at = 32332 constant (int32) ^automatically_generated = 1 package entry1 _rulebook_entry constant ^rule = /main/basic_inform_by_graham_nelson/rules/rule3/anchor @@ -6026,13 +6026,13 @@ package main _plain constant (text) ^printed_name = "after printing the plural name rulebook" constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity3/after_rb/run_fn/call constant (text) ^focus = "after printing the plural name rulebook" - constant (int32) ^at = 32379 + constant (int32) ^at = 32383 constant (int32) ^automatically_generated = 1 constant (int32) rulebook_id = 10 __translation="rulebook_id_U11" constant (int32) activity_id = 2 __translation="activity_id_U3" constant V3_printing_the_plural_name = activity_id __translation="V3_printing_the_plural_name" constant (text) ^name = "printing the plural name" - constant (int32) ^at = 15929 + constant (int32) ^at = 15933 constant ^before_rulebook = /main/basic_inform_by_graham_nelson/activities/activity3/before_rb/rulebook_id constant ^for_rulebook = /main/basic_inform_by_graham_nelson/activities/activity3/for_rb/rulebook_id constant ^after_rulebook = /main/basic_inform_by_graham_nelson/activities/activity3/after_rb/rulebook_id @@ -6044,7 +6044,7 @@ package main _plain package kinds _submodule package kind1 _kind constant (text) ^name = "natural language" - constant (int32) ^at = 15778 + constant (int32) ^at = 15782 typename K_natural_language = enum __translation="K_natural_language" constant (int32) ^source_order = 14 constant (int32) kind_ref = 561 __translation="kind_ref_U38" @@ -6210,14 +6210,14 @@ package main _plain package variables _submodule package variable1 _variable constant (text) ^name = "language of play" - constant (int32) ^at = 15788 + constant (int32) ^at = 15792 constant ^heading = /main/completion/basics/heading6/id constant (int32) ^indexable = 1 constant (text) ^contents = "natural language" variable (/main/basic_inform_by_graham_nelson/kinds/kind1/K_natural_language) V1_language_of_play = /main/basic_inform_by_graham_nelson/instances/instance3/I_english_language __translation="V1_language_of_play" package variable2 _variable constant (text) ^name = "parameter-object" - constant (int32) ^at = 15800 + constant (int32) ^at = 15804 constant ^heading = /main/completion/basics/heading6/id constant (int32) ^indexable = 1 constant (text) ^contents = "object" @@ -6423,8 +6423,8 @@ package main _plain package phrase101 _to_phrase package closure1 _closure constant (/main/generic/kinds/kind29/K_list_of_values) closure_data = { /main/generic/kinds/derived_kind1/DK1_phrase_real_number____re, /main/BasicInformKit/functions/REAL_NUMBER_TY_Tanh_fn/REAL_NUMBER_TY_Tanh, "tanh function" } __translation="closure_data_U20" - constant (int32) ^at = 14883 - constant (int32) ^included_at = 14787 + constant (int32) ^at = 14887 + constant (int32) ^included_at = 14791 constant (int32) ^auto_included = 1 constant (int32) ^standard = 1 package rules _submodule @@ -6447,7 +6447,7 @@ package main _plain package modal_verb1 _modal_verb constant (text) ^name = "means (modal)" constant (text) ^infinitive = "mean" - constant (int32) ^at = 14902 + constant (int32) ^at = 14906 package conjugation_fn _function package call _code __translation="ConjugateModalVerb2" local fn @@ -6580,7 +6580,7 @@ package main _plain package modal_verb2 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 14912 + constant (int32) ^at = 14916 package conjugation_fn _function package call _code __translation="ConjugateModalVerb3" local fn @@ -6821,7 +6821,7 @@ package main _plain package modal_verb3 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 14922 + constant (int32) ^at = 14926 package conjugation_fn _function package call _code __translation="ConjugateModalVerb4" local fn @@ -7062,7 +7062,7 @@ package main _plain package modal_verb4 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 14932 + constant (int32) ^at = 14936 package conjugation_fn _function package call _code __translation="ConjugateModalVerb5" local fn @@ -7303,7 +7303,7 @@ package main _plain package modal_verb5 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 14952 + constant (int32) ^at = 14956 package conjugation_fn _function package call _code __translation="ConjugateModalVerb6" local fn @@ -7544,7 +7544,7 @@ package main _plain package modal_verb6 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 14962 + constant (int32) ^at = 14966 package conjugation_fn _function package call _code __translation="ConjugateModalVerb7" local fn @@ -7785,7 +7785,7 @@ package main _plain package modal_verb7 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 14972 + constant (int32) ^at = 14976 package conjugation_fn _function package call _code __translation="ConjugateModalVerb8" local fn @@ -8026,7 +8026,7 @@ package main _plain package modal_verb8 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 14982 + constant (int32) ^at = 14986 package conjugation_fn _function package call _code __translation="ConjugateModalVerb9" local fn @@ -8267,7 +8267,7 @@ package main _plain package modal_verb9 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 15012 + constant (int32) ^at = 15016 package conjugation_fn _function package call _code __translation="ConjugateModalVerb10" local fn @@ -8508,7 +8508,7 @@ package main _plain package modal_verb10 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 15032 + constant (int32) ^at = 15036 package conjugation_fn _function package call _code __translation="ConjugateModalVerb11" local fn @@ -8755,7 +8755,7 @@ package main _plain constant (text) ^past = "A implied B" constant (text) ^present_perfect = "A has implied B; A have implied B" constant (text) ^past_perfect = "A had implied B" - constant (int32) ^at = 15042 + constant (int32) ^at = 15046 package conjugation_fn _function package call _code __translation="ConjugateVerb4" local fn @@ -8920,7 +8920,7 @@ package main _plain package modal_verb11 _modal_verb constant (text) ^name = "implies (modal)" constant (text) ^infinitive = "imply" - constant (int32) ^at = 15052 + constant (int32) ^at = 15056 package conjugation_fn _function package call _code __translation="ConjugateModalVerb12" local fn @@ -9058,7 +9058,7 @@ package main _plain constant (text) ^past = "A could be B; B could be been by A" constant (text) ^present_perfect = "A has been able to be B; A have been able to be B; B has been able to be been by A; B have been able to be been by A" constant (text) ^past_perfect = "A had been able to be B; B had been able to be been by A" - constant (int32) ^at = 15062 + constant (int32) ^at = 15066 package conjugation_fn _function package call _code __translation="ConjugateVerb5" local fn @@ -9233,7 +9233,7 @@ package main _plain constant (text) ^past = "A could B" constant (text) ^present_perfect = "A has been able to B; A have been able to B" constant (text) ^past_perfect = "A had been able to B" - constant (int32) ^at = 15062 + constant (int32) ^at = 15066 package conjugation_fn _function package call _code __translation="ConjugateVerb6" local fn @@ -10162,7 +10162,7 @@ package main _plain constant (text) ^past = "A had B" constant (text) ^present_perfect = "A has had B; A have had B" constant (text) ^past_perfect = "A had had B" - constant (int32) ^at = 15076 + constant (int32) ^at = 15080 package conjugation_fn _function package call _code __translation="ConjugateVerb7" local fn @@ -10332,7 +10332,7 @@ package main _plain constant (text) ^past = "A specified B" constant (text) ^present_perfect = "A has specified B; A have specified B" constant (text) ^past_perfect = "A had specified B" - constant (int32) ^at = 15086 + constant (int32) ^at = 15090 package conjugation_fn _function package call _code __translation="ConjugateVerb8" local fn @@ -10503,7 +10503,7 @@ package main _plain constant (text) ^past = "A related B" constant (text) ^present_perfect = "A has related B; A have related B" constant (text) ^past_perfect = "A had related B" - constant (int32) ^at = 15097 + constant (int32) ^at = 15101 package conjugation_fn _function package call _code __translation="ConjugateVerb9" local fn @@ -10668,7 +10668,7 @@ package main _plain package modal_verb12 _modal_verb constant (text) ^name = "relates (modal)" constant (text) ^infinitive = "relate" - constant (int32) ^at = 15107 + constant (int32) ^at = 15111 package conjugation_fn _function package call _code __translation="ConjugateModalVerb13" local fn @@ -10806,7 +10806,7 @@ package main _plain constant (text) ^past = "A substituted B" constant (text) ^present_perfect = "A has substituted B; A have substituted B" constant (text) ^past_perfect = "A had substituted B" - constant (int32) ^at = 15117 + constant (int32) ^at = 15121 package conjugation_fn _function package call _code __translation="ConjugateVerb10" local fn @@ -11005,7 +11005,7 @@ package main _plain package modal_verb13 _modal_verb constant (text) ^name = "does (modal)" constant (text) ^infinitive = "do" - constant (int32) ^at = 15129 + constant (int32) ^at = 15133 package conjugation_fn _function package call _code __translation="ConjugateModalVerb14" local fn @@ -11138,7 +11138,7 @@ package main _plain package modal_verb14 _modal_verb constant (text) ^name = "does (modal)" constant (text) ^infinitive = "do" - constant (int32) ^at = 15139 + constant (int32) ^at = 15143 package conjugation_fn _function package call _code __translation="ConjugateModalVerb15" local fn @@ -11271,7 +11271,7 @@ package main _plain package modal_verb15 _modal_verb constant (text) ^name = "does (modal)" constant (text) ^infinitive = "do" - constant (int32) ^at = 15151 + constant (int32) ^at = 15155 package conjugation_fn _function package call _code __translation="ConjugateModalVerb16" local fn @@ -11404,7 +11404,7 @@ package main _plain package modal_verb16 _modal_verb constant (text) ^name = "does (modal)" constant (text) ^infinitive = "do" - constant (int32) ^at = 15163 + constant (int32) ^at = 15167 package conjugation_fn _function package call _code __translation="ConjugateModalVerb17" local fn @@ -11542,7 +11542,7 @@ package main _plain constant (text) ^past = "A translated B" constant (text) ^present_perfect = "A has translated B; A have translated B" constant (text) ^past_perfect = "A had translated B" - constant (int32) ^at = 15176 + constant (int32) ^at = 15180 package conjugation_fn _function package call _code __translation="ConjugateVerb11" local fn @@ -11775,7 +11775,7 @@ package main _plain package modal_verb17 _modal_verb constant (text) ^name = "translates (modal)" constant (text) ^infinitive = "translate" - constant (int32) ^at = 15189 + constant (int32) ^at = 15193 package conjugation_fn _function package call _code __translation="ConjugateModalVerb18" local fn @@ -11908,7 +11908,7 @@ package main _plain package modal_verb18 _modal_verb constant (text) ^name = "translates (modal)" constant (text) ^infinitive = "translate" - constant (int32) ^at = 15202 + constant (int32) ^at = 15206 package conjugation_fn _function package call _code __translation="ConjugateModalVerb19" local fn @@ -12041,7 +12041,7 @@ package main _plain package modal_verb19 _modal_verb constant (text) ^name = "translates (modal)" constant (text) ^infinitive = "translate" - constant (int32) ^at = 15216 + constant (int32) ^at = 15220 package conjugation_fn _function package call _code __translation="ConjugateModalVerb20" local fn @@ -12180,7 +12180,7 @@ package main _plain constant (text) ^past = "A provided B" constant (text) ^present_perfect = "A has provided B; A have provided B" constant (text) ^past_perfect = "A had provided B" - constant (int32) ^at = 15228 + constant (int32) ^at = 15232 package conjugation_fn _function package call _code __translation="ConjugateVerb12" local fn @@ -12350,7 +12350,7 @@ package main _plain constant (text) ^past = "A used B" constant (text) ^present_perfect = "A has used B; A have used B" constant (text) ^past_perfect = "A had used B" - constant (int32) ^at = 15238 + constant (int32) ^at = 15242 package conjugation_fn _function package call _code __translation="ConjugateVerb13" local fn @@ -12520,7 +12520,7 @@ package main _plain constant (text) ^past = "A included B" constant (text) ^present_perfect = "A has included B; A have included B" constant (text) ^past_perfect = "A had included B" - constant (int32) ^at = 15251 + constant (int32) ^at = 15255 package conjugation_fn _function package call _code __translation="ConjugateVerb14" local fn @@ -12722,7 +12722,7 @@ package main _plain constant (text) ^past = "A omitted B" constant (text) ^present_perfect = "A has omitted B; A have omitted B" constant (text) ^past_perfect = "A had omitted B" - constant (int32) ^at = 15266 + constant (int32) ^at = 15270 package conjugation_fn _function package call _code __translation="ConjugateVerb15" local fn @@ -12924,7 +12924,7 @@ package main _plain constant (text) ^past = "A tested B" constant (text) ^present_perfect = "A has tested B; A have tested B" constant (text) ^past_perfect = "A had tested B" - constant (int32) ^at = 15281 + constant (int32) ^at = 15285 package conjugation_fn _function package call _code __translation="ConjugateVerb16" local fn @@ -13121,7 +13121,7 @@ package main _plain package modal_verb20 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 15297 + constant (int32) ^at = 15301 package conjugation_fn _function package call _code __translation="ConjugateModalVerb21" local fn @@ -13362,7 +13362,7 @@ package main _plain package modal_verb21 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 15308 + constant (int32) ^at = 15312 package conjugation_fn _function package call _code __translation="ConjugateModalVerb22" local fn @@ -13603,7 +13603,7 @@ package main _plain package modal_verb22 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 15319 + constant (int32) ^at = 15323 package conjugation_fn _function package call _code __translation="ConjugateModalVerb23" local fn @@ -13844,7 +13844,7 @@ package main _plain package modal_verb23 _modal_verb constant (text) ^name = "is (modal)" constant (text) ^infinitive = "be" - constant (int32) ^at = 15330 + constant (int32) ^at = 15334 package conjugation_fn _function package call _code __translation="ConjugateModalVerb24" local fn @@ -14084,149 +14084,149 @@ package main _plain val "will not be" package preposition1 _preposition constant (text) ^text = "implied by" - constant (int32) ^at = 15042 + constant (int32) ^at = 15046 package preposition2 _preposition constant (text) ^text = "implying" - constant (int32) ^at = 15042 + constant (int32) ^at = 15046 package preposition3 _preposition constant (text) ^text = "being able to be" - constant (int32) ^at = 15062 + constant (int32) ^at = 15066 package preposition4 _preposition constant (text) ^text = "had by" - constant (int32) ^at = 15076 + constant (int32) ^at = 15080 package preposition5 _preposition constant (text) ^text = "having" - constant (int32) ^at = 15076 + constant (int32) ^at = 15080 package preposition6 _preposition constant (text) ^text = "specified by" - constant (int32) ^at = 15086 + constant (int32) ^at = 15090 package preposition7 _preposition constant (text) ^text = "specifying" - constant (int32) ^at = 15086 + constant (int32) ^at = 15090 package preposition8 _preposition constant (text) ^text = "related by" - constant (int32) ^at = 15097 + constant (int32) ^at = 15101 package preposition9 _preposition constant (text) ^text = "relating" - constant (int32) ^at = 15097 + constant (int32) ^at = 15101 package preposition10 _preposition constant (text) ^text = "substituted by" - constant (int32) ^at = 15117 + constant (int32) ^at = 15121 package preposition11 _preposition constant (text) ^text = "substituting" - constant (int32) ^at = 15117 + constant (int32) ^at = 15121 package preposition12 _preposition constant (text) ^text = "for" - constant (int32) ^at = 15117 + constant (int32) ^at = 15121 package preposition13 _preposition constant (text) ^text = "done by" - constant (int32) ^at = 15129 + constant (int32) ^at = 15133 package preposition14 _preposition constant (text) ^text = "doing" - constant (int32) ^at = 15129 + constant (int32) ^at = 15133 package preposition15 _preposition constant (text) ^text = "if" - constant (int32) ^at = 15139 + constant (int32) ^at = 15143 package preposition16 _preposition constant (text) ^text = "when" - constant (int32) ^at = 15151 + constant (int32) ^at = 15155 package preposition17 _preposition constant (text) ^text = "unless" - constant (int32) ^at = 15163 + constant (int32) ^at = 15167 package preposition18 _preposition constant (text) ^text = "translated by" - constant (int32) ^at = 15176 + constant (int32) ^at = 15180 package preposition19 _preposition constant (text) ^text = "translating" - constant (int32) ^at = 15176 + constant (int32) ^at = 15180 package preposition20 _preposition constant (text) ^text = "into" - constant (int32) ^at = 15176 + constant (int32) ^at = 15180 package preposition21 _preposition constant (text) ^text = "as" - constant (int32) ^at = 15176 + constant (int32) ^at = 15180 package preposition22 _preposition constant (text) ^text = "provided by" - constant (int32) ^at = 15228 + constant (int32) ^at = 15232 package preposition23 _preposition constant (text) ^text = "providing" - constant (int32) ^at = 15228 + constant (int32) ^at = 15232 package preposition24 _preposition constant (text) ^text = "used by" - constant (int32) ^at = 15238 + constant (int32) ^at = 15242 package preposition25 _preposition constant (text) ^text = "using" - constant (int32) ^at = 15238 + constant (int32) ^at = 15242 package preposition26 _preposition constant (text) ^text = "included by" - constant (int32) ^at = 15251 + constant (int32) ^at = 15255 package preposition27 _preposition constant (text) ^text = "including" - constant (int32) ^at = 15251 + constant (int32) ^at = 15255 package preposition28 _preposition constant (text) ^text = "in" - constant (int32) ^at = 15251 + constant (int32) ^at = 15255 package preposition29 _preposition constant (text) ^text = "omitted by" - constant (int32) ^at = 15266 + constant (int32) ^at = 15270 package preposition30 _preposition constant (text) ^text = "omitting" - constant (int32) ^at = 15266 + constant (int32) ^at = 15270 package preposition31 _preposition constant (text) ^text = "from" - constant (int32) ^at = 15266 + constant (int32) ^at = 15270 package preposition32 _preposition constant (text) ^text = "tested by" - constant (int32) ^at = 15281 + constant (int32) ^at = 15285 package preposition33 _preposition constant (text) ^text = "testing" - constant (int32) ^at = 15281 + constant (int32) ^at = 15285 package preposition34 _preposition constant (text) ^text = "with" - constant (int32) ^at = 15281 + constant (int32) ^at = 15285 package preposition35 _preposition constant (text) ^text = "greater than" - constant (int32) ^at = 15297 + constant (int32) ^at = 15301 package preposition36 _preposition constant (text) ^text = "less than" - constant (int32) ^at = 15308 + constant (int32) ^at = 15312 package preposition37 _preposition constant (text) ^text = "at least" - constant (int32) ^at = 15319 + constant (int32) ^at = 15323 package preposition38 _preposition constant (text) ^text = "at most" - constant (int32) ^at = 15330 + constant (int32) ^at = 15334 package relations _submodule package relation1 _relation constant (int32) relation_id = 0 __translation="relation_id_U32" constant (text) ^term0 = "object" constant (text) ^term1 = "value" - constant (int32) ^at = 15624 + constant (int32) ^at = 15628 package relation2 _relation constant (int32) relation_id = 1 __translation="relation_id_U33" constant (text) ^term0 = "object" constant (text) ^term1 = "text" - constant (int32) ^at = 15635 + constant (int32) ^at = 15639 package relation3 _relation constant (int32) relation_id = 2 __translation="relation_id_U34" constant (text) ^term0 = "object" constant (text) ^term1 = "text" - constant (int32) ^at = 15643 + constant (int32) ^at = 15647 package relation4 _relation constant (int32) relation_id = 3 __translation="relation_id_U35" constant (text) ^term0 = "object" constant (text) ^term1 = "--" - constant (int32) ^at = 15653 + constant (int32) ^at = 15657 package relation5 _relation constant (int32) relation_id = 4 __translation="relation_id_U36" constant (text) ^term0 = "object" constant (text) ^term1 = "--" - constant (int32) ^at = 15662 + constant (int32) ^at = 15666 package relation6 _relation constant (int32) relation_id = 5 __translation="relation_id_U37" constant (text) ^term0 = "object" constant (text) ^term1 = "--" - constant (int32) ^at = 15672 + constant (int32) ^at = 15676 package english_language_by_graham_nelson _module constant (int32) ^category = 2 constant (text) ^author = "Graham Nelson" @@ -14241,8 +14241,8 @@ package main _plain constant (text) ^name = "present tense" constant (text) ^printed_name = "present tense" constant (text) ^abbreviation = "PT" - constant (int32) ^at = 25363 - constant (int32) ^kind_set_at = 25363 + constant (int32) ^at = 25367 + constant (int32) ^kind_set_at = 25367 constant ^value = I_present_tense constant (text) ^index_kind = "grammatical tense" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical tense" @@ -14257,8 +14257,8 @@ package main _plain constant (text) ^name = "past tense" constant (text) ^printed_name = "past tense" constant (text) ^abbreviation = "PT" - constant (int32) ^at = 25363 - constant (int32) ^kind_set_at = 25363 + constant (int32) ^at = 25367 + constant (int32) ^kind_set_at = 25367 constant ^value = I_past_tense constant (text) ^index_kind = "grammatical tense" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical tense" @@ -14273,8 +14273,8 @@ package main _plain constant (text) ^name = "perfect tense" constant (text) ^printed_name = "perfect tense" constant (text) ^abbreviation = "PT" - constant (int32) ^at = 25363 - constant (int32) ^kind_set_at = 25363 + constant (int32) ^at = 25367 + constant (int32) ^kind_set_at = 25367 constant ^value = I_perfect_tense constant (text) ^index_kind = "grammatical tense" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical tense" @@ -14289,8 +14289,8 @@ package main _plain constant (text) ^name = "past perfect tense" constant (text) ^printed_name = "past perfect tense" constant (text) ^abbreviation = "PP" - constant (int32) ^at = 25363 - constant (int32) ^kind_set_at = 25363 + constant (int32) ^at = 25367 + constant (int32) ^kind_set_at = 25367 constant ^value = I_past_perfect_tense constant (text) ^index_kind = "grammatical tense" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical tense" @@ -14305,8 +14305,8 @@ package main _plain constant (text) ^name = "future tense" constant (text) ^printed_name = "future tense" constant (text) ^abbreviation = "FT" - constant (int32) ^at = 25363 - constant (int32) ^kind_set_at = 25363 + constant (int32) ^at = 25367 + constant (int32) ^kind_set_at = 25367 constant ^value = I_future_tense constant (text) ^index_kind = "grammatical tense" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical tense" @@ -14321,8 +14321,8 @@ package main _plain constant (text) ^name = "first person singular" constant (text) ^printed_name = "first person singular" constant (text) ^abbreviation = "FP" - constant (int32) ^at = 25393 - constant (int32) ^kind_set_at = 25393 + constant (int32) ^at = 25397 + constant (int32) ^kind_set_at = 25397 constant ^value = I_first_person_singular constant (text) ^index_kind = "narrative viewpoint" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > narrative viewpoint" @@ -14337,8 +14337,8 @@ package main _plain constant (text) ^name = "second person singular" constant (text) ^printed_name = "second person singular" constant (text) ^abbreviation = "SP" - constant (int32) ^at = 25393 - constant (int32) ^kind_set_at = 25393 + constant (int32) ^at = 25397 + constant (int32) ^kind_set_at = 25397 constant ^value = I_second_person_singular constant (text) ^index_kind = "narrative viewpoint" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > narrative viewpoint" @@ -14353,8 +14353,8 @@ package main _plain constant (text) ^name = "third person singular" constant (text) ^printed_name = "third person singular" constant (text) ^abbreviation = "TP" - constant (int32) ^at = 25393 - constant (int32) ^kind_set_at = 25393 + constant (int32) ^at = 25397 + constant (int32) ^kind_set_at = 25397 constant ^value = I_third_person_singular constant (text) ^index_kind = "narrative viewpoint" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > narrative viewpoint" @@ -14369,8 +14369,8 @@ package main _plain constant (text) ^name = "first person plural" constant (text) ^printed_name = "first person plural" constant (text) ^abbreviation = "FP" - constant (int32) ^at = 25393 - constant (int32) ^kind_set_at = 25393 + constant (int32) ^at = 25397 + constant (int32) ^kind_set_at = 25397 constant ^value = I_first_person_plural constant (text) ^index_kind = "narrative viewpoint" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > narrative viewpoint" @@ -14385,8 +14385,8 @@ package main _plain constant (text) ^name = "second person plural" constant (text) ^printed_name = "second person plural" constant (text) ^abbreviation = "SP" - constant (int32) ^at = 25393 - constant (int32) ^kind_set_at = 25393 + constant (int32) ^at = 25397 + constant (int32) ^kind_set_at = 25397 constant ^value = I_second_person_plural constant (text) ^index_kind = "narrative viewpoint" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > narrative viewpoint" @@ -14401,8 +14401,8 @@ package main _plain constant (text) ^name = "third person plural" constant (text) ^printed_name = "third person plural" constant (text) ^abbreviation = "TP" - constant (int32) ^at = 25393 - constant (int32) ^kind_set_at = 25393 + constant (int32) ^at = 25397 + constant (int32) ^kind_set_at = 25397 constant ^value = I_third_person_plural constant (text) ^index_kind = "narrative viewpoint" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > narrative viewpoint" @@ -14417,8 +14417,8 @@ package main _plain constant (text) ^name = "nominative" constant (text) ^printed_name = "nominative" constant (text) ^abbreviation = "Nm" - constant (int32) ^at = 25460 - constant (int32) ^kind_set_at = 25460 + constant (int32) ^at = 25464 + constant (int32) ^kind_set_at = 25464 constant ^value = I_nominative constant (text) ^index_kind = "grammatical case" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical case" @@ -14433,8 +14433,8 @@ package main _plain constant (text) ^name = "accusative" constant (text) ^printed_name = "accusative" constant (text) ^abbreviation = "Ac" - constant (int32) ^at = 25460 - constant (int32) ^kind_set_at = 25460 + constant (int32) ^at = 25464 + constant (int32) ^kind_set_at = 25464 constant ^value = I_accusative constant (text) ^index_kind = "grammatical case" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical case" @@ -14449,8 +14449,8 @@ package main _plain constant (text) ^name = "neuter gender" constant (text) ^printed_name = "neuter gender" constant (text) ^abbreviation = "NG" - constant (int32) ^at = 25478 - constant (int32) ^kind_set_at = 25478 + constant (int32) ^at = 25482 + constant (int32) ^kind_set_at = 25482 constant ^value = I_neuter_gender constant (text) ^index_kind = "grammatical gender" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical gender" @@ -14465,8 +14465,8 @@ package main _plain constant (text) ^name = "masculine gender" constant (text) ^printed_name = "masculine gender" constant (text) ^abbreviation = "MG" - constant (int32) ^at = 25478 - constant (int32) ^kind_set_at = 25478 + constant (int32) ^at = 25482 + constant (int32) ^kind_set_at = 25482 constant ^value = I_masculine_gender constant (text) ^index_kind = "grammatical gender" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical gender" @@ -14481,8 +14481,8 @@ package main _plain constant (text) ^name = "feminine gender" constant (text) ^printed_name = "feminine gender" constant (text) ^abbreviation = "FG" - constant (int32) ^at = 25478 - constant (int32) ^kind_set_at = 25478 + constant (int32) ^at = 25482 + constant (int32) ^kind_set_at = 25482 constant ^value = I_feminine_gender constant (text) ^index_kind = "grammatical gender" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > grammatical gender" @@ -14496,7 +14496,7 @@ package main _plain package kinds _submodule package kind1 _kind constant (text) ^name = "grammatical tense" - constant (int32) ^at = 25354 + constant (int32) ^at = 25358 typename K_grammatical_tense = enum __translation="K_grammatical_tense" constant (int32) ^source_order = 15 constant (int32) kind_ref = 561 __translation="kind_ref_U39" @@ -14654,7 +14654,7 @@ package main _plain constant (text) ^inferences = "" package kind2 _kind constant (text) ^name = "narrative viewpoint" - constant (int32) ^at = 25384 + constant (int32) ^at = 25388 typename K_narrative_viewpoint = enum __translation="K_narrative_viewpoint" constant (int32) ^source_order = 16 constant (int32) kind_ref = 561 __translation="kind_ref_U40" @@ -14817,7 +14817,7 @@ package main _plain constant (text) ^inferences = "" package kind3 _kind constant (text) ^name = "grammatical case" - constant (int32) ^at = 25451 + constant (int32) ^at = 25455 typename K_grammatical_case = enum __translation="K_grammatical_case" constant (int32) ^source_order = 17 constant (int32) kind_ref = 561 __translation="kind_ref_U41" @@ -14958,7 +14958,7 @@ package main _plain constant (text) ^inferences = "" package kind4 _kind constant (text) ^name = "grammatical gender" - constant (int32) ^at = 25469 + constant (int32) ^at = 25473 typename K_grammatical_gender = enum __translation="K_grammatical_gender" constant (int32) ^source_order = 18 constant (int32) kind_ref = 561 __translation="kind_ref_U42" @@ -15113,26 +15113,26 @@ package main _plain package variables _submodule package variable1 _variable constant (text) ^name = "story tense" - constant (int32) ^at = 25493 + constant (int32) ^at = 25497 constant ^heading = /main/completion/basics/heading69/id constant (int32) ^indexable = 1 constant (text) ^contents = "grammatical tense" constant ^counterpart = /main/BasicInformKit/variables/story_tense_var/story_tense package variable2 _variable constant (text) ^name = "story viewpoint" - constant (int32) ^at = 25513 + constant (int32) ^at = 25517 constant ^heading = /main/completion/basics/heading69/id constant (int32) ^indexable = 1 constant (text) ^contents = "narrative viewpoint" constant ^counterpart = /main/BasicInformKit/variables/story_viewpoint_var/story_viewpoint - constant (int32) ^at = 25151 - constant (int32) ^included_at = 14795 + constant (int32) ^at = 25155 + constant (int32) ^included_at = 14799 constant (int32) ^auto_included = 1 package conjugations _submodule package modal_verb1 _modal_verb constant (text) ^name = "can (modal)" constant (text) ^infinitive = "be able to" - constant (int32) ^at = 25178 + constant (int32) ^at = 25182 package conjugation_fn _function package call _code __translation="ConjugateModalVerb25" local fn @@ -16027,7 +16027,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A could B" constant (text) ^present_perfect = "A could have B" - constant (int32) ^at = 25186 + constant (int32) ^at = 25190 package conjugation_fn _function package call _code __translation="ConjugateVerb17" local fn @@ -16954,7 +16954,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A may B" constant (text) ^present_perfect = "A may have B" - constant (int32) ^at = 25192 + constant (int32) ^at = 25196 package conjugation_fn _function package call _code __translation="ConjugateVerb18" local fn @@ -17881,7 +17881,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A might B" constant (text) ^present_perfect = "A might have B" - constant (int32) ^at = 25198 + constant (int32) ^at = 25202 package conjugation_fn _function package call _code __translation="ConjugateVerb19" local fn @@ -18808,7 +18808,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A must B" constant (text) ^present_perfect = "A must have B" - constant (int32) ^at = 25204 + constant (int32) ^at = 25208 package conjugation_fn _function package call _code __translation="ConjugateVerb20" local fn @@ -19735,7 +19735,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A should B" constant (text) ^present_perfect = "A should have B" - constant (int32) ^at = 25210 + constant (int32) ^at = 25214 package conjugation_fn _function package call _code __translation="ConjugateVerb21" local fn @@ -20662,7 +20662,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A would B" constant (text) ^present_perfect = "A would have B" - constant (int32) ^at = 25216 + constant (int32) ^at = 25220 package conjugation_fn _function package call _code __translation="ConjugateVerb22" local fn @@ -21591,7 +21591,7 @@ package main _plain constant (text) ^past = "A was B; A were B" constant (text) ^present_perfect = "A 's been B; A 've been B" constant (text) ^past_perfect = "A 'd been B" - constant (int32) ^at = 25223 + constant (int32) ^at = 25227 package conjugation_fn _function package call _code __translation="ConjugateVerb23" local fn @@ -21838,7 +21838,7 @@ package main _plain constant (text) ^past = "A had B" constant (text) ^present_perfect = "A 's had B; A 've had B" constant (text) ^past_perfect = "A 'd had B" - constant (int32) ^at = 25229 + constant (int32) ^at = 25233 package conjugation_fn _function package call _code __translation="ConjugateVerb24" local fn @@ -21977,7 +21977,7 @@ package main _plain constant (text) ^past = "A wasn't B; A weren't B" constant (text) ^present_perfect = "A hasn't been B; A haven't been B" constant (text) ^past_perfect = "A hadn't been B" - constant (int32) ^at = 25235 + constant (int32) ^at = 25239 package conjugation_fn _function package call _code __translation="ConjugateVerb25" local fn @@ -22129,7 +22129,7 @@ package main _plain constant (text) ^past = "A couldn't B" constant (text) ^present_perfect = "A hasn't been able to B; A haven't been able to B" constant (text) ^past_perfect = "A hadn't been able to B" - constant (int32) ^at = 25241 + constant (int32) ^at = 25245 package conjugation_fn _function package call _code __translation="ConjugateVerb26" local fn @@ -22604,7 +22604,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A hasn't B; A haven't B" constant (text) ^present_perfect = "A hadn't B" - constant (int32) ^at = 25241 + constant (int32) ^at = 25245 package conjugation_fn _function package call _code __translation="ConjugateVerb27" local fn @@ -23079,7 +23079,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A doesn't B; A don't B" constant (text) ^present_perfect = "A didn't B" - constant (int32) ^at = 25247 + constant (int32) ^at = 25251 package conjugation_fn _function package call _code __translation="ConjugateVerb28" local fn @@ -23550,7 +23550,7 @@ package main _plain package modal_verb2 _modal_verb constant (text) ^name = "hasn't (modal)" constant (text) ^infinitive = "haven't" - constant (int32) ^at = 25253 + constant (int32) ^at = 25257 package conjugation_fn _function package call _code __translation="ConjugateModalVerb26" local fn @@ -24025,7 +24025,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A mustn't B" constant (text) ^present_perfect = "A mustn't have B" - constant (int32) ^at = 25259 + constant (int32) ^at = 25263 package conjugation_fn _function package call _code __translation="ConjugateVerb29" local fn @@ -24500,7 +24500,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A mightn't B" constant (text) ^present_perfect = "A mightn't have B" - constant (int32) ^at = 25265 + constant (int32) ^at = 25269 package conjugation_fn _function package call _code __translation="ConjugateVerb30" local fn @@ -24975,7 +24975,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A mayn't B" constant (text) ^present_perfect = "A mayn't have B" - constant (int32) ^at = 25271 + constant (int32) ^at = 25275 package conjugation_fn _function package call _code __translation="ConjugateVerb31" local fn @@ -25450,7 +25450,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A wouldn't B" constant (text) ^present_perfect = "A wouldn't have B" - constant (int32) ^at = 25277 + constant (int32) ^at = 25281 package conjugation_fn _function package call _code __translation="ConjugateVerb32" local fn @@ -25925,7 +25925,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A couldn't B" constant (text) ^present_perfect = "A couldn't have B" - constant (int32) ^at = 25283 + constant (int32) ^at = 25287 package conjugation_fn _function package call _code __translation="ConjugateVerb33" local fn @@ -26400,7 +26400,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A shouldn't B" constant (text) ^present_perfect = "A shouldn't have B" - constant (int32) ^at = 25289 + constant (int32) ^at = 25293 package conjugation_fn _function package call _code __translation="ConjugateVerb34" local fn @@ -26875,7 +26875,7 @@ package main _plain constant (text) ^meaning = " " constant (text) ^present = "A won't B" constant (text) ^present_perfect = "A wouldn't B" - constant (int32) ^at = 25295 + constant (int32) ^at = 25299 package conjugation_fn _function package call _code __translation="ConjugateVerb35" local fn @@ -27345,67 +27345,67 @@ package main _plain code package preposition1 _preposition constant (text) ^text = "being able to" - constant (int32) ^at = 25178 + constant (int32) ^at = 25182 package preposition2 _preposition constant (text) ^text = "coulding" - constant (int32) ^at = 25186 + constant (int32) ^at = 25190 package preposition3 _preposition constant (text) ^text = "maying" - constant (int32) ^at = 25192 + constant (int32) ^at = 25196 package preposition4 _preposition constant (text) ^text = "mighting" - constant (int32) ^at = 25198 + constant (int32) ^at = 25202 package preposition5 _preposition constant (text) ^text = "musting" - constant (int32) ^at = 25204 + constant (int32) ^at = 25208 package preposition6 _preposition constant (text) ^text = "shoulding" - constant (int32) ^at = 25210 + constant (int32) ^at = 25214 package preposition7 _preposition constant (text) ^text = "woulding" - constant (int32) ^at = 25216 + constant (int32) ^at = 25220 package preposition8 _preposition constant (text) ^text = "being" - constant (int32) ^at = 25223 + constant (int32) ^at = 25227 package preposition9 _preposition constant (text) ^text = "aren'ting" - constant (int32) ^at = 25235 + constant (int32) ^at = 25239 package preposition10 _preposition constant (text) ^text = "can'ting" - constant (int32) ^at = 25241 + constant (int32) ^at = 25245 package preposition11 _preposition constant (text) ^text = "don'ting" - constant (int32) ^at = 25247 + constant (int32) ^at = 25251 package preposition12 _preposition constant (text) ^text = "haven'ting" - constant (int32) ^at = 25253 + constant (int32) ^at = 25257 package preposition13 _preposition constant (text) ^text = "mustn'ting" - constant (int32) ^at = 25259 + constant (int32) ^at = 25263 package preposition14 _preposition constant (text) ^text = "mightn'ting" - constant (int32) ^at = 25265 + constant (int32) ^at = 25269 package preposition15 _preposition constant (text) ^text = "mayn'ting" - constant (int32) ^at = 25271 + constant (int32) ^at = 25275 package preposition16 _preposition constant (text) ^text = "wouldn'ting" - constant (int32) ^at = 25277 + constant (int32) ^at = 25281 package preposition17 _preposition constant (text) ^text = "couldn'ting" - constant (int32) ^at = 25283 + constant (int32) ^at = 25287 package preposition18 _preposition constant (text) ^text = "shouldn'ting" - constant (int32) ^at = 25289 + constant (int32) ^at = 25293 package preposition19 _preposition constant (text) ^text = "won'ting" - constant (int32) ^at = 25295 + constant (int32) ^at = 25299 package relations _submodule package relation1 _relation constant (int32) relation_id = 6 __translation="relation_id_U38" constant (text) ^term0 = "object" constant (text) ^term1 = "--" - constant (int32) ^at = 25423 + constant (int32) ^at = 25427 package source_text _module constant (int32) ^category = 1 package instances _submodule @@ -27413,8 +27413,8 @@ package main _plain constant (text) ^name = "decorative" constant (text) ^printed_name = "decorative" constant (text) ^abbreviation = "Dc" - constant (int32) ^at = 14821 - constant (int32) ^kind_set_at = 14821 + constant (int32) ^at = 14825 + constant (int32) ^kind_set_at = 14825 constant ^value = I_decorative constant (text) ^index_kind = "text style" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > text style" @@ -27429,8 +27429,8 @@ package main _plain constant (text) ^name = "calligraphic" constant (text) ^printed_name = "calligraphic" constant (text) ^abbreviation = "Cl" - constant (int32) ^at = 14821 - constant (int32) ^kind_set_at = 14821 + constant (int32) ^at = 14825 + constant (int32) ^kind_set_at = 14825 constant ^value = I_calligraphic constant (text) ^index_kind = "text style" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > text style" @@ -27445,8 +27445,8 @@ package main _plain constant (text) ^name = "enlarged" constant (text) ^printed_name = "enlarged" constant (text) ^abbreviation = "En" - constant (int32) ^at = 14821 - constant (int32) ^kind_set_at = 14821 + constant (int32) ^at = 14825 + constant (int32) ^kind_set_at = 14825 constant ^value = I_enlarged constant (text) ^index_kind = "text style" constant (text) ^index_kind_chain = "value > > sayable value > understandable value > enumerated value > text style" @@ -27460,7 +27460,7 @@ package main _plain package kinds _submodule package kind1 _kind constant (text) ^name = "text style" - constant (int32) ^at = 14812 + constant (int32) ^at = 14816 typename K_text_style = enum __translation="K_text_style" constant (int32) ^source_order = 19 constant (int32) kind_ref = 561 __translation="kind_ref_U43" @@ -27790,7 +27790,7 @@ package main _plain package heading5 _heading constant (int32) id = 561 __translation="id_U5" constant (text) ^text = "Part One - Preamble" - constant (int32) ^at = 14897 + constant (int32) ^at = 14901 constant (int32) ^parts = 2 constant (text) ^part1 = "Part One" constant (text) ^part2 = "Preamble" @@ -27800,7 +27800,7 @@ package main _plain package heading6 _heading constant (int32) id = 561 __translation="id_U6" constant (text) ^text = "Part Two - Miscellaneous Definitions" - constant (int32) ^at = 15618 + constant (int32) ^at = 15622 constant (int32) ^parts = 2 constant (text) ^part1 = "Part Two" constant (text) ^part2 = "Miscellaneous Definitions" @@ -27810,7 +27810,7 @@ package main _plain package heading7 _heading constant (int32) id = 561 __translation="id_U7" constant (text) ^text = "Part Three - Phrasebook" - constant (int32) ^at = 15979 + constant (int32) ^at = 15983 constant (int32) ^parts = 2 constant (text) ^part1 = "Part Three" constant (text) ^part2 = "Phrasebook" @@ -27820,7 +27820,7 @@ package main _plain package heading8 _heading constant (int32) id = 561 __translation="id_U8" constant (text) ^text = "Chapter 1 - Saying" - constant (int32) ^at = 15984 + constant (int32) ^at = 15988 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 1" constant (text) ^part2 = "Saying" @@ -27830,7 +27830,7 @@ package main _plain package heading9 _heading constant (int32) id = 561 __translation="id_U9" constant (text) ^text = "Section 1 - Saying Values" - constant (int32) ^at = 15989 + constant (int32) ^at = 15993 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Saying Values" @@ -27840,7 +27840,7 @@ package main _plain package heading10 _heading constant (int32) id = 561 __translation="id_U10" constant (text) ^text = "Section 2 - Saying Names" - constant (int32) ^at = 16063 + constant (int32) ^at = 16067 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Saying Names" @@ -27850,7 +27850,7 @@ package main _plain package heading11 _heading constant (int32) id = 561 __translation="id_U11" constant (text) ^text = "Section 3 - Saying Special Characters" - constant (int32) ^at = 16172 + constant (int32) ^at = 16176 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Saying Special Characters" @@ -27860,7 +27860,7 @@ package main _plain package heading12 _heading constant (int32) id = 561 __translation="id_U12" constant (text) ^text = "Section 4 - Saying Line and Paragraph Breaks" - constant (int32) ^at = 16242 + constant (int32) ^at = 16246 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 4" constant (text) ^part2 = "Saying Line and Paragraph Breaks" @@ -27870,7 +27870,7 @@ package main _plain package heading13 _heading constant (int32) id = 561 __translation="id_U13" constant (text) ^text = "Section 5 - Saying If and Otherwise" - constant (int32) ^at = 16352 + constant (int32) ^at = 16356 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 5" constant (text) ^part2 = "Saying If and Otherwise" @@ -27880,7 +27880,7 @@ package main _plain package heading14 _heading constant (int32) id = 561 __translation="id_U14" constant (text) ^text = "Section 6 - Saying one of" - constant (int32) ^at = 16481 + constant (int32) ^at = 16485 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 6" constant (text) ^part2 = "Saying one of" @@ -27890,7 +27890,7 @@ package main _plain package heading15 _heading constant (int32) id = 561 __translation="id_U15" constant (text) ^text = "Section 7 - Saying Fonts and Visual Effects" - constant (int32) ^at = 16728 + constant (int32) ^at = 16732 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 7" constant (text) ^part2 = "Saying Fonts and Visual Effects" @@ -27900,7 +27900,7 @@ package main _plain package heading16 _heading constant (int32) id = 561 __translation="id_U16" constant (text) ^text = "Section 8 - Saying Lists of Values" - constant (int32) ^at = 16820 + constant (int32) ^at = 16824 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 8" constant (text) ^part2 = "Saying Lists of Values" @@ -27910,7 +27910,7 @@ package main _plain package heading17 _heading constant (int32) id = 561 __translation="id_U17" constant (text) ^text = "Chapter 2 - Conditions and Variables" - constant (int32) ^at = 16895 + constant (int32) ^at = 16899 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 2" constant (text) ^part2 = "Conditions and Variables" @@ -27920,7 +27920,7 @@ package main _plain package heading18 _heading constant (int32) id = 561 __translation="id_U18" constant (text) ^text = "Section 1 - Conditions" - constant (int32) ^at = 16902 + constant (int32) ^at = 16906 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Conditions" @@ -27930,7 +27930,7 @@ package main _plain package heading19 _heading constant (int32) id = 561 __translation="id_U19" constant (text) ^text = "Section 2 - Assigning Temporary Variables" - constant (int32) ^at = 16947 + constant (int32) ^at = 16951 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Assigning Temporary Variables" @@ -27940,7 +27940,7 @@ package main _plain package heading20 _heading constant (int32) id = 561 __translation="id_U20" constant (text) ^text = "Section 3 - Increase and Decrease" - constant (int32) ^at = 17132 + constant (int32) ^at = 17136 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Increase and Decrease" @@ -27950,7 +27950,7 @@ package main _plain package heading21 _heading constant (int32) id = 561 __translation="id_U21" constant (text) ^text = "Chapter 2 - Arithmetic" - constant (int32) ^at = 17224 + constant (int32) ^at = 17228 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 2" constant (text) ^part2 = "Arithmetic" @@ -27960,7 +27960,7 @@ package main _plain package heading22 _heading constant (int32) id = 561 __translation="id_U22" constant (text) ^text = "Section 1 - Arithmetic Operations" - constant (int32) ^at = 17229 + constant (int32) ^at = 17233 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Arithmetic Operations" @@ -27970,7 +27970,7 @@ package main _plain package heading23 _heading constant (int32) id = 561 __translation="id_U23" constant (text) ^text = "Section 2 - Saying Real Numbers (not for Z-machine)" - constant (int32) ^at = 17703 + constant (int32) ^at = 17707 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Saying Real Numbers (not for Z-machine)" @@ -27980,7 +27980,7 @@ package main _plain package heading24 _heading constant (int32) id = 561 __translation="id_U24" constant (text) ^text = "Section 3 - Real Arithmetic (not for Z-machine)" - constant (int32) ^at = 17842 + constant (int32) ^at = 17846 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Real Arithmetic (not for Z-machine)" @@ -27990,7 +27990,7 @@ package main _plain package heading25 _heading constant (int32) id = 561 __translation="id_U25" constant (text) ^text = "Section 4 - Exponential Functions (not for Z-machine)" - constant (int32) ^at = 18098 + constant (int32) ^at = 18102 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 4" constant (text) ^part2 = "Exponential Functions (not for Z-machine)" @@ -28000,7 +28000,7 @@ package main _plain package heading26 _heading constant (int32) id = 561 __translation="id_U26" constant (text) ^text = "Section 5 - Trigonometric Functions (not for Z-machine)" - constant (int32) ^at = 18246 + constant (int32) ^at = 18250 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 5" constant (text) ^part2 = "Trigonometric Functions (not for Z-machine)" @@ -28010,7 +28010,7 @@ package main _plain package heading27 _heading constant (int32) id = 561 __translation="id_U27" constant (text) ^text = "Section 6 - Trigonometric Functions (not for Z-machine)" - constant (int32) ^at = 18492 + constant (int32) ^at = 18496 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 6" constant (text) ^part2 = "Trigonometric Functions (not for Z-machine)" @@ -28020,7 +28020,7 @@ package main _plain package heading28 _heading constant (int32) id = 561 __translation="id_U28" constant (text) ^text = "Chapter 3 - Control" - constant (int32) ^at = 18799 + constant (int32) ^at = 18803 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 3" constant (text) ^part2 = "Control" @@ -28030,7 +28030,7 @@ package main _plain package heading29 _heading constant (int32) id = 561 __translation="id_U29" constant (text) ^text = "Section 1 - Deciding Outcomes" - constant (int32) ^at = 18804 + constant (int32) ^at = 18808 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Deciding Outcomes" @@ -28040,7 +28040,7 @@ package main _plain package heading30 _heading constant (int32) id = 561 __translation="id_U30" constant (text) ^text = "Section 2 - If and Unless" - constant (int32) ^at = 18881 + constant (int32) ^at = 18885 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "If and Unless" @@ -28050,7 +28050,7 @@ package main _plain package heading31 _heading constant (int32) id = 561 __translation="id_U31" constant (text) ^text = "Section 3 - While and Repeat" - constant (int32) ^at = 18963 + constant (int32) ^at = 18967 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "While and Repeat" @@ -28060,7 +28060,7 @@ package main _plain package heading32 _heading constant (int32) id = 561 __translation="id_U32" constant (text) ^text = "Section 4 - Loop Flow" - constant (int32) ^at = 19248 + constant (int32) ^at = 19252 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 4" constant (text) ^part2 = "Loop Flow" @@ -28070,7 +28070,7 @@ package main _plain package heading33 _heading constant (int32) id = 561 __translation="id_U33" constant (text) ^text = "Chapter 4 - Values" - constant (int32) ^at = 19283 + constant (int32) ^at = 19287 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 4" constant (text) ^part2 = "Values" @@ -28080,7 +28080,7 @@ package main _plain package heading34 _heading constant (int32) id = 561 __translation="id_U34" constant (text) ^text = "Section 1 - Enumerations" - constant (int32) ^at = 19288 + constant (int32) ^at = 19292 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Enumerations" @@ -28090,7 +28090,7 @@ package main _plain package heading35 _heading constant (int32) id = 561 __translation="id_U35" constant (text) ^text = "Section 2 - Randomness" - constant (int32) ^at = 19441 + constant (int32) ^at = 19445 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Randomness" @@ -28100,7 +28100,7 @@ package main _plain package heading36 _heading constant (int32) id = 561 __translation="id_U36" constant (text) ^text = "Section 3 - Default Values" - constant (int32) ^at = 19677 + constant (int32) ^at = 19681 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Default Values" @@ -28110,7 +28110,7 @@ package main _plain package heading37 _heading constant (int32) id = 561 __translation="id_U37" constant (text) ^text = "Chapter 5 - Text" - constant (int32) ^at = 19714 + constant (int32) ^at = 19718 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 5" constant (text) ^part2 = "Text" @@ -28120,7 +28120,7 @@ package main _plain package heading38 _heading constant (int32) id = 561 __translation="id_U38" constant (text) ^text = "Section 1 - Breaking down text" - constant (int32) ^at = 19719 + constant (int32) ^at = 19723 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Breaking down text" @@ -28130,7 +28130,7 @@ package main _plain package heading39 _heading constant (int32) id = 561 __translation="id_U39" constant (text) ^text = "Section 2 - Matching and Replacing" - constant (int32) ^at = 20068 + constant (int32) ^at = 20072 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Matching and Replacing" @@ -28140,7 +28140,7 @@ package main _plain package heading40 _heading constant (int32) id = 561 __translation="id_U40" constant (text) ^text = "Section 3 - Regular Expressions" - constant (int32) ^at = 20450 + constant (int32) ^at = 20454 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Regular Expressions" @@ -28150,7 +28150,7 @@ package main _plain package heading41 _heading constant (int32) id = 561 __translation="id_U41" constant (text) ^text = "Section 4 - Casing of Text" - constant (int32) ^at = 20625 + constant (int32) ^at = 20629 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 4" constant (text) ^part2 = "Casing of Text" @@ -28160,7 +28160,7 @@ package main _plain package heading42 _heading constant (int32) id = 561 __translation="id_U42" constant (text) ^text = "Section 5 - Adaptive Text" - constant (int32) ^at = 20763 + constant (int32) ^at = 20767 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 5" constant (text) ^part2 = "Adaptive Text" @@ -28170,7 +28170,7 @@ package main _plain package heading43 _heading constant (int32) id = 561 __translation="id_U43" constant (text) ^text = "Chapter 6 - Data Structures" - constant (int32) ^at = 21042 + constant (int32) ^at = 21046 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 6" constant (text) ^part2 = "Data Structures" @@ -28180,7 +28180,7 @@ package main _plain package heading44 _heading constant (int32) id = 561 __translation="id_U44" constant (text) ^text = "Section 1 - Tables" - constant (int32) ^at = 21048 + constant (int32) ^at = 21052 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Tables" @@ -28190,7 +28190,7 @@ package main _plain package heading45 _heading constant (int32) id = 561 __translation="id_U45" constant (text) ^text = "Section 2 - Sorting Tables" - constant (int32) ^at = 21436 + constant (int32) ^at = 21440 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Sorting Tables" @@ -28200,7 +28200,7 @@ package main _plain package heading46 _heading constant (int32) id = 561 __translation="id_U46" constant (text) ^text = "Section 3 - Lists" - constant (int32) ^at = 21514 + constant (int32) ^at = 21518 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Lists" @@ -28210,7 +28210,7 @@ package main _plain package heading47 _heading constant (int32) id = 561 __translation="id_U47" constant (text) ^text = "Section 4 - Length of lists" - constant (int32) ^at = 21882 + constant (int32) ^at = 21886 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 4" constant (text) ^part2 = "Length of lists" @@ -28220,7 +28220,7 @@ package main _plain package heading48 _heading constant (int32) id = 561 __translation="id_U48" constant (text) ^text = "Section 5 - List operations" - constant (int32) ^at = 22057 + constant (int32) ^at = 22061 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 5" constant (text) ^part2 = "List operations" @@ -28230,7 +28230,7 @@ package main _plain package heading49 _heading constant (int32) id = 561 __translation="id_U49" constant (text) ^text = "Section 6 - Relations" - constant (int32) ^at = 22238 + constant (int32) ^at = 22242 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 6" constant (text) ^part2 = "Relations" @@ -28240,7 +28240,7 @@ package main _plain package heading50 _heading constant (int32) id = 561 __translation="id_U50" constant (text) ^text = "Chapter 7 - Functional Programming" - constant (int32) ^at = 22818 + constant (int32) ^at = 22822 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 7" constant (text) ^part2 = "Functional Programming" @@ -28250,7 +28250,7 @@ package main _plain package heading51 _heading constant (int32) id = 561 __translation="id_U51" constant (text) ^text = "Section 1 - Applying Functions" - constant (int32) ^at = 22824 + constant (int32) ^at = 22828 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Applying Functions" @@ -28260,7 +28260,7 @@ package main _plain package heading52 _heading constant (int32) id = 561 __translation="id_U52" constant (text) ^text = "Section 2 - Working with Lists" - constant (int32) ^at = 23181 + constant (int32) ^at = 23185 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Working with Lists" @@ -28270,7 +28270,7 @@ package main _plain package heading53 _heading constant (int32) id = 561 __translation="id_U53" constant (text) ^text = "Chapter 8 - Rulebooks and Activities" - constant (int32) ^at = 23444 + constant (int32) ^at = 23448 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 8" constant (text) ^part2 = "Rulebooks and Activities" @@ -28280,7 +28280,7 @@ package main _plain package heading54 _heading constant (int32) id = 561 __translation="id_U54" constant (text) ^text = "Section 1 - Carrying out Activities" - constant (int32) ^at = 23451 + constant (int32) ^at = 23455 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Carrying out Activities" @@ -28290,7 +28290,7 @@ package main _plain package heading55 _heading constant (int32) id = 561 __translation="id_U55" constant (text) ^text = "Section 2 - Advanced Activities" - constant (int32) ^at = 23527 + constant (int32) ^at = 23531 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Advanced Activities" @@ -28300,7 +28300,7 @@ package main _plain package heading56 _heading constant (int32) id = 561 __translation="id_U56" constant (text) ^text = "Section 3 - Following Rules" - constant (int32) ^at = 23730 + constant (int32) ^at = 23734 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Following Rules" @@ -28310,7 +28310,7 @@ package main _plain package heading57 _heading constant (int32) id = 561 __translation="id_U57" constant (text) ^text = "Section 4 - Success and Failure" - constant (int32) ^at = 23999 + constant (int32) ^at = 24003 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 4" constant (text) ^part2 = "Success and Failure" @@ -28320,7 +28320,7 @@ package main _plain package heading58 _heading constant (int32) id = 561 __translation="id_U58" constant (text) ^text = "Chapter 9 - External Files (not for Z-machine)" - constant (int32) ^at = 24128 + constant (int32) ^at = 24132 constant (int32) ^parts = 2 constant (text) ^part1 = "Chapter 9" constant (text) ^part2 = "External Files (not for Z-machine)" @@ -28330,7 +28330,7 @@ package main _plain package heading59 _heading constant (int32) id = 561 __translation="id_U59" constant (text) ^text = "Section 1 - Files of Text" - constant (int32) ^at = 24139 + constant (int32) ^at = 24143 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Files of Text" @@ -28340,7 +28340,7 @@ package main _plain package heading60 _heading constant (int32) id = 561 __translation="id_U60" constant (text) ^text = "Section 2 - Files of Data" - constant (int32) ^at = 24212 + constant (int32) ^at = 24216 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Files of Data" @@ -28350,7 +28350,7 @@ package main _plain package heading61 _heading constant (int32) id = 561 __translation="id_U61" constant (text) ^text = "Section 3 - File Handling" - constant (int32) ^at = 24268 + constant (int32) ^at = 24272 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "File Handling" @@ -28360,7 +28360,7 @@ package main _plain package heading62 _heading constant (int32) id = 561 __translation="id_U62" constant (text) ^text = "Part Four - Adjectival Definitions" - constant (int32) ^at = 24358 + constant (int32) ^at = 24362 constant (int32) ^parts = 2 constant (text) ^part1 = "Part Four" constant (text) ^part2 = "Adjectival Definitions" @@ -28370,7 +28370,7 @@ package main _plain package heading63 _heading constant (int32) id = 561 __translation="id_U63" constant (text) ^text = "Section 1 - Miscellaneous Useful Adjectives" - constant (int32) ^at = 24364 + constant (int32) ^at = 24368 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Miscellaneous Useful Adjectives" @@ -28380,7 +28380,7 @@ package main _plain package heading64 _heading constant (int32) id = 561 __translation="id_U64" constant (text) ^text = "Section 2 - Adjectives for Relations" - constant (int32) ^at = 24723 + constant (int32) ^at = 24727 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Adjectives for Relations" @@ -28390,7 +28390,7 @@ package main _plain package heading65 _heading constant (int32) id = 561 __translation="id_U65" constant (text) ^text = "Section 3 - Adjectives for Real Numbers (not for Z-machine)" - constant (int32) ^at = 25003 + constant (int32) ^at = 25007 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Adjectives for Real Numbers (not for Z-machine)" @@ -28406,7 +28406,7 @@ package main _plain package heading67 _heading constant (int32) id = 561 __translation="id_U67" constant (text) ^text = "Section 1 - Modal verbs and contractions" - constant (int32) ^at = 25170 + constant (int32) ^at = 25174 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Modal verbs and contractions" @@ -28416,7 +28416,7 @@ package main _plain package heading68 _heading constant (int32) id = 561 __translation="id_U68" constant (text) ^text = "Section 2 - Fallback definitions (not for interactive fiction language element)" - constant (int32) ^at = 25302 + constant (int32) ^at = 25306 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Fallback definitions (not for interactive fiction language element)" @@ -28426,7 +28426,7 @@ package main _plain package heading69 _heading constant (int32) id = 561 __translation="id_U69" constant (text) ^text = "Section 1 - Grammatical definitions" - constant (int32) ^at = 25326 + constant (int32) ^at = 25330 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 1" constant (text) ^part2 = "Grammatical definitions" @@ -28436,7 +28436,7 @@ package main _plain package heading70 _heading constant (int32) id = 561 __translation="id_U70" constant (text) ^text = "Section 2 - Saying pronouns (for interactive fiction language element only)" - constant (int32) ^at = 25602 + constant (int32) ^at = 25606 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 2" constant (text) ^part2 = "Saying pronouns (for interactive fiction language element only)" @@ -28446,7 +28446,7 @@ package main _plain package heading71 _heading constant (int32) id = 561 __translation="id_U71" constant (text) ^text = "Section 3 - Further pronouns (for interactive fiction language element only)" - constant (int32) ^at = 26586 + constant (int32) ^at = 26590 constant (int32) ^parts = 2 constant (text) ^part1 = "Section 3" constant (text) ^part2 = "Further pronouns (for interactive fiction language element only)" @@ -28701,13 +28701,13 @@ package main _plain package phrasebook_heading1 _phrasebook_heading constant (text) ^text = "Saying Values" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"sayable value\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"sayable value\"

\n\n\n

This text substitution takes the value and produces a textual representation of it. Most kinds of value, and really all of the useful ones, are "sayable" - numbers, times, objects, rules, scenes, and so on. Example:

\n \n

The description of the wrist watch is "The dial reads [time of day]."\n

\n
\n \n

Here "time of day" is a value - it's a time that varies, and time is a sayable kind of value, so we might get "The dial reads 11:03 AM."

\n\n

See   5.3. 5.3. Text which names things

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"sayable value\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"sayable value\"

\n

See   5.3. 5.3. Text which names things

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[number in words]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[number in words]\"

\n\n\n

This text substitution writes out the number in English text. Example:

\n \n

"You've been wandering around for [turn count in words] turns now."\n

\n
\n \n

might produce "You've been wandering around for two hundred and thirteen turns now." The "and" here is natural on one side of the Atlantic but not the other - so with the "Use American dialect." option in place, it disappears.

\n\n

See   5.4. 5.4. Text with numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[number in words]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[number in words]\"

\n

See   5.4. 5.4. Text with numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[s]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[s]\"

\n\n\n

This text substitution prints a letter "s" unless the last number printed was 1. Example:

\n \n

"You've been wandering around for [turn count in words] turn[s] now."\n

\n
\n \n

produces "... for one turn now." or "... for two turns now." as appropriate. Note that it reacts only to numbers, not to other arithmetic values like times (or, for instance, weights from the "Metric Units" extension).

\n\n

See   5.4. 5.4. Text with numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[s]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[s]\"

\n

See   5.4. 5.4. Text with numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 showme (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 showme (value)

\n\n\n

This phrase is intended for testing purposes only. If used in a story file running inside the Inform application, it prints a line of text showing the given value and its kind; in a Released story file, it does noth ng at all. Example:

\n \n

When play begins: showme 11.\n

\n
\n \n

produces

\n \n

number: 11\n

\n
\n \n

More usefully:

\n \n

Every turn: showme the score.\n

\n
\n \n

Now, every turn, we get a line in the story's transcript like so:

\n \n

"score" = number: 0\n

\n
\n \n

Inform uses the quotation marks and equals sign to show that it had to do some work to find the answer. "score" wasn't a constant value - it was a variable, and Inform had to look up the current value.

\n\n

See   11.4. 11.4. The showme phrase

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 showme (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 showme (value)

\n

See   11.4. 11.4. The showme phrase

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading2 _phrasebook_heading constant (text) ^text = "Saying Names" package phrasebook_entry1 _phrasebook_entry @@ -28717,291 +28717,291 @@ package main _plain package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

 say \"[A object]\"

\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[An object]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[a object]\"

\n\n\n

This text substitution produces the name of the object along with its indefinite article. Example:

\n \n

Instead of examining something (called the whatever):\n
\n     "You can only just make out [a whatever]."\n

\n
\n \n

which might produce "You can only just make out a lamp-post.", or "You can only just make out Trevor.", or "You can only just make out some soldiers." The "a" or "an" in the wording is replaced by whatever indefinite article applies, if any.

\n\n

See   5.3. 5.3. Text which names things

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[An object]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[a object]\"

\n

See   5.3. 5.3. Text which names things

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

 say \"[the object]\"

\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 say \"[The object]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[the object]\"

\n\n\n

This text substitution produces the name of the object along with its definite article. Example:

\n \n

Instead of examining something (called the whatever):\n
\n     "You can only just make out [the whatever]."\n

\n
\n \n

which might produce "You can only just make out the lamp-post.", or "You can only just make out Trevor.", or "You can only just make out the soldiers." The "the" in the wording is replaced by whatever definite article applies, if any.

\n\n

See   5.3. 5.3. Text which names things

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[The object]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[the object]\"

\n

See   5.3. 5.3. Text which names things

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading3 _phrasebook_heading constant (text) ^text = "Saying Special Characters" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[bracket]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[bracket]\"

\n\n\n

This text substitution expands to a single open square bracket, avoiding the problem that a literal [ in text would look to Inform like the opening of a substitution. Example:

\n \n

"He [bracket]Lord Astor[close bracket] would, wouldn't he?"\n

\n
\n \n

prints as "He [Lord Astor] would, wouldn't he?".

\n\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[bracket]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[bracket]\"

\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[close bracket]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[close bracket]\"

\n\n\n

This text substitution expands to a single close square bracket, avoiding the problem that a literal ] in text would look to Inform like the closing of a substitution. Example:

\n \n

"He [bracket]Lord Astor[close bracket] would, wouldn't he?"\n

\n
\n \n

prints as "He [Lord Astor] would, wouldn't he?".

\n\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[close bracket]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[close bracket]\"

\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[apostrophe/']\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[apostrophe/']\"

\n\n\n

This text substitution expands to a single quotation mark, avoiding Inform's ordinary rule of converting literal single quotation marks to double at the edges of words. Example:

\n \n

Instead of going outside, say "Lucy snaps, 'What's the matter? You don't trust my cookin[apostrophe] mister?'"\n

\n
\n \n

produces:

\n \n

Lucy snaps, "What's the matter? You don't trust my cookin' mister?"\n

\n
\n \n

A more abbreviated form would be:

\n \n

Instead of going outside, say "Lucy snaps, 'What's the matter? You don't trust my cookin['] mister?'"\n

\n
\n \n

which has exactly the same meaning.

\n\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[apostrophe/']\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[apostrophe/']\"

\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[quotation mark]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[quotation mark]\"

\n\n\n

This text substitution expands to a double quotation mark. Most of the time this is unnecessary because of Inform's rule of converting literal single quotation marks to double at the edges of words, so it's needed only if we w nt a double-quote in the middle of a word for some reason. Example:

\n \n

"The compass reads 41o21'23[quotation mark]E."\n

\n
\n \n

which produces: The compass reads 41o21'23"E. (Note that ["] is not allowed; a double-quotation mark is never allowed inside double-quoted text, not even in a text substitution.)

\n\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[quotation mark]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[quotation mark]\"

\n

See   5.2. 5.2. How Inform reads quoted text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading4 _phrasebook_heading constant (text) ^text = "Saying Line and Paragraph Breaks" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[line break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[line break]\"

\n\n\n

This text substitution produces a line break. Example:

\n \n

"There is an endless sense of[line break]falling and[line break]falling."\n

\n
\n \n

Line breaks are not paragraph breaks, so the result is:

\n \n

There is an endless sense of\n
\n falling and\n
\n falling.\n

\n
\n \n

with no extra vertical spacing between these lines.

\n\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[line break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[line break]\"

\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[no line break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[no line break]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: it prevents a line break where Inform might otherwise assume one. Example:

\n \n

"The chorus sing [one of]Jerusalem[or]Rule, Britannia![no line break][at random]."\n

\n
\n \n

Here the "[no line break]" stops Inform from thinking that the exclamation mark means a sentence ending - it's part of the name of the song "Rule, Britannia!". So we get

\n \n

The chorus sing Rule, Britannia!.\n

\n
\n \n

with no line break between the "!" and ".".

\n\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[no line break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[no line break]\"

\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[conditional paragraph break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[conditional paragraph break]\"

\n\n\n

This text substitution either produces a paragraph break, or no text at all. It marks a place where Inform can put a paragraph break if necessary; in effect it simulates what Inform does every time a "before" or similar rule finishes. If there i text already printed, and text then follows on, a paragraph break is made. But if not, nothing is done. This is sometimes useful when producing a large amount of text which changes with the circumstances so that it is hard to predict in advance whether a paragraph break is needed or not.

\n\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[conditional paragraph break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[conditional paragraph break]\"

\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[paragraph break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[paragraph break]\"

\n\n\n

This text substitution produces a paragraph break. Example:

\n \n

"This is not right.[paragraph break]No, something is terribly wrong."\n

\n
\n \n

Paragraph breaks have a little vertical spacing in them, unlike mere line breaks, so the result is:

\n \n

This is not right.\n

\n
\n \n \n

No, something is terribly wrong.\n

\n
\n \n\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[paragraph break]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[paragraph break]\"

\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 say \"[run paragraph on]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[run paragraph on]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: it prevents a paragraph break occurring after the present text is printed, in case Inform might be tempted to place one there. Example:

\n \n

Before taking something, say "Very well. [run paragraph on]".\n

\n
\n \n

This allows the reply to, say, TAKE ENVELOPE to be

\n \n

Very well. Taken.\n

\n
\n \n

rather than

\n \n

Very well.\n

\n
\n \n \n

Taken.\n

\n
\n \n

which is how texts produced by different rules would normally be shown. (It's a traditional printer's term. See Oldfield's Manual of Typography, 1892, under "When two paragraphs are required to be made into one, or, in technical language, 'to run on'.")

\n\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[run paragraph on]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[run paragraph on]\"

\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 if a paragraph break is pending:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if a paragraph break is pending:

\n\n\n

This condition is true if text has recently been said in such a way that Inform expects to add a paragraph break at the next opportunity (for instance when the present rule ends and another one says something, or when a "[conditio al paragraph break]" is made).

\n\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if a paragraph break is pending:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if a paragraph break is pending:

\n

See   5.8. 5.8. Line breaks and paragraph breaks

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading5 _phrasebook_heading constant (text) ^text = "Saying If and Otherwise" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[if a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[if a condition]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: it says that the text following should be said only if the condition is true. That continues until the end of the text, or until an "[end if]" substitution whichever comes first. If the "[otherwise]" and "[otherwise if]" substitutions are also present, they allow alternatives to be added in case the condition is false. Example:

\n \n

The wine cask is a container. The printed name of the cask is "[if open]broached, empty cask[otherwise]sealed wine cask".\n

\n
\n \n

we find that the cask is described as "a broached, empty cask" when open, and "a sealed wine cask" when closed. A longer example which begins and ends with fixed text, but has two alternatives in the middle:

\n \n

The Customs Wharf is a room. "Amid the bustle of the quayside, [if the cask is open]many eyes stray to your broached cask. [otherwise]nobody takes much notice of a man heaving a cask about. [end if]Sleek gondolas jostle at the plank pier."\n

\n
\n \n\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[if a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[if a condition]\"

\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[unless a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[unless a condition]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: it says that the text following should be said only if the condition is false. That continues until the end of the text, or until an "[end if]" substitution, which ver comes first. If the "[otherwise]" and "[otherwise if]" substitutions are also present, they allow alternatives to be added in case the condition is true. Example:

\n \n

The Customs Hall is a room. "With infinite slowness, with ledgers and quill pens, the clerks ruin their eyesight.[unless the player is a woman] They barely even glance in your direction."\n

\n
\n \n\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[unless a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[unless a condition]\"

\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[otherwise/else if a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[otherwise/else if a condition]\"

\n\n\n

This text substitution produces no text, and can be used only following an "[if ...]" or "[unless ...]" text substitution. It gives an alternative text to use if the first condition didn't apply, but this one does. Example:

\n \n

The wine cask is a container. The printed name of the cask is "[if open]broached, empty cask[otherwise if transparent]sealed cask half-full of sloshing wine[otherwise]sealed wine cask".\n

\n
\n \n\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[otherwise/else if a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[otherwise/else if a condition]\"

\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[otherwise/else unless a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[otherwise/else unless a condition]\"

\n\n\n

This text substitution produces no text, and can be used only following an "[if ...]" or "[unless ...]" text substitution. It gives an alternative text to use if the first condition didn't apply, and this one is false too.

\n\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[otherwise/else unless a condition]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[otherwise/else unless a condition]\"

\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

 say \"[otherwise]\"

\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 say \"[else]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[otherwise]\"

\n\n\n

This text substitution produces no text, and can be used only following an "[if ...]" or "[unless ...]" text substitution. It switches from text which appears if the condition is true, to text which appears if it is false. Example:

\n \n

The wine cask is a container. The printed name of the cask is "[if open]broached, empty cask[otherwise]sealed wine cask".\n

\n
\n \n\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[else]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[otherwise]\"

\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 say \"[end if]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[end if]\"

\n\n\n

This text substitution produces no text, and can be used only to close off a stretch of varying text which begins with "[if ...]".

\n\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[end if]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[end if]\"

\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 say \"[end unless]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[end unless]\"

\n\n\n

This text substitution produces no text, and can be used only to close off a stretch of varying text which begins with "[unless ...]".

\n\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[end unless]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[end unless]\"

\n

See   5.6. 5.6. Text with variations

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading6 _phrasebook_heading constant (text) ^text = "Saying one of" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[one of]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[one of]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: it switches between a number of alternative texts, which follow it and are divided by "[or]" substitutions, according to a strategy given in closing substitution. Example:

\n \n

"You flip the coin. [one of]Heads[or]Tails[purely at random]!"\n

\n
\n \n

Here there are just two alternatives, and the strategy is "purely at random". Exactly half of the time the text will be printed as "You flip the coin. Heads!"; and the other half, "You flip the coin. Tails!".

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[one of]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[one of]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[or]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[or]\"

\n\n\n

This text substitution produces no text, and can be used only in a "[one of]..." construction. It divides alternative wordings. Example:

\n \n

"You flip the coin. [one of]Heads[or]Tails[purely at random]!"\n

\n
\n \n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[or]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[or]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[at random]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that the alternatives are chosen at random except that the same choice cannot come up twice running. This is useful to avoid the deadening effect of repeating the exact same message. Example:

\n \n

"The light changes randomly again; now it's [one of]green[or]amber[or]red[at random]."\n

\n
\n \n

Here we can safely say the light "changes", because the new colour cannot be the same as the one printed the last time.

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[at random]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[purely at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[purely at random]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that the alternatives are chosen uniformly randomly.

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[purely at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[purely at random]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 say \"[then at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[then at random]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that the alternatives are chosen in sequence until all have been seen, and then after that, at random except that the same choice cannot come up twice running. Example:

\n \n

"Maybe the murderer is [one of]Colonel Mustard[or]Professor Plum[or]Cardinal Cerise[then at random]."\n

\n
\n \n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[then at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[then at random]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 say \"[then purely at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[then purely at random]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that the alternatives are chosen in sequence until all have been seen, but that after that they are chosen uniformly randomly.

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[then purely at random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[then purely at random]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 say \"[sticky random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[sticky random]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that a random choice is made the first time the text is printed, but that it sticks from there on. Example:

\n \n

"The newspaper headline is: [one of]War Casualties[or]Terrorists[or]Banks[sticky random] [one of]Continue To Expand[or]Lose Out[sticky random]."\n

\n
\n \n

Although the newspaper headline will change with each playing, it will not alter during play.

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[sticky random]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[sticky random]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 say \"[as decreasingly likely outcomes]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[as decreasingly likely outcomes]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that the alternatives are chosen at random, except that the first is most likely to be chosen, the second is next most likely, and so n down to the rarest at the end. Example:

\n \n

"Zorro strides by, [one of]looking purposeful[or]grim-faced[or]deep in thought[or]suppressing a yawn[or]scratching his ribs[or]trying to conceal that he has cut himself shaving[as decreasingly likely outcomes]."\n

\n
\n \n

There are six outcomes here: the first is six times as likely as the last, and those in between are similarly scaled, so Zorro cuts himself shaving only once in 21 tries, while he looks purposeful almost a third of the time.

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[as decreasingly likely outcomes]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[as decreasingly likely outcomes]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 say \"[in random order]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[in random order]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. A random order is chosen for the alternative passages of text, and they are used in that order as the text is printed again an again. When one random cycle finishes, a new one begins. The effect is somewhat like the "shuffle album" feature on an iPod. Example:

\n \n

"You dip into the chapter on [one of]freshwater fish[or]hairless mammals[or]extinct birds[or]amphibians such as the black salamander[in random order]."\n

\n
\n \n

One small restriction: if there are more than 32 variations, purely random choices will be printed, and there will be no guarantee that repeats are prevented.

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[in random order]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[in random order]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 say \"[cycling]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[cycling]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that the alternatives are used one at a time, in turn: after the last one is reached, we start again from t e first. Example:

\n \n

"The pundits discuss [one of]the weather[or]world events[or]celebrity gossip[cycling]."\n

\n
\n \n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[cycling]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[cycling]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 say \"[stopping]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[stopping]\"

\n\n\n

This text substitution produces no text, and can be used only to end a "[one of]..." construction. It indicates that the alternatives are used one at a time, in turn: once the last one is reached, it's used forever after. Example:

\n \n

"[one of]The phone rings[or]The phone rings a second time[or]The phone rings again[stopping]."\n

\n
\n \n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[stopping]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[stopping]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry12 _phrasebook_entry constant (text) ^text = "

 say \"[first time]\"

\n" package phrasebook_entry13 _phrasebook_entry - constant (text) ^text = "

 say \"[only]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[first time]\"

\n\n\n

This pair of text substitutions causes whatever is between them to be printed only the first time the text is printed. Example:

\n \n

"The screen door squeaks loudly as when you open it. [first time]Well, you'll get used to it eventually. [only]"\n

\n
\n \n

This is exactly equivalent to

\n \n

"The screen door squeaks loudly as when you open it. [one of]Well, you'll get used to it eventually. [or][stopping]";\n

\n
\n \n

but easier to read.

\n\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[only]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[first time]\"

\n

See   5.7. 5.7. Text with random alternatives

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading7 _phrasebook_heading constant (text) ^text = "Saying Fonts and Visual Effects" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[bold type]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[bold type]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: to make the text following it appear in bold face. "[roman type]" should be used to switch back to normal. Example:

\n \n

"Jane looked down. [bold type]Danger[roman type], the sign read."\n

\n
\n \n\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[bold type]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[bold type]\"

\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[italic type]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[italic type]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: to make the text following it appear in italics. "[roman type]" should be used to switch back to normal. Example:

\n \n

"This is [italic type]very suspicious[roman type], said Peter."\n

\n
\n \n\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[italic type]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[italic type]\"

\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[roman type]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[roman type]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: to return to ordinary Roman type after a previous use of "[bold type]" or "[italic type]".

\n\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[roman type]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[roman type]\"

\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[fixed letter spacing]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[fixed letter spacing]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: to make the text following it appear with fixed letter spacing. In variable letter spacing, a lower case "m" is much wider than an "l", which is natural to the ey since it has been printing practice since the Renaissance. Fixed letter spacing is more like typewriting, and it is best used to reproduce typewritten text or printed notices; it can also be convenient for making simple diagrams. Example:

\n \n

"On the door is written: [fixed letter spacing]J45--O-O-O[variable letter spacing]."\n

\n
\n \n\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[fixed letter spacing]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[fixed letter spacing]\"

\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 say \"[variable letter spacing]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[variable letter spacing]\"

\n\n\n

This text substitution produces no text. It's used only for a side-effect: to return to ordinary letter spacing after a previous use of "[fixed letter spacing]".

\n\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[variable letter spacing]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[variable letter spacing]\"

\n

See   5.9. 5.9. Text with type styles

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading8 _phrasebook_heading constant (text) ^text = "Saying Lists of Values" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[list of values in brace notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[list of values in brace notation]\"

\n\n\n

This text substitution produces the list in the form of "{", then a comma-separated list, and then "}", which looks less like an English sentence but more mathematical. Example:

\n \n

"[list of people in brace notation]"\n

\n
\n \n

might produce "{ yourself, Mr Darcy, Flashman }".

\n\n

See   21.3. 21.3. Saying lists of values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[list of values in brace notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[list of values in brace notation]\"

\n

See   21.3. 21.3. Saying lists of values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[list of objects with definite articles]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[list of objects with definite articles]\"

\n\n\n

This text substitution writes out the list in sentence form, adding the appropriate definite articles. Example:

\n \n

let L be {the piano, the music stand};\n
\n say "[L with definite articles]";\n

\n
\n \n

says "the piano and the music stand".

\n\n

See   21.3. 21.3. Saying lists of values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[list of objects with definite articles]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[list of objects with definite articles]\"

\n

See   21.3. 21.3. Saying lists of values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[list of objects with indefinite articles]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[list of objects with indefinite articles]\"

\n\n\n

This text substitution writes out the list in sentence form, adding the appropriate indefinite articles. Example:

\n \n

let L be {the piano, the music stand};\n
\n say "[L with definite articles]";\n

\n
\n \n

says "a piano and a music stand".

\n\n

See   21.3. 21.3. Saying lists of values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[list of objects with indefinite articles]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[list of objects with indefinite articles]\"

\n

See   21.3. 21.3. Saying lists of values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading9 _phrasebook_heading constant (text) ^text = "Conditions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 now (a condition)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 now (a condition)

\n\n\n

This phrase makes the condition become true. Examples:

\n \n

now the score is 100;\n
\n now the player is Kevin;\n
\n now the front door is open;\n
\n now Mr Darcy is wearing the top hat;\n
\n now all the doors are open;\n
\n now all of the things in the sack are in the box;\n

\n
\n \n

Inform issues a problem message if the condition asks to do the impossible ("now 3 is an even number") or is vague ("now the duck is not in the Lily Pond") or not in the present tense ("now the front door had been open").

\n\n

See   8.11. 8.11. Now...

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 now (a condition)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 now (a condition)

\n

See   8.11. 8.11. Now...

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 whether or not (a condition) ... truth state

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 whether or not (a condition) ... truth state

\n\n\n

This phrase converts a condition into its result as a value, which is always either "true" or "false". Example:

\n \n

whether or not 20 is an odd number\n

\n
\n \n

produces the truth state "false". This is mostly useful for storing up results to look at later:

\n \n

let victory be whether or not all the treasures are in the cabinet;\n

\n
\n \n

and then subsequently:

\n \n

if victory is true, ...\n

\n
\n \n\n

See   11.5. 11.5. Conditions and questions

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 whether or not (a condition) ... truth state

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 whether or not (a condition) ... truth state

\n

See   11.5. 11.5. Conditions and questions

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading10 _phrasebook_heading constant (text) ^text = "Assigning Temporary Variables" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 let (a new name) be (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be (value)

\n\n\n

This phrase creates a new temporary variable, starting it with the value supplied. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Examples:

\n \n

let outer bull be 25;\n
\n let the current appearance be "reddish brown";\n
\n let the special room be Marley Wood;\n

\n
\n \n

The kinds of these are deduced from the values given, so that, for instance,

\n \n

say "The outer bull scores [the outer bull in words] when you practice archery in [special room]."\n

\n
\n \n

produces

\n \n

The outer bull scores twenty-five when you practice archery in Marley Wood.\n

\n
\n \n

The variable name should be a new one; if it's the name of an existing one, then the kinds must agree. So:

\n \n

let outer bull be 25;\n
\n let outer bull be 50;\n

\n
\n \n

is a legal combination, because the second "let" simply changes the value of the existing "outer bull" variable to a different number.

\n\n

See   11.15. 11.15. Let and temporary variables

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 let (a new name) be (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be (value)

\n

See   11.15. 11.15. Let and temporary variables

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 let (a new name) be (name of kind)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be (name of kind)

\n\n\n

This phrase creates a new temporary variable of the given kind. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

\n \n

let inner bull be a number;\n

\n
\n \n

The variable created holding the default value for that kind - in this case, the number 0. A handful of very obscure kinds have no default values, and then a problem message is produced. Inform also disallows:

\n \n

let the conveyance be a vehicle;\n

\n
\n \n

because temporary variables aren't allowed to have kinds more specific than "object". (This is a good thing: suppose there are no vehicles in the world?) It's quite safe in such cases to use

\n \n

let the conveyance be an object;\n

\n
\n \n

instead, which creates it as the special object value "nothing".

\n\n

See   11.15. 11.15. Let and temporary variables

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 let (a new name) be (name of kind)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be (name of kind)

\n

See   11.15. 11.15. Let and temporary variables

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 let (a new name) be (description of relations of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be (description of relations of values)

\n\n\n

This phrase creates a new temporary variable, and sets its value to the identity of a newly created and equally temporary relation. These last only for the present block of phrases, which certainly means that they exist only in the current rule. Example:

\n \n

let the password dictionary be a relation of texts;\n

\n
\n \n

This makes a purely temporary various-to-various relation between texts, which lasts as long as the temporary value "password dictionary" lasts. By default, relations are various-to-various, but we could instead write, say:

\n \n

let the nicknames catalogue be a various-to-one relation of texts;\n

\n
\n \n\n

See   13.15. 13.15. Temporary relations

\n

Kind: phrase (value, description of relations of Ks to Ls) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 let (a new name) be (description of relations of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be (description of relations of values)

\n

See   13.15. 13.15. Temporary relations

\n

Kind: phrase (value, description of relations of Ks to Ls) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 let (a new name) be given by (equation name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be given by (equation name)

\n\n\n

This phrase creates a new temporary variable, starting it with the value found by solving the given equation. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

\n \n

let F be given by Newton's Second Law where a is the acceleration due to gravity;\n

\n
\n \n

There is also a more compact syntax, giving the equation explicitly:

\n \n

let KE be given by KE = mv^2/2 where KE is an energy;\n

\n
\n \n\n

See   15.18. 15.18. Equations

\n

Kind: phrase (value, equation name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 let (a new name) be given by (equation name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a new name) be given by (equation name)

\n

See   15.18. 15.18. Equations

\n

Kind: phrase (value, equation name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 let (a temporary named value) be (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a temporary named value) be (value)

\n\n\n

This phrase creates a new temporary variable, starting it with the value supplied. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Examples:

\n \n

let outer bull be 25;\n
\n let the current appearance be "reddish brown";\n
\n let the special room be Marley Wood;\n

\n
\n \n

The kinds of these are deduced from the values given, so that, for instance,

\n \n

say "The outer bull scores [the outer bull in words] when you practice archery in [special room]."\n

\n
\n \n

produces

\n \n

The outer bull scores twenty-five when you practice archery in Marley Wood.\n

\n
\n \n

The variable name should be a new one; if it's the name of an existing one, then the kinds must agree. So:

\n \n

let outer bull be 25;\n
\n let outer bull be 50;\n

\n
\n \n

is a legal combination, because the second "let" simply changes the value of the existing "outer bull" variable to a different number.

\n\n

See   11.15. 11.15. Let and temporary variables

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 let (a temporary named value) be (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a temporary named value) be (value)

\n

See   11.15. 11.15. Let and temporary variables

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 let (a temporary named value) be given by (equation name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a temporary named value) be given by (equation name)

\n\n\n

This phrase creates a new temporary variable, starting it with the value found by solving the given equation. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

\n \n

let F be given by Newton's Second Law where a is the acceleration due to gravity;\n

\n
\n \n

There is also a more compact syntax, giving the equation explicitly:

\n \n

let KE be given by KE = mv^2/2 where KE is an energy;\n

\n
\n \n\n

See   15.18. 15.18. Equations

\n

Kind: phrase (value, equation name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 let (a temporary named value) be given by (equation name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 let (a temporary named value) be given by (equation name)

\n

See   15.18. 15.18. Equations

\n

Kind: phrase (value, equation name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading11 _phrasebook_heading constant (text) ^text = "Increase and Decrease" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 increase (a stored value) by (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 increase (a stored value) by (value)

\n\n\n

This phrase increases the variable, table entry, list entry, or property by the given amount, which must be of a compatible kind. Example:

\n \n

increase the score by 8;\n
\n increase the time of day by 5 minutes;\n

\n
\n \n\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 increase (a stored value) by (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 increase (a stored value) by (value)

\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 decrease (a stored value) by (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decrease (a stored value) by (value)

\n\n\n

This phrase decreases the variable, table entry, list entry, or property by the given amount, which must be of a compatible kind. Example:

\n \n

decrease the score by 6;\n
\n decrease the carrying capacity of the player by 10;\n

\n
\n \n\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 decrease (a stored value) by (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decrease (a stored value) by (value)

\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase (value, value) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 increment (a stored value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 increment (a stored value)

\n\n\n

This phrase increases the variable, table entry, list entry, or property by 1. Example:

\n \n

increment the score;\n

\n
\n \n\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 increment (a stored value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 increment (a stored value)

\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 decrement (a stored value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decrement (a stored value)

\n\n\n

This phrase decreases the variable, table entry, list entry, or property by 1. Example:

\n \n

decrement the score;\n

\n
\n \n\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 decrement (a stored value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decrement (a stored value)

\n

See   8.12. 8.12. Increasing and decreasing

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading12 _phrasebook_heading constant (text) ^text = "Arithmetic Operations" package phrasebook_entry1 _phrasebook_entry constant (text) ^text = "

 (arithmetic value) + (arithmetic value) ... value

\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 (arithmetic value) plus (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) + (arithmetic value) ... value

\n\n\n

This phrase performs signed addition on the given values, whose kinds must agree, and produces the result. Examples:

\n \n

200 + 1 = 201\n
\n 10:04 AM + two minutes = 10:06 AM\n

\n
\n \n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (arithmetic value) plus (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) + (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

 (arithmetic value) - (arithmetic value) ... value

\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 (arithmetic value) minus (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) - (arithmetic value) ... value

\n\n\n

This phrase performs signed subtraction on the given values, whose kinds must agree, and produces the result. Examples:

\n \n

200 - 1 = 199\n
\n 10:04 AM - two minutes = 10:02 AM\n

\n
\n \n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (arithmetic value) minus (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) - (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

 (arithmetic value) * (arithmetic value) ... value

\n" package phrasebook_entry6 _phrasebook_entry constant (text) ^text = "

 (arithmetic value) times (arithmetic value) ... value

\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 (arithmetic value) multiplied by (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) * (arithmetic value) ... value

\n\n\n

This phrase performs signed multiplication on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:

\n \n

201 times 3 = 603\n
\n two minutes times 4 = eight minutes\n

\n
\n \n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (arithmetic value) multiplied by (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) * (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry constant (text) ^text = "

 (arithmetic value) / (arithmetic value) ... value

\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 (arithmetic value) divided by (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) / (arithmetic value) ... value

\n\n\n

This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:

\n \n

201 divided by 3 = 67\n
\n 202 divided by 3 = 67\n
\n 202.0 divided by 3 = 67.33334\n
\n twenty minutes divided by 4 = five minutes\n
\n twenty minutes divided by five minutes = 4\n

\n
\n \n

Division rounds whole-number values down to the nearest whole number. An attempt to divide a number by 0 will cause a run-time problem message; but an attempt to divide a real number by 0 will instead produce plus infinity or minus infinity.

\n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (arithmetic value) divided by (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) / (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 remainder after dividing (arithmetic value) by (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remainder after dividing (arithmetic value) by (arithmetic value) ... value

\n\n\n

This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and then produces the remainder. Examples:

\n \n

remainder after dividing 201 by 5 = 1\n
\n remainder after dividing twenty minutes by 7 = six minutes\n

\n
\n \n

It is mathematically impossible to divide by 0, so any attempt to find the remainder after dividing a number by 0 will cause a run-time problem message. For a real number this won't arise and the remainder will usually be 0.0.

\n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 remainder after dividing (arithmetic value) by (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remainder after dividing (arithmetic value) by (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 (arithmetic value) to the nearest (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) to the nearest (arithmetic value) ... value

\n\n\n

This phrase rounds the given value off, rounding upward in boundary cases. Examples:

\n \n

201 to the nearest 5 = 200\n
\n 205 to the nearest 10 = 210\n
\n 10:27 AM to the nearest five minutes = 10:25 AM\n

\n
\n \n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (arithmetic value) to the nearest (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (arithmetic value) to the nearest (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

 square root of (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 square root of (arithmetic value) ... value

\n\n\n

This phrase produces an approximate square root, to the nearest integer, of the given value, which must be of a kind which has square roots. Example:

\n \n

square root of 16 = 4\n

\n
\n \n

Trying to take the square root of a negative number will cause a run-time problem, because then we can't even nearly solve it.

\n

(Warning: this is slow to compute if the Z-machine setting is used. For

\n

best performance, use Glulx.)

\n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase arithmetic value -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 square root of (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 square root of (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase arithmetic value -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry13 _phrasebook_entry - constant (text) ^text = "

 cube root of (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 cube root of (arithmetic value) ... value

\n\n\n

This phrase produces an approximate cube root, to the nearest integer, of the given value, which must be of a kind which has cube roots. Example:

\n \n

cube root of 27 = 3\n
\n cube root of -27 = -3\n

\n
\n \n

(Warning: this is not very accurate if the Z-machine setting is used. For

\n

best performance, use Glulx.)

\n\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase arithmetic value -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 cube root of (arithmetic value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 cube root of (arithmetic value) ... value

\n

See   15.5. 15.5. Arithmetic

\n

Kind: phrase arithmetic value -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry14 _phrasebook_entry - constant (text) ^text = "

 total (arithmetic values valued property) of (description of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 total (arithmetic values valued property) of (description of values) ... value

\n\n\n

This phrase produces the total of some property held by all of the values matching the description. A problem message is produced if the values in question can't have that property ("the total carrying capacity of scenes"), or if it holds a kind of value which can't meaningfully be ad ed up ("the total description of open doors"). Example:

\n \n

total carrying capacity of people in the Deep Pool\n

\n
\n \n\n

See   15.17. 15.17. Totals

\n

Kind: phrase (arithmetic values valued property, description of values) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 total (arithmetic values valued property) of (description of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 total (arithmetic values valued property) of (description of values) ... value

\n

See   15.17. 15.17. Totals

\n

Kind: phrase (arithmetic values valued property, description of values) -> arithmetic value

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading13 _phrasebook_heading constant (text) ^text = "Saying Real Numbers" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[real number to number decimal places]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number to number decimal places]\"

\n\n\n

This text substitution writes out the number to the given number of decimal places. Examples:

\n \n

"The semicircle is roughly [pi to 3 decimal places] paces around."\n

\n
\n \n

produces "The semicircle is roughly 3.142 paces around." The number of places can only usefully be from 1 to 8. Note that, for example, "[1.235 x 10^-7 to 3 decimal places]" produces 0.0; "[1.235678 x 10^8 to 3 decimal places]" produces "1.236 x 10^8".

\n\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[real number to number decimal places]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number to number decimal places]\"

\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[real number in decimal notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number in decimal notation]\"

\n\n\n

This text substitution writes out the number in decimal form, that is, avoiding "x 10^n" even for very large or very small quantities. For example,

\n \n

"[1.23457 x 10^8 in decimal notation]"\n

\n
\n \n

produces 123457000.0 rather than 1.23457 x 10^8. This can look pretty extreme: for example, "[1.8983 x 10^27 in decimal notation]", the mass of the planet Jupiter in kilograms, produces 1898296960000000000000000000.0.

\n\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[real number in decimal notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number in decimal notation]\"

\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[real number to number decimal places in decimal notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number to number decimal places in decimal notation]\"

\n\n\n

This text substitution writes out the number in decimal form, but rounding to the accuracy given.

\n\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[real number to number decimal places in decimal notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number to number decimal places in decimal notation]\"

\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[real number in scientific notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number in scientific notation]\"

\n\n\n

This text substitution writes out the number in scientific form, that is, using "x 10^n" even for easy-to-judge quantities. For example,

\n \n

"[the reciprocal of 137 in scientific notation]"\n

\n
\n \n

produces 7.29927 x 10^-3 rather than 0.0073. This can look odd: for example, "[pi in scientific notation]" comes out as 3.14159 x 10^0 rather than 3.14159.

\n\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[real number in scientific notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number in scientific notation]\"

\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 say \"[real number to number decimal places in scientific notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number to number decimal places in scientific notation]\"

\n\n\n

This text substitution writes out the number in scientific form, but rounding to the accuracy given.

\n\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[real number to number decimal places in scientific notation]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[real number to number decimal places in scientific notation]\"

\n

See   15.4. 15.4. Printing real numbers

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading14 _phrasebook_heading constant (text) ^text = "Real Arithmetic" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 reciprocal of (real number) ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 reciprocal of (real number) ... real number

\n\n\n

Calculates 1/x, that is, divides up 1 into this many pieces. Examples:

\n \n

reciprocal of -2 = -0.5\n
\n reciprocal of 0.1 = 10.0\n
\n reciprocal of 7 = 0.14286\n
\n reciprocal of plus infinity = 0.0\n

\n
\n \n\n

See   15.6. 15.6. Powers and logarithms

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 reciprocal of (real number) ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 reciprocal of (real number) ... real number

\n

See   15.6. 15.6. Powers and logarithms

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 absolute value of (real number) ... real number     y = abs(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 absolute value of (real number) ... real number     y = abs(x)

\n\n\n

Removes the sign from a value, leaving positive numbers alone but making negative ones positive. Examples:

\n \n

absolute value of 62.1 = 62.1\n
\n absolute value of 0 = 0.0\n
\n absolute value of -62.1 = 62.1\n
\n absolute value of minus infinity = plus infinity\n

\n
\n \n\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  abs()

\n

Name:  abs function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 absolute value of (real number) ... real number     y = abs(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 absolute value of (real number) ... real number     y = abs(x)

\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  abs()

\n

Name:  abs function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 real square root of (real number) ... real number     y = root(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 real square root of (real number) ... real number     y = root(x)

\n\n\n

This phrase produces a square root, as accurately as a real number can hold it, of the given value, which must be of a kind which has square roots. Example:

\n \n

real square root of 2 = 1.41421\n

\n
\n \n

The real square root of a negative number is nonexistent.

\n\n

See   15.5. 15.5. Arithmetic

\n

In equations: write as  root()

\n

Name:  root function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 real square root of (real number) ... real number     y = root(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 real square root of (real number) ... real number     y = root(x)

\n

See   15.5. 15.5. Arithmetic

\n

In equations: write as  root()

\n

Name:  root function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

 real square of (real number) ... real number     y = rsqr(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 real square of (real number) ... real number     y = rsqr(x)

\n

In equations: write as  rsqr()

\n

Name:  rsqr function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 ceiling of (real number) ... real number     y = ceiling(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 ceiling of (real number) ... real number     y = ceiling(x)

\n\n\n

Produces the smallest integer value greater than or equal to the one given. Examples:

\n \n

ceiling of pi = 4.0\n
\n ceiling of -16.315 = -16.0\n

\n
\n \n

(Note that the result is still a real number; it simply has no fractional part any more.)

\n\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  ceiling()

\n

Name:  ceiling function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 ceiling of (real number) ... real number     y = ceiling(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 ceiling of (real number) ... real number     y = ceiling(x)

\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  ceiling()

\n

Name:  ceiling function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 floor of (real number) ... real number     y = floor(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 floor of (real number) ... real number     y = floor(x)

\n\n\n

Produces the largest integer value less than or equal to the one given. Examples:

\n \n

floor of pi = 3.0\n
\n floor of -16.315 = -17.0\n

\n
\n \n

(Note that the result is still a real number; it simply has no fractional part any more.)

\n\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  floor()

\n

Name:  floor function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 floor of (real number) ... real number     y = floor(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 floor of (real number) ... real number     y = floor(x)

\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  floor()

\n

Name:  floor function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 (real number) to the nearest whole number ... number     y = int(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (real number) to the nearest whole number ... number     y = int(x)

\n\n\n

This phrase performs signed addition on the given values, whose kinds must agree, and produces the result. Examples:

\n \n

1.4 to the nearest whole number = 1\n
\n 1.6 to the nearest whole number = 2\n
\n -1.6 to the nearest whole number = -2\n

\n
\n \n

We probably ought to bear in mind that the limited range of "number" means that the nearest whole number might not be all that near. For example:

\n \n

6 x 10^23 to the nearest whole number = 2147483647\n

\n
\n \n

because 2147483647 is the highest value a "number" can have.

\n\n

See   15.3. 15.3. Real number conversions

\n

In equations: write as  int()

\n

Name:  int function

\n

Kind: phrase real number -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (real number) to the nearest whole number ... number     y = int(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (real number) to the nearest whole number ... number     y = int(x)

\n

See   15.3. 15.3. Real number conversions

\n

In equations: write as  int()

\n

Name:  int function

\n

Kind: phrase real number -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading15 _phrasebook_heading constant (text) ^text = "Exponential Functions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 natural/-- logarithm of (real number) ... real number     y = log(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 natural/-- logarithm of (real number) ... real number     y = log(x)

\n\n\n

Finds what power e would have to be raised to in order to get this value. Examples:

\n \n

logarithm of e = 1.0\n
\n logarithm of 1 = 0.0\n
\n logarithm of 1000 = 6.90776\n
\n logarithm of exponential of 7.12 = 7.12\n

\n
\n \n

Logarithms of zero or negative numbers are nonexistent. This is the function which most calculators label as "ln", for "log natural", but in mathematical and scientific papers it's more often written "log", and Inform follows that convention.

\n\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  log()

\n

Name:  log function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 natural/-- logarithm of (real number) ... real number     y = log(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 natural/-- logarithm of (real number) ... real number     y = log(x)

\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  log()

\n

Name:  log function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 logarithm to base (number) of (real number) ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 logarithm to base (number) of (real number) ... real number

\n\n\n

Finds what power the base would have to be raised to in order to get this value. Examples:

\n \n

logarithm to base 10 of 1000000 = 6.0\n
\n logarithm to base 10 of 350 = 2.54407\n
\n logarithm to base 2 of 256 = 8.0\n

\n
\n \n

Logarithms of zero or negative numbers are nonexistent. Note that "logarithm to base 10 of ..." is what most calculators call simply "log", but Inform doesn't: it uses "log" for natural logarithms.

\n\n

See   15.6. 15.6. Powers and logarithms

\n

Kind: phrase (number, real number) -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 logarithm to base (number) of (real number) ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 logarithm to base (number) of (real number) ... real number

\n

See   15.6. 15.6. Powers and logarithms

\n

Kind: phrase (number, real number) -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 exponential of (real number) ... real number     y = exp(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 exponential of (real number) ... real number     y = exp(x)

\n\n\n

Computes e to the given power, where e is the base of natural logarithms. Examples:

\n \n

exponential of 0 = 1.0\n
\n exponential of 1 = e = 2.7182818\n
\n exponential of -10 = 4.53999 x 10^-5\n
\n exponential of 10 = 22026.46484\n
\n exponential of logarithm of 7.12 = 7.12\n

\n
\n \n\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  exp()

\n

Name:  exp function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 exponential of (real number) ... real number     y = exp(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 exponential of (real number) ... real number     y = exp(x)

\n

See   15.6. 15.6. Powers and logarithms

\n

In equations: write as  exp()

\n

Name:  exp function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 (real number) to the power (real number) ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (real number) to the power (real number) ... real number

\n\n\n

Computes x to the power y. Examples:

\n \n

2 to the power 4 = 16.0\n
\n 100 to the power 0.5 = 10.0\n
\n 7 to the power -1 = 0.14286\n
\n pi to the power 0 = 1.0\n

\n
\n \n

In the words of the Glulx specification document (section 2.12), "the special cases are breathtaking": if you need to know exactly what, say, "minus infinity to the power Y" will do for different cases of Y, refer to the details of the "pow" opcode.

\n\n

See   15.6. 15.6. Powers and logarithms

\n

Kind: phrase (real number, real number) -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (real number) to the power (real number) ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (real number) to the power (real number) ... real number

\n

See   15.6. 15.6. Powers and logarithms

\n

Kind: phrase (real number, real number) -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading16 _phrasebook_heading constant (text) ^text = "Trigonometric Functions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 (real number) degrees ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (real number) degrees ... real number

\n\n\n

Inform measures angles in radians, a convention in which the angle for a half circle is pi, and a right angle is pi divided by 2. This is better from a mathematical point of view, but in practice most people think about angles using degree , where 180 degrees is a half-circle and a right angle is 90 degrees. This phrase helps with that by converting from degrees to radians: in other words, it multiplies by 0.0174532925, since that's roughly 1/180th of pi. Examples:

\n \n

sine of 90 degrees = 0.0\n
\n cosine of 60 degrees = 0.5\n

\n
\n \n\n

See   15.7. 15.7. Trigonometry

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (real number) degrees ... real number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (real number) degrees ... real number

\n

See   15.7. 15.7. Trigonometry

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 sine of (real number) ... real number     y = sin(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sine of (real number) ... real number     y = sin(x)

\n\n\n

The length of the upright of a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

\n \n

sine of 0 = 0\n
\n sine of 45 degrees = 0.70711\n
\n sine of (pi divided by 4) = 0.70711\n
\n sine of (pi divided by 2) = 1.0\n
\n sine of pi = 0\n

\n
\n \n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  sin()

\n

Name:  sin function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sine of (real number) ... real number     y = sin(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sine of (real number) ... real number     y = sin(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  sin()

\n

Name:  sin function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 cosine of (real number) ... real number     y = cos(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 cosine of (real number) ... real number     y = cos(x)

\n\n\n

The length of the base of a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

\n \n

cosine of 0 = 1.0\n
\n cosine of 45 degrees = 0.70711\n
\n cosine of (pi divided by 4) = 0.70711\n
\n cosine of (pi divided by 2) = 0.0\n
\n cosine of pi = -1.0\n

\n
\n \n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  cos()

\n

Name:  cos function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 cosine of (real number) ... real number     y = cos(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 cosine of (real number) ... real number     y = cos(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  cos()

\n

Name:  cos function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 tangent of (real number) ... real number     y = tan(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 tangent of (real number) ... real number     y = tan(x)

\n\n\n

The ratio of the upright length to the base length in a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

\n \n

tangent of 0 = 0.0\n
\n tangent of 45 degrees = 1.0\n
\n tangent of (pi divided by 4) = 1.0\n
\n tangent of (pi divided by 2) = plus infinity\n

\n
\n \n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  tan()

\n

Name:  tan function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 tangent of (real number) ... real number     y = tan(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 tangent of (real number) ... real number     y = tan(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  tan()

\n

Name:  tan function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 arcsine of (real number) ... real number     y = arcsin(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 arcsine of (real number) ... real number     y = arcsin(x)

\n\n\n

The inverse of the sine function.

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arcsin()

\n

Name:  arcsin function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 arcsine of (real number) ... real number     y = arcsin(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 arcsine of (real number) ... real number     y = arcsin(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arcsin()

\n

Name:  arcsin function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 arccosine of (real number) ... real number     y = arccos(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 arccosine of (real number) ... real number     y = arccos(x)

\n\n\n

The inverse of the cosine function.

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arccos()

\n

Name:  arccos function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 arccosine of (real number) ... real number     y = arccos(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 arccosine of (real number) ... real number     y = arccos(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arccos()

\n

Name:  arccos function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 arctangent of (real number) ... real number     y = arctan(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 arctangent of (real number) ... real number     y = arctan(x)

\n\n\n

The inverse of the tangent function.

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arctan()

\n

Name:  arctan function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 arctangent of (real number) ... real number     y = arctan(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 arctangent of (real number) ... real number     y = arctan(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arctan()

\n

Name:  arctan function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading17 _phrasebook_heading constant (text) ^text = "Trigonometric Functions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 hyperbolic sine of (real number) ... real number     y = sinh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic sine of (real number) ... real number     y = sinh(x)

\n\n\n

The hyperbolic sine function, often written "sinh" but pronounced "shine".

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  sinh()

\n

Name:  sinh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 hyperbolic sine of (real number) ... real number     y = sinh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic sine of (real number) ... real number     y = sinh(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  sinh()

\n

Name:  sinh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 hyperbolic cosine of (real number) ... real number     y = cosh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic cosine of (real number) ... real number     y = cosh(x)

\n\n\n

The hyperbolic cosine function, often written "cosh".

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  cosh()

\n

Name:  cosh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 hyperbolic cosine of (real number) ... real number     y = cosh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic cosine of (real number) ... real number     y = cosh(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  cosh()

\n

Name:  cosh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 hyperbolic tangent of (real number) ... real number     y = tanh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic tangent of (real number) ... real number     y = tanh(x)

\n\n\n

The hyperbolic tangent function, often written "tanh".

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  tanh()

\n

Name:  tanh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 hyperbolic tangent of (real number) ... real number     y = tanh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic tangent of (real number) ... real number     y = tanh(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  tanh()

\n

Name:  tanh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 hyperbolic arcsine of (real number) ... real number     y = arcsinh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic arcsine of (real number) ... real number     y = arcsinh(x)

\n\n\n

The inverse of the hyperbolic sine function.

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arcsinh()

\n

Name:  arcsinh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 hyperbolic arcsine of (real number) ... real number     y = arcsinh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic arcsine of (real number) ... real number     y = arcsinh(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arcsinh()

\n

Name:  arcsinh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 hyperbolic arccosine of (real number) ... real number     y = arccosh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic arccosine of (real number) ... real number     y = arccosh(x)

\n\n\n

The inverse of the hyperbolic cosine function.

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arccosh()

\n

Name:  arccosh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 hyperbolic arccosine of (real number) ... real number     y = arccosh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic arccosine of (real number) ... real number     y = arccosh(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arccosh()

\n

Name:  arccosh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 hyperbolic arctangent of (real number) ... real number     y = arctanh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic arctangent of (real number) ... real number     y = arctanh(x)

\n\n\n

The inverse of the hyperbolic tangent function.

\n\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arctanh()

\n

Name:  arctanh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 hyperbolic arctangent of (real number) ... real number     y = arctanh(x)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 hyperbolic arctangent of (real number) ... real number     y = arctanh(x)

\n

See   15.7. 15.7. Trigonometry

\n

In equations: write as  arctanh()

\n

Name:  arctanh function

\n

Kind: phrase real number -> real number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading18 _phrasebook_heading constant (text) ^text = "Deciding Outcomes" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 decide yes

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decide yes

\n\n\n

This phrase can only be used in the definition of a phrase to decide whether a condition holds. It ends the decision process immediately and makes the condition true.

\n\n

See   11.16. 11.16. New conditions, new adjectives

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 decide yes

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decide yes

\n

See   11.16. 11.16. New conditions, new adjectives

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 decide no

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decide no

\n\n\n

This phrase can only be used in the definition of a phrase to decide whether a condition holds. It ends the decision process immediately and makes the condition false.

\n\n

See   11.16. 11.16. New conditions, new adjectives

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 decide no

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decide no

\n

See   11.16. 11.16. New conditions, new adjectives

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 stop

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 stop

\n\n\n

This phrase causes the current rule to end immediately. It is most often used in the definition of other phrases:

\n \n

To judge the score:\n
\n     if the score is 0, stop;\n
\n     say "The score is [score in words] more than it was a half-hour ago."\n

\n
\n \n

In the case when the score is 0, the "stop" ends the phrase immediately, so that the subsequent text is printed only if the score is not 0.

\n

"Stop" can also be used in action rules, though this is not very good style - it's clearer to use "stop the action", which is exactly equivalent.

\n\n

See   11.13. 11.13. Stop

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 stop

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 stop

\n

See   11.13. 11.13. Stop

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 decide on (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decide on (value)

\n\n\n

This phrase can only be used in the body of a definition of a phrase to decide a value. It causes the calculation to end immediately, with the outcome being the given value, which must be of the kind expected. Example:

\n \n

To decide which number is double (N - a number):\n
\n     let D be N times N;\n
\n     decide on D.\n

\n
\n \n\n

See   11.17. 11.17. Phrases to decide other things

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 decide on (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 decide on (value)

\n

See   11.17. 11.17. Phrases to decide other things

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading19 _phrasebook_heading constant (text) ^text = "If and Unless" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 if (a condition):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (a condition):\n

\n\n\n

This phrase causes the single phrase, or block of phrases, following it to be obeyed only if the condition is true. (If the condition must contain a comma for some reason, the block form should be used.) Example:

\n \n

if the red door is open, say "You could try going east?"\n

\n
\n \n\n

See   11.6. 11.6. If

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (a condition):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (a condition):\n

\n

See   11.6. 11.6. If

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 unless (a condition):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 unless (a condition):\n

\n\n\n

This phrase causes the single phrase, or block of phrases, following it to be obeyed only if the condition is false. (If the condition must contain a comma for some reason, the block form should be used.) Example:

\n \n

unless the red door is closed, say "You could try going east?"\n

\n
\n \n\n

See   11.6. 11.6. If

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 unless (a condition):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 unless (a condition):\n

\n

See   11.6. 11.6. If

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 if (value) is:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) is:\n

\n\n\n

This phrase switches between a variety of possible blocks of phrases to follow, depending on the value given. Example:

\n \n

if the dangerous item is:\n
\n     -- the electric hairbrush:\n
\n         say "Mind your head.";\n
\n     -- the silver spoon:\n
\n         say "Steer clear of the cutlery drawer."\n

\n
\n \n

One alternative is allowed to be "otherwise", which is used only if none of the other cases apply, and which therefore guarantees that in any situation exactly one of the blocks will be followed.

\n \n

if N is:\n
\n     -- 1: say "1.";\n
\n     -- 2: say "2.";\n
\n     -- otherwise: say "Neither 1 nor 2.";\n

\n
\n \n\n

See   11.8. 11.8. Otherwise

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (value) is:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) is:\n

\n

See   11.8. 11.8. Otherwise

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 do nothing

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 do nothing

\n\n\n

This phrase does nothing at all. It is very occasionally useful to make a rule which does nothing:

\n \n

This is the largely ineffective rule:\n
\n     do nothing.\n

\n
\n \n\n

See   11.1. 11.1. What are phrases?

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 do nothing

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 do nothing

\n

See   11.1. 11.1. What are phrases?

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading20 _phrasebook_heading constant (text) ^text = "While and Repeat" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 while (a condition):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 while (a condition):\n

\n\n\n

This phrase causes the block of phrases following it to be repeated over and over for as long the condition is true. If it isn't even true the first time, the block is skipped over and nothing happens. Example:

\n \n

while someone (called the victim) is in the Crypt:\n
\n     say "A bolt of lightning strikes [the victim]!";\n
\n     now the victim is in the Afterlife;\n

\n
\n \n\n

See   11.9. 11.9. While

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 while (a condition):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 while (a condition):\n

\n

See   11.9. 11.9. While

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry constant (text) ^text = "

 repeat with (a new name) running from (arithmetic value) to (arithmetic value):\n

\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 repeat with (a new name) running from (enumerated value) to (enumerated value):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat with (a new name) running from (arithmetic value) to (arithmetic value):\n

\n\n\n

This phrase causes the block of phrases following it to be repeated once for each value in the given range, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

\n \n

repeat with counter running from 1 to 10:\n
\n     ...\n

\n
\n \n

This, and runs through the given phrases ten times. Within those phrases, a special value called "counter" has the value 1 the first time through, then the value 2, then 3 and so on up to 10. (It can of course be called whatever we like: this is only an example.) The range can be from any kind where ranges make sense - anything on which arithmetic can be done, so for instance

\n \n

repeat with moment running from 4 PM to 4:07 PM:\n
\n     ...\n

\n
\n \n

and also any enumeration:

\n \n

Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

\n
\n \n \n

...\n
\n     repeat with hue running from orange to indigo:\n
\n         ...\n

\n
\n \n\n

See   11.10. 11.10. Repeat

\n

Kind: phrase (K, K [arithmetic value], K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 repeat with (a new name) running from (enumerated value) to (enumerated value):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat with (a new name) running from (arithmetic value) to (arithmetic value):\n

\n

See   11.10. 11.10. Repeat

\n

Kind: phrase (K, K [arithmetic value], K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 repeat with (a new name) running through (description of values):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat with (a new name) running through (description of values):\n

\n\n\n

This phrase causes the block of phrases following it to be repeated once for each value matching the description, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

\n \n

repeat with item running through open containers:\n
\n     ...\n

\n
\n \n

If there are no containers, or they are all closed, the phrases will not be followed at all. Inform will issue a Problem message if the range of the loop may be infinite: for example, it won't allow:

\n \n

repeat with X running through odd numbers:\n
\n     ...\n

\n
\n \n

On the other hand it will allow:

\n \n

repeat with T running through times:\n
\n     ...\n

\n
\n \n

which repeats 1440 times, starting with T at midnight and finishing at 11:59 PM. See the Kinds index for which kinds of value can be repeated through.

\n\n

See   11.11. 11.11. Repeat running through

\n

Kind: phrase (K, description of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 repeat with (a new name) running through (description of values):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat with (a new name) running through (description of values):\n

\n

See   11.11. 11.11. Repeat running through

\n

Kind: phrase (K, description of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 repeat with (a new name) running through (list of values):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat with (a new name) running through (list of values):\n

\n\n\n

This phrase causes the block of phrases following it to be repeated once for each item in the given list, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

\n \n

let L be {2, 3, 5, 7, 11, 13, 17, 19};\n
\n repeat with prime running through L:\n
\n     ...\n

\n
\n \n

If the list is empty, nothing happens: the "..." phrase(s) are never tried.

\n\n

See   21.4. 21.4. Testing and iterating over lists

\n

Kind: phrase (object, list of values) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 repeat with (a new name) running through (list of values):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat with (a new name) running through (list of values):\n

\n

See   21.4. 21.4. Testing and iterating over lists

\n

Kind: phrase (object, list of values) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 repeat through (table name):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name):\n

\n\n\n

This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, from top to bottom. Blank rows are skipped. Example:

\n \n

To list the succession:\n
\n     say "The Succession List runs as follows...";\n
\n     repeat through the Table of Recent Monarchs:\n
\n         say "[accession entry]: [name entry] ([family entry])."\n

\n
\n \n\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 repeat through (table name):\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name):\n

\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 repeat through (table name) in reverse order:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name) in reverse order:\n

\n\n\n

This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, from bottom to top. Blank rows are skipped.

\n\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 repeat through (table name) in reverse order:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name) in reverse order:\n

\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 repeat through (table name) in (table column) order:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name) in (table column) order:\n

\n\n\n

This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, in order of the values in the given column. Blank rows are skipped. Example:

\n \n

repeat through the Table of Recent Monarchs in name order: ...\n
\n repeat through the Table of Recent Monarchs in accession order: ...\n

\n
\n \n

work through the same table in rather different orders. The sequence is lower to higher (small numbers to high numbers, A to Z, and so on); insert "reverse" after "in" to reverse this.

\n\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 repeat through (table name) in (table column) order:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name) in (table column) order:\n

\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 repeat through (table name) in reverse (table column) order:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name) in reverse (table column) order:\n

\n\n\n

This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, in order of the values in the given column. Blank rows are skipped. Example:

\n \n

repeat through the Table of Recent Monarchs in reverse name order: ...\n
\n repeat through the Table of Recent Monarchs in reverse accession order: ...\n

\n
\n \n

work through the same table in rather different orders. The sequence is higher to lower (high numbers to small numbers, Z to A, and so on); delete the "reverse" after "in" to reverse this.

\n\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 repeat through (table name) in reverse (table column) order:\n

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 repeat through (table name) in reverse (table column) order:\n

\n

See   16.6. 16.6. Repeating through tables

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading21 _phrasebook_heading constant (text) ^text = "Loop Flow" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 break

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 break

\n\n\n

This phrase can only be used inside "repeat", "while" block, and causes both the current repetition and the entire loop to finish immediately. Example:

\n \n

repeat with X running from 1 to 10:\n
\n     if X is 7, break;\n
\n     say "[X] ".\n

\n
\n \n

produces the text "1 2 3 4 5 6 ", with nothing after "6" because the loop was broken at that point. The "say" wasn't reached on the 7th repetition, and the 8th, 9th and 10th never happened.

\n\n

See   11.12. 11.12. Next and break

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 break

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 break

\n

See   11.12. 11.12. Next and break

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 next

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 next

\n\n\n

This phrase can only be used inside a "repeat" or "while" block, and causes the current repetition of the block to finish immediately. That either means the next repetition begins, or (if we are a ready at the last one) the loop ends too. Example:

\n \n

repeat with X running from 1 to 10:\n
\n     if X is 4, next;\n
\n     say "[X] ".\n

\n
\n \n

produces the text "1 2 3 5 6 7 8 9 10 ", with no "4" because the "say" phrase was never reached on the fourth repetition.

\n\n

See   11.12. 11.12. Next and break

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 next

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 next

\n

See   11.12. 11.12. Next and break

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading22 _phrasebook_heading constant (text) ^text = "Enumerations" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 number of (description of values) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of (description of values) ... number

\n\n\n

This phrase counts the number of values matching the description, which may of course be 0. Example:

\n \n

number of open doors\n

\n
\n \n

produces the number of doors, anywhere in the model world, which are currently open. A Problem message is produced if the number is potentially infinite, or impractical to count: for instance, Inform rejects "number of odd numbers".

\n\n

See   6.1. 6.1. What are descriptions?

\n

Kind: phrase description of values -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of (description of values) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of (description of values) ... number

\n

See   6.1. 6.1. What are descriptions?

\n

Kind: phrase description of values -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 (name of kind) after (enumerated value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) after (enumerated value) ... value

\n\n\n

This phrase produces the next-created value of the given kind, which should be an enumeration. Example: if we have

\n \n

Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

\n
\n \n

then "colour after orange" is yellow.

\n\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase (K [enumerated value], K) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (name of kind) after (enumerated value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) after (enumerated value) ... value

\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase (K [enumerated value], K) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 (name of kind) before (enumerated value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) before (enumerated value) ... value

\n\n\n

This phrase produces the previous-created value of the given kind, which should be an enumeration. Example: if we have

\n \n

Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

\n
\n \n

then "colour before blue" is green.

\n\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase (K [enumerated value], K) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (name of kind) before (enumerated value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) before (enumerated value) ... value

\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase (K [enumerated value], K) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 first value of (name of kind) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 first value of (name of kind) ... value

\n\n\n

This phrase produces the first-created value of the given kind, which should be an enumeration. Example: if we have

\n \n

Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

\n
\n \n

then "first value of colour" is red.

\n\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase K [enumerated value] -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 first value of (name of kind) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 first value of (name of kind) ... value

\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase K [enumerated value] -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 last value of (name of kind) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 last value of (name of kind) ... value

\n\n\n

This phrase produces the last-created value of the given kind, which should be an enumeration. Example: if we have

\n \n

Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

\n
\n \n

then "last value of colour" is violet.

\n\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase K [enumerated value] -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 last value of (name of kind) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 last value of (name of kind) ... value

\n

See   11.18. 11.18. The value after and the value before

\n

Kind: phrase K [enumerated value] -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading23 _phrasebook_heading constant (text) ^text = "Randomness" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 a/-- random (description of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 a/-- random (description of values) ... value

\n\n\n

This phrase makes a uniformly random choice from values satisfying the description given. Example:

\n \n

a random visited room\n
\n a random scene\n

\n
\n \n

A problem message is issued if the range is too large (for instance, "a random text"). Unexpected results may follow if no value fits the description, unless we are describing objects, in which case the result is the special value "nothing".

\n\n

See   8.19. 8.19. Random choices of things

\n

Kind: phrase description of Ks -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 a/-- random (description of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 a/-- random (description of values) ... value

\n

See   8.19. 8.19. Random choices of things

\n

Kind: phrase description of Ks -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry constant (text) ^text = "

 a random (name of kind) between (arithmetic value) and (arithmetic value) ... value

\n" package phrasebook_entry3 _phrasebook_entry @@ -29009,257 +29009,257 @@ package main _plain package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

 a random (name of kind) between (enumerated value) and (enumerated value) ... value

\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 a random (name of kind) from (enumerated value) to (enumerated value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 a random (name of kind) between (arithmetic value) and (arithmetic value) ... value

\n\n\n

This phrase produces a uniformly random value in the range given. Examples:

\n \n

a random number from 10 to 99\n
\n a random time from 2:31 PM to 2:57 PM\n

\n
\n \n

If we make a new kind of value:

\n \n

A cloud pattern is a kind of value. The cloud patterns are cumulus, altocumulus, cumulonimbus, stratus, cirrus, nimbus, nimbostratus.\n

\n
\n \n

then we can also take random values from it:

\n \n

a random cloud pattern between stratus and nimbus\n

\n
\n \n

which has three possible outcomes, all equally likely.

\n\n

See   8.18. 8.18. Randomness

\n

Kind: phrase (K [arithmetic value], K, K) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 a random (name of kind) from (enumerated value) to (enumerated value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 a random (name of kind) between (arithmetic value) and (arithmetic value) ... value

\n

See   8.18. 8.18. Randomness

\n

Kind: phrase (K [arithmetic value], K, K) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 if a random chance of (number) in (number) succeeds:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if a random chance of (number) in (number) succeeds:

\n\n\n

This condition is true X/Yths of the time, where X and Y are the numbers. Example:

\n \n

if a random chance of 2 in 3 succeeds, ...\n

\n
\n \n

Here is a rule which applies only 15% of the time:

\n \n

Instead of waiting when a random chance of 15 in 100 succeeds: ...\n

\n
\n \n\n

See   8.18. 8.18. Randomness

\n

Kind: phrase (number, number) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if a random chance of (number) in (number) succeeds:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if a random chance of (number) in (number) succeeds:

\n

See   8.18. 8.18. Randomness

\n

Kind: phrase (number, number) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 seed the random-number generator with (number)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 seed the random-number generator with (number)

\n\n\n

This phrase changes the seed number as specified. Any random numbers generated after that depend only on the seed. Example: the following sentence will "fix" the process of generating these random numbers so that they are not random at all - t e same sequence of random numbers will be produced on each run.

\n \n

When play begins, seed the random-number generator with 1234.\n

\n
\n \n

The seed value "1234" can be anything positive; a different sequence of random numbers will be produced for each different seed value. A seed value of 0 restores the RNG to properly random behaviour again.

\n\n

See   8.18. 8.18. Randomness

\n

Kind: phrase number -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 seed the random-number generator with (number)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 seed the random-number generator with (number)

\n

See   8.18. 8.18. Randomness

\n

Kind: phrase number -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading24 _phrasebook_heading constant (text) ^text = "Default Values" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 default value of (name of kind) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 default value of (name of kind) ... value

\n\n\n

Produces the default value of the kind named. Examples:

\n \n

The silver repeater is here. "You catch sight of a silver repeater watch, hands immobile at [default value of time]."\n

\n
\n \n

produces the output:

\n \n

You catch sight of a silver repeater watch, hands immobile at 9:00 am.\n

\n
\n \n

because nine in the morning is the default time in Inform. If we have:

\n \n

Brightness is a kind of value. The brightnesses are guttering, weak, radiant and blazing.\n

\n
\n \n

then "default value of brightness" is guttering, the first brightness created. When it comes to kinds of object, we sometimes have to be a little careful. For example,

\n \n

default value of room\n

\n
\n \n

is always going to be fine (it's always the first room created in the source text). But

\n \n

default value of vehicle\n

\n
\n \n

would produce a Problem message if there were no vehicles in the world.

\n\n

See   4.11. 4.11. Default values of kinds

\n

Kind: phrase K -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 default value of (name of kind) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 default value of (name of kind) ... value

\n

See   4.11. 4.11. Default values of kinds

\n

Kind: phrase K -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading25 _phrasebook_heading constant (text) ^text = "Breaking down text" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 number of characters in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of characters in (text) ... number

\n\n\n

This phrase produces the number of characters from the text. Characters include letters, digits, punctuation symbols, spaces or other letter-forms. Examples:

\n \n

number of characters in "War and Peace"\n
\n number of characters in ""\n

\n
\n \n

produce 13 and 0 respectively.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of characters in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of characters in (text) ... number

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 number of words in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of words in (text) ... number

\n\n\n

This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing that punctuation or spacing. Exam le:

\n \n

number of words in "ice-hot, don't you think?"\n

\n
\n \n

produces 5.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of words in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of words in (text) ... number

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 number of punctuated words in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of punctuated words in (text) ... number

\n\n\n

This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing the spacing, but leaving the punctuation as i dependent words. Example:

\n \n

number of punctuated words in "ice-hot, don't you think?"\n

\n
\n \n

produces 8; see if you can find them all.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of punctuated words in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of punctuated words in (text) ... number

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 number of unpunctuated words in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of unpunctuated words in (text) ... number

\n\n\n

This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at spacing (spaces, line breaks, paragraph breaks) but including all punctuation as if it were part of the spelling of the words it oins to. Example:

\n \n

number of unpunctuated words in "ice-hot, don't you think?"\n

\n
\n \n

produces just 4.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of unpunctuated words in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of unpunctuated words in (text) ... number

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 number of lines in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of lines in (text) ... number

\n\n\n

This phrase produces the number of lines in the text. Unless explicit use is made of line-breaking, lines and paragraphs will be the same - it doesn't refer to lines as visible on screen, because we have no way of knowing what size screen he player might have. Example: the number of lines in

\n \n

"Sensational news just in![paragraph break]The Martians have invaded Miranda.[line break](One of the moons of Uranus, that is.)"\n

\n
\n \n

is 3.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of lines in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of lines in (text) ... number

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 number of paragraphs in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of paragraphs in (text) ... number

\n\n\n

This phrase produces the number of paragraphs in the text. Example: the number of paragraphs in

\n \n

"Sensational news just in![paragraph break]The Martians have invaded Miranda.[line break](One of the moons of Uranus, that is.)"\n

\n
\n \n

is 2.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of paragraphs in (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of paragraphs in (text) ... number

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase text -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 character number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 character number (number) in (text) ... text

\n\n\n

This phrase produces the Nth character from the text, counting from 1. Characters include letters, digits, punctuation symbols, spaces or other letter-forms. Example:

\n \n

character number 8 in "numberless projects of social reform"\n

\n
\n \n

produces "e". If the index is less than 1 or more than the length of the text, the result is an empty text, "".

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 character number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 character number (number) in (text) ... text

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 word number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 word number (number) in (text) ... text

\n\n\n

This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing that punctuation or spacing. Exa ple:

\n \n

word number 3 in "ice-hot, don't you think?"\n

\n
\n \n

produces "don't". If the index is less than 1 or more than the number of words in the text, the result is an empty text, "".

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 word number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 word number (number) in (text) ... text

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 punctuated word number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 punctuated word number (number) in (text) ... text

\n\n\n

This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing the spacing, but leaving the punctuation as ndependent words. Example:

\n \n

punctuated word number 2 in "ice-hot, don't you think?"\n

\n
\n \n

produces "-". The punctuated words here are "ice", "-", "hot", ",", "don't", "you", "think", "?". If two or more punctuation marks are adjacent, they are counted as different words, except for runs of dashes or periods: thus ",," has two punctuated words, but "--" and "..." have only one each. If the index is less than 1 or more than the number of punctuated words in the text, the result is an empty text, "".

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 punctuated word number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 punctuated word number (number) in (text) ... text

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 unpunctuated word number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 unpunctuated word number (number) in (text) ... text

\n\n\n

This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at spacing (spaces, line breaks, paragraph breaks) but including all punctuation as if it were part of the spelling of the words it joins to. Example:

\n \n

unpunctuated word number 1 in "ice-hot, don't you think?"\n

\n
\n \n

produces "ice-hot,". The unpunctuated words in "ice-hot, don't you think?" are "ice-hot,", "don't", "you", "think?". If the index is less than 1 or more than the number of punctuated words in the text, the result is an empty text, "".

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 unpunctuated word number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 unpunctuated word number (number) in (text) ... text

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 line number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 line number (number) in (text) ... text

\n\n\n

This phrase produces the Nth line from the text, counting from 1. Unless explicit use is made of line-breaking, lines and paragraphs will be the same - it doesn't refer to lines as visible on screen, because we have no way of knowing what size scre n the player might have.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 line number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 line number (number) in (text) ... text

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

 paragraph number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 paragraph number (number) in (text) ... text

\n\n\n

This phrase produces the Nth paragraph from the text, counting from 1.

\n\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 paragraph number (number) in (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 paragraph number (number) in (text) ... text

\n

See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

\n

Kind: phrase (number, text) -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry13 _phrasebook_entry - constant (text) ^text = "

 substituted form of (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 substituted form of (text) ... text

\n\n\n

This takes a text and makes substitution occur immediately. For example,

\n \n

substituted form of "time of death, [time of day]"\n

\n
\n \n

produces something like "time of death, 9:15 AM" rather than "time of death, [time of day]". It's entirely legal to apply this to text which never had any substitutions in, so

\n \n

substituted form of "balloon"\n

\n
\n \n

produces "balloon".

\n\n

See   20.7. 20.7. Making new text with text substitutions

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 substituted form of (text) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 substituted form of (text) ... text

\n

See   20.7. 20.7. Making new text with text substitutions

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading26 _phrasebook_heading constant (text) ^text = "Matching and Replacing" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 if (text) exactly matches the text (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) exactly matches the text (text):    
\n optionally  case insensitively\n

\n\n\n

This condition is true if the second text matches the first, starting at the beginning and finishing at the end. This appears to be the same as testing if one is equal to the other, but that's not quite true: for example,

\n \n

if "[score]" exactly matches the text "[best score]", ...\n

\n
\n \n

is true if the score and best score currently print out as the same text, which will be true if they are currently equal as numbers; but

\n \n

if "[score]" is "[best score]", ...\n

\n
\n \n

is never true - these are different texts, even if they sometimes look the same.

\n\n

See   20.5. 20.5. Matching and exactly matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (text) exactly matches the text (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) exactly matches the text (text):    
\n optionally  case insensitively\n

\n

See   20.5. 20.5. Matching and exactly matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 if (text) matches the text (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) matches the text (text):    
\n optionally  case insensitively\n

\n\n\n

This condition is true if the second text occurs anywhere inside the first. Examples:

\n \n

if "[score]" matches the text "3", ...\n

\n
\n \n

tests whether the digit 3 occurs anywhere in the score, as printed out; and

\n \n

if the printed name of the location matches the text "the", ...\n

\n
\n \n

tests to see whether "the" can be found anywhere in the current room's name. Note that the location "Smotheringly Hot Jungle" would pass this test - it's there if you look. On the other hand, "The Orangery" would not, because "The" does not match against "the". We can get around this in a variety of ways, one of which is to tell Inform to be insensitive to the case (upper or lower) of letters:

\n \n

if the printed name of the location matches the text "the", case insensitively: ...\n

\n
\n \n\n

See   20.5. 20.5. Matching and exactly matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (text) matches the text (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) matches the text (text):    
\n optionally  case insensitively\n

\n

See   20.5. 20.5. Matching and exactly matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 number of times (text) matches the text (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of times (text) matches the text (text) ... number    
\n optionally  case insensitively\n

\n\n\n

This produces the number of times the second text occurs within the first. The matches are not allowed to overlap. Example:

\n \n

number of times "pell-mell sally" matches the text "ll" = 3\n
\n number of times "xyzzy" matches the text "Z" = 0\n
\n number of times "xyzzy" matches the text "Z", case insensitively = 2\n
\n number of times "aaaaaaaa" matches the text "aaaa" = 2\n

\n
\n \n\n

See   20.5. 20.5. Matching and exactly matching

\n

Kind: phrase (text, text) -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of times (text) matches the text (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of times (text) matches the text (text) ... number    
\n optionally  case insensitively\n

\n

See   20.5. 20.5. Matching and exactly matching

\n

Kind: phrase (text, text) -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 replace the text (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the text (text) in (text) with (text)    
\n optionally  case insensitively\n

\n\n\n

This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible. Example:

\n \n

replace the text "a" in V with "z"\n

\n
\n \n

changes every lower-case "a" to "z": the same thing done with the "case insensitively" option would change each "a" or "A" to "z".

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace the text (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the text (text) in (text) with (text)    
\n optionally  case insensitively\n

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 replace the word (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the word (text) in (text) with (text)

\n\n\n

This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible, where the search text must occur as a whole word. Example:

\n \n

replace the word "Bob" in V with "Robert"\n

\n
\n \n

changes "Bob got on the Bobsleigh" to "Robert got on the Bobsleigh".

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace the word (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the word (text) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 replace the punctuated word (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the punctuated word (text) in (text) with (text)

\n\n\n

This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible, where the search text must occur as a whole word or run of punctuation.

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace the punctuated word (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the punctuated word (text) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 replace character number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace character number (number) in (text) with (text)

\n\n\n

This phrase acts on the named text by placing the given text in place of the Nth character, counting from 1. Example:

\n \n

let V be "mope";\n
\n replace character number 3 in V with "lecul";\n
\n say V;\n

\n
\n \n

says "molecule".

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace character number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace character number (number) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 replace word number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace word number (number) in (text) with (text)

\n\n\n

This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing or punctuation. Example:

\n \n

let V be "Does the well run dry?";\n
\n replace word number 3 in V with "jogger";\n
\n say V;\n

\n
\n \n

says "Does the jogger run dry?".

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace word number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace word number (number) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 replace punctuated word number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace punctuated word number (number) in (text) with (text)

\n\n\n

This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing, counting punctuation runs as words in their own right. Example:

\n \n

let V be "Frankly, yes, I agree.";\n
\n replace punctuated word number 2 in V with ":";\n
\n say V;\n

\n
\n \n

says "Frankly: yes, I agree.".

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace punctuated word number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace punctuated word number (number) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 replace unpunctuated word number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace unpunctuated word number (number) in (text) with (text)

\n\n\n

This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing, counting punctuation as part of a word just as if it were lettering. Example:

\n \n

let V be "Frankly, yes, I agree.";\n
\n replace unpunctuated word number 2 in V with "of course";\n
\n say V;\n

\n
\n \n

says "Frankly, of course I agree.".

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace unpunctuated word number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace unpunctuated word number (number) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 replace line number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace line number (number) in (text) with (text)

\n\n\n

This phrase acts on the named text by placing the given text in place of the Nth line, counting from 1. Lines are divided by paragraph or line breaks.

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace line number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace line number (number) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

 replace paragraph number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace paragraph number (number) in (text) with (text)

\n\n\n

This phrase acts on the named text by placing the given text in place of the Nth paragraph, counting from 1.

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace paragraph number (number) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace paragraph number (number) in (text) with (text)

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (number, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading27 _phrasebook_heading constant (text) ^text = "Regular Expressions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 if (text) exactly matches the regular expression (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) exactly matches the regular expression (text):    
\n optionally  case insensitively\n

\n\n\n

This condition is true if the whole text (starting from the beginning and finishing at the end) can be matched against the given regular expression. The option "case insensitively" causes lower and upper case letters to be treated as equivalent.

\n\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (text) exactly matches the regular expression (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) exactly matches the regular expression (text):    
\n optionally  case insensitively\n

\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 if (text) matches the regular expression (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) matches the regular expression (text):    
\n optionally  case insensitively\n

\n\n\n

This condition is true if any contiguous part of the text can be matched against the given regular expression. Examples:

\n \n

if "taramasalata" matches the regular expression "a.*l", ...\n

\n
\n \n

is true, since this looks for a part of "taramasalata" which begins with "a", continues with any number of characters, and finishes with "l"; so it matches "aramasal". (Not "asal", because it gets the makes the leftmost match it can.) The option "case insensitively" causes lower and upper case letters to be treated as equivalent.

\n\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (text) matches the regular expression (text):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) matches the regular expression (text):    
\n optionally  case insensitively\n

\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase (text, text) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 text matching regular expression ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 text matching regular expression ... text

\n\n\n

This phrase is only meaningful immediately after a successful match of a regular expression against text, and it produces the text which matched. Example:

\n \n

if "taramasalata" matches the regular expression "m.*l":\n
\n     say "[text matching regular expression].";\n

\n
\n \n

says "masal."

\n\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase nothing -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 text matching regular expression ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 text matching regular expression ... text

\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase nothing -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 text matching subexpression (number) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 text matching subexpression (number) ... text

\n\n\n

This phrase is only meaningful immediately after a successful match of a regular expression against text, and it produces the text which matched. The number must be from 1 to 9, and must correspond to one of the bracketed groups in the expression just match d. Example: after

\n \n

if "taramasalata" matches the regular expression "a(r.*l)a(.)":\n

\n
\n \n

the "text matching regular expression" is "aramasalat", the "text matching subexpression 1" is "ramasal", and "text matching subexpression 2" is "t".

\n\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase number -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 text matching subexpression (number) ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 text matching subexpression (number) ... text

\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase number -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 number of times (text) matches the regular expression (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of times (text) matches the regular expression (text) ... number    
\n optionally  case insensitively\n

\n\n\n

This produces the number of times that contiguous pieces of the text can be matched against the regular expression, without allowing them to overlap.

\n\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase (text, text) -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of times (text) matches the regular expression (text) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of times (text) matches the regular expression (text) ... number    
\n optionally  case insensitively\n

\n

See   20.6. 20.6. Regular expression matching

\n

Kind: phrase (text, text) -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 replace the regular expression (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the regular expression (text) in (text) with (text)    
\n optionally  case insensitively\n

\n\n\n

This phrase acts on the named text by matching the regular expression and replacing anything which fits it, as many non-overlapping times as possible. Example:

\n \n

replace the regular expression "\\d+" in V with "..."\n

\n
\n \n

changes "The Battle of Waterloo, 1815, rivalled Trafalgar, 1805" to "The Battle of Waterloo, ..., rivalled Trafalgar, ...". The "case insensitively" causes lower and upper case letters to be treated as if the same letter.

\n

When replacing a regular expression, the replacement text also has a few special meanings (though, thankfully, many fewer than for the expression itself). Once again "\\n" and "\\t" can be used for line break and tab characters, and "\\\\" must be used for an actual backslash. But, very usefully, "\\1" to "\\9" expand as the contents of groups numbered 1 to 9, and "\\0" to the exact text matched. So:

\n \n

replace the regular expression "\\d+" in V with "roughly \\0"\n

\n
\n \n

adds the word "roughly" in front of any run of digits in V, because \\0 becomes in turn whichever run of digits matched. And

\n \n

replace the regular expression "(\\w+) (.*)" in V with "\\2, \\1"\n

\n
\n \n

performs the transformation "Frank Booth" to "Booth, Frank".

\n

Finally, prefixing the number by "l" or "u" forces the text it represents into lower or upper case, respectively. For instance:

\n \n

replace the regular expression "\\b(\\w)(\\w*)" in X with "\\u1\\l2";\n

\n
\n \n

changes the casing of X to "title casing", where each individual word is capitalised. (This is a little slow on large texts, since so many matches and replacements are made: it's more efficient to use the official phrases for changing case.)

\n\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 replace the regular expression (text) in (text) with (text)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 replace the regular expression (text) in (text) with (text)    
\n optionally  case insensitively\n

\n

See   20.8. 20.8. Replacements

\n

Kind: phrase (text, text, text) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading28 _phrasebook_heading constant (text) ^text = "Casing of Text" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 (text) in lower case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in lower case ... text

\n\n\n

This phrase produces a new version of the given text, but with all upper case letters reduced to lower case. Example: "a ticket to Tromsø via Østfold" becomes

\n \n

"a ticket to tromsø via østfold"\n

\n
\n \n\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (text) in lower case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in lower case ... text

\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 (text) in upper case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in upper case ... text

\n\n\n

This phrase produces a new version of the given text, but with all upper case letters reduced to lower case. Example: "a ticket to Tromsø via Østfold" becomes

\n \n

"A TICKET TO TROMSØ VIA ØSTFOLD"\n

\n
\n \n\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (text) in upper case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in upper case ... text

\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 (text) in title case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in title case ... text

\n\n\n

This phrase produces a new version of the given text, but with casing of words changed to title casing: this capitalises the first letter of each word, and lowers the rest. Example: "a ticket to Tromsø via Østfold" becomes

\n \n

"A Ticket To Tromsø Via Østfold"\n

\n
\n \n\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (text) in title case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in title case ... text

\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 (text) in sentence case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in sentence case ... text

\n\n\n

This phrase produces a new version of the given text, but with casing of words changed to sentence casing: this capitalises the first letter of each sentence and reduces the rest to lower case. Example: "a ticket to Tromsø via Østfold" bec mes

\n \n

"A ticket to tromsø via østfold"\n

\n
\n \n\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (text) in sentence case ... text

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (text) in sentence case ... text

\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> text

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 if (text) is in lower case:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) is in lower case:

\n\n\n

This condition is true if every character in the text is a lower case letter. Examples: this is true for "wax", but false for "wax seal" or "eZ mOnEy".

\n\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (text) is in lower case:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) is in lower case:

\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 if (text) is in upper case:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) is in upper case:

\n\n\n

This condition is true if every character in the text is in upper case. Examples: this is true for "BEESWAX", but false for "ROOM 101".

\n\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (text) is in upper case:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (text) is in upper case:

\n

See   20.4. 20.4. Upper and lower case letters

\n

Kind: phrase text -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading29 _phrasebook_heading constant (text) ^text = "Adaptive Text" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 say \"[infinitive of verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[infinitive of verb]\"

\n\n\n

Produces the infinitive of the given verb. Note that this is without a "to": for example, "[infinitive of the verb carry]" is "carry", not "to carry".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[infinitive of verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[infinitive of verb]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 say \"[past participle of verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[past participle of verb]\"

\n\n\n

Produces the past participle of the given verb. For example, "[past participle of the verb carry]" is "carried". Warning: because modal verbs like "should" or "might" are defective in English, this will produce odd results on them - "shoulded" and "mighted", for example.

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[past participle of verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[past participle of verb]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[present participle of verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[present participle of verb]\"

\n\n\n

Produces the present participle of the given verb. For example, "[present participle of the verb carry]" is "carrying". Warning: because modal verbs like "should" or "might" are defective in English, this will produce odd results on them - "shoulding and "mighting", for example.

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[present participle of verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[present participle of verb]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 say \"[adapt verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb]\"

\n\n\n

Adapts the given verb to the current story tense and story viewpoint. For example, "you [adapt the verb provoke]" might produce "you provoke".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[adapt verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 say \"[adapt verb in grammatical tense]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb in grammatical tense]\"

\n\n\n

Adapts the given verb to the given tense but the current story viewpoint. For example, "you [adapt the verb provoke in the past tense]" might produce "you provoked".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[adapt verb in grammatical tense]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb in grammatical tense]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 say \"[adapt verb from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb from narrative viewpoint]\"

\n\n\n

Adapts the given verb to the current story tense but the given viewpoint. For example, "he [adapt the verb provoke from the third person singular]" might produce "he provokes".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[adapt verb from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb from narrative viewpoint]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 say \"[adapt verb in grammatical tense from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb in grammatical tense from narrative viewpoint]\"

\n\n\n

Adapts the given verb to the given tense and viewpoint. For example, "we [adapt the verb provoke in the future tense from the first person plural]" might produce "we will provoke".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[adapt verb in grammatical tense from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[adapt verb in grammatical tense from narrative viewpoint]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 say \"[negate verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb]\"

\n\n\n

Adapts the given verb to the current story tense and story viewpoint, giving it a negative sense. For example, "you [negate the verb provoke]" might produce "you do not provoke".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[negate verb]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 say \"[negate verb in grammatical tense]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb in grammatical tense]\"

\n\n\n

Adapts the given verb to the given tense but the current story viewpoint, giving it a negative sense. For example, "you [negate the verb provoke in the past tense]" might produce "you did not provoke".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[negate verb in grammatical tense]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb in grammatical tense]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 say \"[negate verb from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb from narrative viewpoint]\"

\n\n\n

Adapts the given verb to the current story tense but the given viewpoint, giving it a negative sense. For example, "he [negate the verb provoke from the third person singular]" might produce "he does not provoke".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[negate verb from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb from narrative viewpoint]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 say \"[negate verb in grammatical tense from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb in grammatical tense from narrative viewpoint]\"

\n\n\n

Adapts the given verb to the given tense and viewpoint, giving it a negative sense. For example, "we [negate the verb provoke in the future tense from the first person plural]" might produce "we will not provoke".

\n\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[negate verb in grammatical tense from narrative viewpoint]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[negate verb in grammatical tense from narrative viewpoint]\"

\n

See   14.9. 14.9. Verbs as values

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry12 _phrasebook_entry constant (text) ^text = "

 meaning of (verb) ... relation of objects

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 meaning of (verb) ... relation of objects

\n

Kind: phrase verb -> relation of objects

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading30 _phrasebook_heading constant (text) ^text = "Tables" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 choose a/the/-- row (number) in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- row (number) in/from (table name)

\n\n\n

This phrase selects the row with the given number. Row numbers in a table start from 1, so

\n \n

choose row 1 from the Table of Recent Monarchs\n

\n
\n \n

selects the top row.

\n\n

See   16.5. 16.5. Choosing rows

\n

Kind: phrase (number, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 choose a/the/-- row (number) in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- row (number) in/from (table name)

\n

See   16.5. 16.5. Choosing rows

\n

Kind: phrase (number, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 choose a/the/-- row with (table column) of (value) in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- row with (table column) of (value) in/from (table name)

\n\n\n

This phrase selects the first row, working down from the top of the given table, in which the given column has the given value. Example:

\n \n

choose row with a name of "Victoria" in the Table of Recent Monarchs;\n

\n
\n \n

A run-time problem message is produced if the value isn't found anywhere in that column.

\n\n

See   16.5. 16.5. Choosing rows

\n

Kind: phrase (Ks valued table column, K, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 choose a/the/-- row with (table column) of (value) in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- row with (table column) of (value) in/from (table name)

\n

See   16.5. 16.5. Choosing rows

\n

Kind: phrase (Ks valued table column, K, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 choose a/the/-- blank row in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- blank row in/from (table name)

\n\n\n

This phrase chooses a row in the given table which is currently blank under every column. A run-time problem message is issued if no rows are blank. Example:

\n \n

choose a blank row in Table 3;\n
\n now element entry is "Fluorine";\n
\n now symbol entry is "F";\n
\n now atomic number entry is 9;\n
\n now atomic weight entry is 19;\n

\n
\n \n\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 choose a/the/-- blank row in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- blank row in/from (table name)

\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 choose a/the/-- random row in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- random row in/from (table name)

\n\n\n

This phrase makes a uniformly random choice of non-blank rows in the given table. Note that although a table always has at least one row, it can't be guaranteed that it always has a non-blank row, so it's possible for this to fail: if it does, a real-time problem message is thrown.

\n\n

See   16.5. 16.5. Choosing rows

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 choose a/the/-- random row in/from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 choose a/the/-- random row in/from (table name)

\n

See   16.5. 16.5. Choosing rows

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 number of rows in/from (table name) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of rows in/from (table name) ... number

\n\n\n

This phrase produces the number of rows (including any blank rows) in the given table. Example:

\n \n

number of rows in the Table of Selected Elements\n

\n
\n \n\n

See   16.2. 16.2. Looking up entries

\n

Kind: phrase table name -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of rows in/from (table name) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of rows in/from (table name) ... number

\n

See   16.2. 16.2. Looking up entries

\n

Kind: phrase table name -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 number of blank rows in/from (table name) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of blank rows in/from (table name) ... number

\n\n\n

This phrase produces the number of rows in the given table which are entirely blank (that is, blank under every column).

\n\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of blank rows in/from (table name) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of blank rows in/from (table name) ... number

\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 number of filled rows in/from (table name) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of filled rows in/from (table name) ... number

\n\n\n

This phrase produces the number of rows in the given table which are not entirely blank (that is, at least one column has a value in this row).

\n\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of filled rows in/from (table name) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of filled rows in/from (table name) ... number

\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 if there is (a table entry):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if there is (a table entry):

\n\n\n

This condition is true if the entry referred to exists, that is, that is, the space for it in the table is not blank. Examples:

\n \n

if there is a symbol corresponding to an atomic number of 30 in the Table of Selected Elements ...\n
\n if there is an atomic number in row 2 of the Table of Selected Elements ...\n

\n
\n \n\n

See   16.7. 16.7. Blank entries

\n

Kind: phrase value -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if there is (a table entry):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if there is (a table entry):

\n

See   16.7. 16.7. Blank entries

\n

Kind: phrase value -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 if there is no (a table entry):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if there is no (a table entry):

\n\n\n

This condition is true if the entry referred to does not exist, that is, the space for it in the table is blank. Examples:

\n \n

if there is no symbol corresponding to an atomic number of 30 in the Table of Selected Elements ...\n
\n if there is no atomic number in row 2 of the Table of Selected Elements ...\n

\n
\n \n\n

See   16.7. 16.7. Blank entries

\n

Kind: phrase value -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if there is no (a table entry):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if there is no (a table entry):

\n

See   16.7. 16.7. Blank entries

\n

Kind: phrase value -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 blank out (a table entry)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out (a table entry)

\n\n\n

This phrase replaces the entry referred to with a blank, erasing any value previously stored there. Example:

\n \n

choose row 1 in the Table of Fish Habitats;\n
\n blank out the salinity entry;\n

\n
\n \n\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 blank out (a table entry)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out (a table entry)

\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 blank out the whole row

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out the whole row

\n\n\n

This phrase replaces the currently chosen row with blanks, erasing any value previously stored under any of the columns. Example:

\n \n

choose row 1 in the Table of Fish Habitats;\n
\n blank out the whole row;\n

\n
\n \n\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 blank out the whole row

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out the whole row

\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

 blank out the whole (table column) in/from/of (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out the whole (table column) in/from/of (table name)

\n\n\n

This phrase replaces the currently chosen column with blanks, erasing any value previously stored in any of the rows. Example:

\n \n

blank out the whole salinity column in the Table of Fish Habitats;\n

\n
\n \n\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase (table column, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 blank out the whole (table column) in/from/of (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out the whole (table column) in/from/of (table name)

\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase (table column, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry13 _phrasebook_entry - constant (text) ^text = "

 blank out the whole of (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out the whole of (table name)

\n\n\n

This phrase replaces every row of the currently chosen table with blanks, erasing any value previously stored anywhere in it. Example:

\n \n

blank out the whole of the Table of Fish Habitats;\n

\n
\n \n

This is only really useful when a Table is being used to hold working space for some calculation or other.

\n\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 blank out the whole of (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 blank out the whole of (table name)

\n

See   16.10. 16.10. Adding and removing rows

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry14 _phrasebook_entry - constant (text) ^text = "

 showme the contents of (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 showme the contents of (table name)

\n\n\n

This phrase prints a crude but sometimes useful display on screen of the current contents of the named table. It's intended for authors to see when testing, not for players of the finished version to see.

\n\n

See   16.4. 16.4. Changing entries

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 showme the contents of (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 showme the contents of (table name)

\n

See   16.4. 16.4. Changing entries

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry15 _phrasebook_entry - constant (text) ^text = "

 say \"[the/-- current table row]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[the/-- current table row]\"

\n\n\n

This text substitution produces a crude but sometimes useful listing of the entries in the currently chosen table row.

\n\n

See   16.4. 16.4. Changing entries

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[the/-- current table row]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[the/-- current table row]\"

\n

See   16.4. 16.4. Changing entries

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry16 _phrasebook_entry - constant (text) ^text = "

 say \"[row number in/from table name]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[row number in/from table name]\"

\n\n\n

This text substitution produces a crude but sometimes useful listing of the entries in the specified row.

\n\n

See   16.4. 16.4. Changing entries

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[row number in/from table name]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[row number in/from table name]\"

\n

See   16.4. 16.4. Changing entries

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry17 _phrasebook_entry - constant (text) ^text = "

 say \"[table column in/from table name]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[table column in/from table name]\"

\n\n\n

This text substitution produces a crude but sometimes useful listing of the entries in the specified column.

\n\n

See   16.4. 16.4. Changing entries

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[table column in/from table name]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[table column in/from table name]\"

\n

See   16.4. 16.4. Changing entries

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading31 _phrasebook_heading constant (text) ^text = "Sorting Tables" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 sort (table name) in/into random order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (table name) in/into random order

\n\n\n

This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, in a uniformly random order, and any blank rows at the bottom. Example:

\n \n

sort the Table of Recent Monarchs in random order;\n

\n
\n \n\n

See   16.11. 16.11. Sorting

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (table name) in/into random order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (table name) in/into random order

\n

See   16.11. 16.11. Sorting

\n

Kind: phrase table name -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 sort (table name) in/into (table column) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (table name) in/into (table column) order

\n\n\n

This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, so that the given column has ascending order, and any blank rows at the bottom. Example:

\n \n

sort the Table of Recent Monarchs in accession order;\n

\n
\n \n

Ascending order means 1 up to 10, say, or A up to Z, with blank values coming last.

\n\n

See   16.11. 16.11. Sorting

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (table name) in/into (table column) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (table name) in/into (table column) order

\n

See   16.11. 16.11. Sorting

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 sort (table name) in/into reverse (table column) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (table name) in/into reverse (table column) order

\n\n\n

This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, so that the given column has descending order, and any blank rows at the bottom. Example:

\n \n

sort the Table of Recent Monarchs in reverse name order;\n

\n
\n \n

Descending order means 10 down to 1, say, or Z down to A, with blank values coming last.

\n\n

See   16.11. 16.11. Sorting

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (table name) in/into reverse (table column) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (table name) in/into reverse (table column) order

\n

See   16.11. 16.11. Sorting

\n

Kind: phrase (table name, table column) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading32 _phrasebook_heading constant (text) ^text = "Lists" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 add (value) to (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (value) to (list of values)    
\n optionally  if absent\n

\n\n\n

This phrase adds the given value to the end of the list. Example:

\n \n

let L be {60, 168};\n
\n add 360 to L;\n

\n
\n \n

results in L being {60, 168, 360}. Note that the value is added even if it already occurs somewhere in L; this can be avoided with "if absent". So:

\n \n

add 168 to L, if absent;\n

\n
\n \n

would do nothing - it is already there.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (K, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 add (value) to (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (value) to (list of values)    
\n optionally  if absent\n

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (K, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 add (value) at entry (number) in (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (value) at entry (number) in (list of values)    
\n optionally  if absent\n

\n\n\n

This phrase adds the given value so that it becomes the entry with that index number in the list. Example:

\n \n

let L be {1, 2, 3, 4, 8, 24};\n
\n add 12 at entry 6 in L;\n

\n
\n \n

sets L to {1, 2, 3, 4, 8, 12, 24}. If there are N entries in L, then we can add at any of entries 1 up to N+1: adding at entry N+1 means adding at the end. The phrase option "if absent" makes the phrase do nothing if the value already exists anywhere in L.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (K, number, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 add (value) at entry (number) in (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (value) at entry (number) in (list of values)    
\n optionally  if absent\n

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (K, number, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 add (list of values) to (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (list of values) to (list of values)    
\n optionally  if absent\n

\n\n\n

This phrase adds the first list to the end of the second. Example:

\n \n

let L be {2, 3, 5, 7};\n
\n add {11, 13, 17, 19} to L;\n

\n
\n \n

results in L being {2, 3, 5, 7, 11, 13, 17, 19}.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (list of Ks, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 add (list of values) to (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (list of values) to (list of values)    
\n optionally  if absent\n

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (list of Ks, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 add (list of values) at entry (number) in (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (list of values) at entry (number) in (list of values)

\n\n\n

This phrase adds the first list to the second so that it begins at the given position. Example:

\n \n

let L be {1, 2, 3, 4};\n
\n add {4, 8, 12} at entry 3 in L;\n

\n
\n \n

results in L being {1, 2, 4, 8, 12, 3, 4}.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (list of Ks, number, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 add (list of values) at entry (number) in (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 add (list of values) at entry (number) in (list of values)

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (list of Ks, number, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 remove (value) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove (value) from (list of values)    
\n optionally  if present\n

\n\n\n

This phrase removes every instance of the given value from the list. Example:

\n \n

let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
\n remove 1 from L;\n

\n
\n \n

results in L being {3, 4, 5, 9, 2, 6, 5, 3}. Ordinarily "remove 7 from L" would produce a run-time problem, since L does not contain the value 7, but using the "if present" option lets us off this: the phrase then does nothing if L does not contain the value to be removed.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (K, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 remove (value) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove (value) from (list of values)    
\n optionally  if present\n

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (K, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 remove (list of values) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove (list of values) from (list of values)    
\n optionally  if present\n

\n\n\n

This phrase removes every instance of any value in the first list from the second. Example:

\n \n

let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
\n remove {0, 2, 4, 6, 8} from L;\n

\n
\n \n

results in L being {3, 1, 1, 5, 9, 5, 3}. If both lists are large, this can be a slow process, and we might do better by sorting them and trying a more sophisticated method. But this is convenient for anything reasonable-sized.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (list of Ks, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 remove (list of values) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove (list of values) from (list of values)    
\n optionally  if present\n

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (list of Ks, list of Ks) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 remove entry (number) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove entry (number) from (list of values)    
\n optionally  if present\n

\n\n\n

This phrase removes the entry at the given position, counting from 1 as the first entry. (Once it is removed, the other entries shuffle down.) Example:

\n \n

let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
\n remove entry 3 from L;\n

\n
\n \n

results in L being {3, 1, 1, 5, 9, 2, 6, 5, 3}.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (number, list of values) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 remove entry (number) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove entry (number) from (list of values)    
\n optionally  if present\n

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (number, list of values) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 remove entries (number) to (number) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove entries (number) to (number) from (list of values)    
\n optionally  if present\n

\n\n\n

This phrase removes the entries at the given range of positions, counting from 1 as the first entry. (Once they are removed, the other entries shuffle down.) Example:

\n \n

let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
\n remove entries 3 to 6 from L;\n

\n
\n \n

results in L being {3, 1, 2, 6, 5, 3}.

\n\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (number, number, list of values) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 remove entries (number) to (number) from (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 remove entries (number) to (number) from (list of values)    
\n optionally  if present\n

\n

See   21.5. 21.5. Building lists

\n

Kind: phrase (number, number, list of values) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 if (value) is listed in (list of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) is listed in (list of values):

\n\n\n

This condition is true if the given value, which must be of a compatible kind, is one of those in the list. For instance, if L is our list of the numbers 2, 3, 5, 7 and 11 then 5 is listed in it but 6 is not.

\n\n

See   21.4. 21.4. Testing and iterating over lists

\n

Kind: phrase (K, list of Ks) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (value) is listed in (list of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) is listed in (list of values):

\n

See   21.4. 21.4. Testing and iterating over lists

\n

Kind: phrase (K, list of Ks) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 if (value) is not listed in (list of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) is not listed in (list of values):

\n\n\n

This condition is true if the given value, which must be of a compatible kind, is not one of those in the list.

\n\n

See   21.4. 21.4. Testing and iterating over lists

\n

Kind: phrase (K, list of Ks) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (value) is not listed in (list of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) is not listed in (list of values):

\n

See   21.4. 21.4. Testing and iterating over lists

\n

Kind: phrase (K, list of Ks) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 list of (description of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (description of values) ... value

\n\n\n

This phrase produces the list of all values matching the given description. Inform will issue a problem message if the result would be an infinite list, or one which is impractical to test: for instance "list of even numbers" is not feasible.

\n\n

See   21.6. 21.6. Lists of objects

\n

Kind: phrase description of Ks -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 list of (description of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (description of values) ... value

\n

See   21.6. 21.6. Lists of objects

\n

Kind: phrase description of Ks -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading33 _phrasebook_heading constant (text) ^text = "Length of lists" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 number of entries in/of (list of values) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of entries in/of (list of values) ... number

\n\n\n

This phrase produces the number of positions in the list. Example:

\n \n

the number of entries in {1, 1, 1, 3, 1}\n

\n
\n \n

is 5, even though there are only two genuinely different items in the list.

\n\n

See   21.9. 21.9. Accessing entries in a list

\n

Kind: phrase list of values -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of entries in/of (list of values) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of entries in/of (list of values) ... number

\n

See   21.9. 21.9. Accessing entries in a list

\n

Kind: phrase list of values -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 truncate (list of values) to (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 truncate (list of values) to (number) entries/entry

\n\n\n

This phrase alters the given list so that it now has no more than the number of entries given. Example:

\n \n

truncate L to 8 entries;\n

\n
\n \n

shortens L to length 8 if it is currently longer than that, trimming entries from the end, but would (for instance) leave a list of length 3 unchanged. Note that

\n \n

truncate L to 0 entries;\n

\n
\n \n

empties it to { }, the list with nothing in.

\n\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 truncate (list of values) to (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 truncate (list of values) to (number) entries/entry

\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 truncate (list of values) to the first (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 truncate (list of values) to the first (number) entries/entry

\n\n\n

This phrase alters the given list so that it now consists only of the initial part of the list with the given length. Example:

\n \n

truncate L to the first 4 entries;\n

\n
\n \n

turns {1, 3, 5, 7, 9, 11} to {1, 3, 5, 7}.

\n\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 truncate (list of values) to the first (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 truncate (list of values) to the first (number) entries/entry

\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 truncate (list of values) to the last (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 truncate (list of values) to the last (number) entries/entry

\n\n\n

This phrase alters the given list so that it now consists only of the final part of the list with the given length. Example:

\n \n

truncate L to the last 4 entries;\n

\n
\n \n

turns {1, 3, 5, 7, 9, 11} to {5, 7, 9, 11}.

\n\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 truncate (list of values) to the last (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 truncate (list of values) to the last (number) entries/entry

\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 extend (list of values) to (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 extend (list of values) to (number) entries/entry

\n\n\n

This phrase pads out the list with default values as needed so that it now has at least the given length. (If the list is already at least that length, nothing is done.) Example:

\n \n

extend L to 80 entries;\n

\n
\n \n

lengthens L to length 80 if it is currently shorter than that.

\n\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 extend (list of values) to (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 extend (list of values) to (number) entries/entry

\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 change (list of values) to have (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 change (list of values) to have (number) entries/entry

\n\n\n

This phrase alters the given list so that it now has exactly the number of entries given. Example:

\n \n

change L to have 21 entries;\n

\n
\n \n

If L previously had more than 21 entries, they are thrown away (and lost forever); if L previously had fewer, then new entries are created, using the default value for whatever kind of value L holds. So extending a list of numbers will pad it out with 0s, but extending a list of texts will pad it out with the empty text "", and so on.

\n\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 change (list of values) to have (number) entries/entry

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 change (list of values) to have (number) entries/entry

\n

See   21.10. 21.10. Lengthening or shortening a list

\n

Kind: phrase (list of values, number) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading34 _phrasebook_heading constant (text) ^text = "List operations" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 reverse (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 reverse (list of values)

\n\n\n

This phrase puts the list in reverse order. The old entry 1 becomes the new last entry, and so on: reversing an empty list or a list containing only one entry leaves it unchanged. Example:

\n \n

let L be {11, 12, 14, 15, 16, 17};\n
\n reverse L;\n

\n
\n \n

results in L being {17, 16, 15, 14, 12, 11}.

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 reverse (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 reverse (list of values)

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 rotate (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rotate (list of values)

\n\n\n

This phrase shuffles the entries of the list forwards (to the right) by one place, so that the 1st becomes 2nd, the 2nd becomes 3rd, and so on until the last, which becomes the new first entry. Example:

\n \n

let L be { "cow", "heifer", "bullock" };\n
\n rotate L;\n

\n
\n \n

results in L being { "bullock", "cow", "heifer" }.

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 rotate (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rotate (list of values)

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 rotate (list of values) backwards

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rotate (list of values) backwards

\n\n\n

This phrase shuffles the entries of the list backwards (to the left) by one place, so that the 3rd becomes 2nd, the 2nd becomes 1st, and so on; the previous 1st entry becomes the new last entry. Example:

\n \n

let L be { "cow", "heifer", "bullock" };\n
\n rotate L backwards;\n

\n
\n \n

results in L being { "heifer", "bullock", "cow"}. (This achieves the same effect as "reverse L; rotate L; reverse L;" but is a little faster, and a lot less effort to read.)

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 rotate (list of values) backwards

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rotate (list of values) backwards

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 sort (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of values)

\n\n\n

This phrase puts the list into ascending order. Example:

\n \n

let L be {6 PM, 11:13 AM, 4:21 PM, 9:01 AM};\n
\n sort L;\n

\n
\n \n

results in L being {9:01 AM, 11:13 AM, 4:21 PM, 6 PM}.

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (list of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of values)

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 sort (list of values) in/into reverse order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of values) in/into reverse order

\n\n\n

This phrase puts the list into descending order. Example:

\n \n

let L be {6 PM, 11:13 AM, 4:21 PM, 9:01 AM};\n
\n sort L in reverse order;\n

\n
\n \n

results in L being {6 PM, 4:21 PM, 11:13 AM, 9:01 AM}.

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (list of values) in/into reverse order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of values) in/into reverse order

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 sort (list of values) in/into random order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of values) in/into random order

\n\n\n

This phrase puts the list into a uniformly random order, shuffling it as if it were a pack of cards. Example:

\n \n

let L be {1, 2, 3, 4, 5, 6};\n
\n sort L in random order;\n

\n
\n \n

might result in L being {3, 1, 5, 6, 4, 2}. Or any of 719 other arrangements, including being left as it was.

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (list of values) in/into random order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of values) in/into random order

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase list of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 sort (list of objects) in/into (property) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of objects) in/into (property) order

\n\n\n

This phrase puts the list into ascending order of the values of the given property for the items in the list; this is only allowed if all of those values do have the property in question. Example:

\n \n

let L be the list of people;\n
\n sort L in carrying capacity order;\n

\n
\n \n

would arrange people with weaklings first, titans last.

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase (list of objects, property) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (list of objects) in/into (property) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of objects) in/into (property) order

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase (list of objects, property) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 sort (list of objects) in/into reverse (property) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of objects) in/into reverse (property) order

\n\n\n

This phrase puts the list into descending order of the values of the given property for the items in the list; this is only allowed if all of those values do have the property in question. Example:

\n \n

let L be the list of people;\n
\n sort L in reverse carrying capacity order;\n

\n
\n \n

would arrange people with titans first, weaklings last.

\n\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase (list of objects, property) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 sort (list of objects) in/into reverse (property) order

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 sort (list of objects) in/into reverse (property) order

\n

See   21.8. 21.8. Sorting, reversing and rotating lists

\n

Kind: phrase (list of objects, property) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading35 _phrasebook_heading constant (text) ^text = "Relations" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 show relation (relation of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 show relation (relation of values)

\n\n\n

This phrase is for testing purposes only. It shows the current state of the named relation, that is, it shows which values relate to which other ones, where it's possible to do this in any sensible way.

\n\n

See   13.7. 13.7. Relations in groups

\n

Kind: phrase relation of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 show relation (relation of values)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 show relation (relation of values)

\n

See   13.7. 13.7. Relations in groups

\n

Kind: phrase relation of values -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 next step via (relation of objects) from (object) to (object) ... object

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 next step via (relation of objects) from (object) to (object) ... object

\n\n\n

This phrase tries to find a shortest route between the two given endpoints, using the given relation of objects to determine single steps. Example:

\n \n

next step via the overlooking relation from the Folly to the Chinese Lake\n

\n
\n \n

The result is the special object value "nothing" if the two endpoints are the same or if no route exists.

\n\n

See   13.11. 13.11. Indirect relations

\n

Kind: phrase (relation of objects, object, object) -> object

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 next step via (relation of objects) from (object) to (object) ... object

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 next step via (relation of objects) from (object) to (object) ... object

\n

See   13.11. 13.11. Indirect relations

\n

Kind: phrase (relation of objects, object, object) -> object

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 number of steps via (relation of objects) from (object) to (object) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of steps via (relation of objects) from (object) to (object) ... number

\n\n\n

This phrase tries to find the length of a shortest route between the two given endpoints, using the given relation of objects to determine single steps. Example:

\n \n

number of steps via the overlooking relation from the Folly to the Chinese Lake\n

\n
\n \n

The result is 0 if the two endpoints are the same, or -1 if no route exists.

\n\n

See   13.11. 13.11. Indirect relations

\n

Kind: phrase (relation of objects, object, object) -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 number of steps via (relation of objects) from (object) to (object) ... number

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 number of steps via (relation of objects) from (object) to (object) ... number

\n

See   13.11. 13.11. Indirect relations

\n

Kind: phrase (relation of objects, object, object) -> number

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 list of (name of kind) that/which/whom (relation of values) relates ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) that/which/whom (relation of values) relates ... value

\n\n\n

This phrase produces a list of all X which relate to anything under the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

\n \n

list of texts which the partnership relation relates\n

\n
\n \n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, relation of Ks to Ls) -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 list of (name of kind) that/which/whom (relation of values) relates ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) that/which/whom (relation of values) relates ... value

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, relation of Ks to Ls) -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

 list of (name of kind) to which/whom (relation of values) relates ... value

\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 list of (name of kind) that/which/whom (relation of values) relates to ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) to which/whom (relation of values) relates ... value

\n\n\n

This phrase produces a list of all Y which anything relates to under the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

\n \n

list of texts which the partnership relation relates to\n

\n
\n \n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (L, relation of Ks to Ls) -> list of Ls

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 list of (name of kind) that/which/whom (relation of values) relates to ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) to which/whom (relation of values) relates ... value

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (L, relation of Ks to Ls) -> list of Ls

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

\n\n\n

This phrase produces a list of all the X such that X relates to the given value V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

\n \n

list of texts which relate to "cheese" by the partnership relation\n

\n
\n \n

which might be, say, { "chalk", "grapes", "macaroni" }. The answer might be the empty set, but that's not a problem.

\n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry constant (text) ^text = "

 list of (name of kind) to which/whom (value) relates by (relation of values) ... value

\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 list of (name of kind) that/which/whom (value) relates to by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) to which/whom (value) relates by (relation of values) ... value

\n\n\n

This phrase produces a list of all Y such that the given value V relates to Y by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

\n \n

list of texts to which "chalk" relates by the partnership relation\n

\n
\n \n

which might be, say, { "cheese", "blackboard", "cliffs" }. The answer might be the empty set, but that's not a problem.

\n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (L, K, relation of Ks to Ls) -> list of Ls

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 list of (name of kind) that/which/whom (value) relates to by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 list of (name of kind) to which/whom (value) relates by (relation of values) ... value

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (L, K, relation of Ks to Ls) -> list of Ls

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

 if (name of kind) relates to (value) by (relation of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (name of kind) relates to (value) by (relation of values):

\n\n\n

This condition is true if the value V is such that something relates to V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can test

\n \n

if a text relates to "cheese" by the partnership relation, ...\n

\n
\n \n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (name of kind) relates to (value) by (relation of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (name of kind) relates to (value) by (relation of values):

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

 if (value) relates to (name of kind) by (relation of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) relates to (name of kind) by (relation of values):

\n\n\n

This condition is true if the value V is such that V relates to something by the given relation. Example: suppose partnership relates various texts to various texts. Then we can test

\n \n

if "chalk" relates to a text by the partnership relation, ...\n

\n
\n \n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (value) relates to (name of kind) by (relation of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) relates to (name of kind) by (relation of values):

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

 (name of kind) that/which/who relates to (value) by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) that/which/who relates to (value) by (relation of values) ... value

\n\n\n

This phrase produces an X such that X relates to the given value V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

\n \n

the text which relates to "cheese" by the partnership relation\n

\n
\n \n

which might be, say, "chalk". It's a run-time problem to use this if no such X exists.

\n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (name of kind) that/which/who relates to (value) by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) that/which/who relates to (value) by (relation of values) ... value

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (K, L, relation of Ks to Ls) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry13 _phrasebook_entry constant (text) ^text = "

 (name of kind) to which/whom (value) relates by (relation of values) ... value

\n" package phrasebook_entry14 _phrasebook_entry - constant (text) ^text = "

 (name of kind) that/which/whom (value) relates to by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) to which/whom (value) relates by (relation of values) ... value

\n\n\n

This phrase produces an Y such that the given value V relates to Y by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

\n \n

the text to which "chalk" relates by the partnership relation\n

\n
\n \n

which might be, say, "cheese". It's a run-time problem to use this if no such Y exists.

\n\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (L, K, relation of Ks to Ls) -> L

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (name of kind) that/which/whom (value) relates to by (relation of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) to which/whom (value) relates by (relation of values) ... value

\n

See   13.13. 13.13. Relations involving values

\n

Kind: phrase (L, K, relation of Ks to Ls) -> L

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading36 _phrasebook_heading constant (text) ^text = "Applying Functions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 if (value) matches (description of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) matches (description of values):

\n\n\n

This condition is true if the value matches the description; the kinds must be compatible, or Inform will issue a problem message. There is no point using this for cases where the description is given explicitly:

\n \n

if 4 matches even numbers, ...\n

\n
\n \n

because it is easier to write just:

\n \n

if 4 is an even number, ...\n

\n
\n \n

So this condition is only useful when the description is stored in some variable, and its identity is not known.

\n\n

See   22.2. 22.2. Descriptions as values

\n

Kind: phrase (K, description of Ks) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (value) matches (description of values):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (value) matches (description of values):

\n

See   22.2. 22.2. Descriptions as values

\n

Kind: phrase (K, description of Ks) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry constant (text) ^text = "

 (phrase nothing -> value) applied ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (phrase nothing -> value) applied ... value

\n\n\n

This phrase produces the result of applying the given phrase, which must be one which takes no values itself.

\n\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase phrase nothing -> K -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry @@ -29269,107 +29269,107 @@ package main _plain package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

 (phrase (nothing, nothing, nothing) -> value) applied to (value) and (value) and (value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (phrase (nothing, nothing, nothing) -> value) applied to (value) and (value) and (value) ... value

\n\n\n

This phrase produces the result of applying the given phrase, which must be one which takes three values itself.

\n\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase (phrase (K, L, M) -> N, K, L, M) -> N

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 apply (phrase nothing -> nothing)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase nothing -> nothing)

\n\n\n

This phrase causes the given phrase to be applied. It must be one which takes no values itself.

\n\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase phrase nothing -> nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 apply (phrase nothing -> nothing)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase nothing -> nothing)

\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase phrase nothing -> nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 apply (phrase nothing -> nothing) to (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase nothing -> nothing) to (value)

\n\n\n

This phrase causes the given phrase to be applied. It must be one which takes one value itself.

\n\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase (phrase K -> nothing, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 apply (phrase nothing -> nothing) to (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase nothing -> nothing) to (value)

\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase (phrase K -> nothing, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 apply (phrase (nothing, nothing) -> nothing) to (value) and (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase (nothing, nothing) -> nothing) to (value) and (value)

\n\n\n

This phrase causes the given phrase to be applied. It must be one which takes two values itself.

\n\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase (phrase (K, L) -> nothing, K, L) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 apply (phrase (nothing, nothing) -> nothing) to (value) and (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase (nothing, nothing) -> nothing) to (value) and (value)

\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase (phrase (K, L) -> nothing, K, L) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 apply (phrase (nothing, nothing, nothing) -> nothing) to (value) and (value) and (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase (nothing, nothing, nothing) -> nothing) to (value) and (value) and (value)

\n\n\n

This phrase causes the given phrase to be applied. It must be one which takes three values itself.

\n\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase (phrase (K, L, M) -> nothing, K, L, M) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 apply (phrase (nothing, nothing, nothing) -> nothing) to (value) and (value) and (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 apply (phrase (nothing, nothing, nothing) -> nothing) to (value) and (value) and (value)

\n

See   22.3. 22.3. Phrases as values

\n

Kind: phrase (phrase (K, L, M) -> nothing, K, L, M) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading37 _phrasebook_heading constant (text) ^text = "Working with Lists" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 (phrase nothing -> value) applied to (list of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (phrase nothing -> value) applied to (list of values) ... value

\n\n\n

This phrase takes the list, applies the phrase to each entry in the list, and forms a new list of the result. Example:

\n \n

To decide what number is double (N - a number) (this is doubling):\n
\n     decide on N plus N.\n

\n
\n \n

Then "doubling applied to 2" produces 4, by the simpler definition of "applied to", but also:

\n \n

doubling applied to {2, 3, 4}\n

\n
\n \n

produces the list {4, 6, 8}.

\n\n

See   22.5. 22.5. Map, filter and reduce

\n

Kind: phrase (phrase K -> L, list of Ks) -> list of Ls

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (phrase nothing -> value) applied to (list of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (phrase nothing -> value) applied to (list of values) ... value

\n

See   22.5. 22.5. Map, filter and reduce

\n

Kind: phrase (phrase K -> L, list of Ks) -> list of Ls

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

\n\n\n

This phrase works through the list and accumulates the values in it, using the phrase supplied. Example: if we have

\n \n

To decide what number is the sum of (N - number) and (M - number)\n
\n     (this is summing):\n
\n     decide on N + M.\n

\n
\n \n

then the summing reduction of {3, 8, 4, 19, 7} is the number 41, obtained by

\n \n

(((3 + 8) + 4) + 19) + 7\n

\n
\n \n

so that the summing phrase has been used four times.

\n\n

See   22.5. 22.5. Map, filter and reduce

\n

Kind: phrase (phrase (K, K) -> K, list of Ks) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

\n

See   22.5. 22.5. Map, filter and reduce

\n

Kind: phrase (phrase (K, K) -> K, list of Ks) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 filter to (description of values) of (list of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 filter to (description of values) of (list of values) ... value

\n\n\n

This phrase produces a new list which is a thinner version of the one given, so that it contains only those values which match the description given. Example:

\n \n

filter to even numbers of {3, 8, 4, 19, 7}\n

\n
\n \n

produces {8, 4}, with the values 3, 19, and 7 failing to make it through. A sufficiently fine filter may well thin out a list to a single entry, or even no entries at all, but the result is always a list.

\n\n

See   22.5. 22.5. Map, filter and reduce

\n

Kind: phrase (description of Ks, list of Ks) -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 filter to (description of values) of (list of values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 filter to (description of values) of (list of values) ... value

\n

See   22.5. 22.5. Map, filter and reduce

\n

Kind: phrase (description of Ks, list of Ks) -> list of Ks

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading38 _phrasebook_heading constant (text) ^text = "Carrying out Activities" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 carry out the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 carry out the (activity) activity

\n\n\n

This phrase carries out the given activity, which must be one not applying to any value. Example:

\n \n

carry out the assaying activity;\n

\n
\n \n\n

See   18.5. 18.5. New activities

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 carry out the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 carry out the (activity) activity

\n

See   18.5. 18.5. New activities

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 carry out the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 carry out the (activity) activity with (value)

\n\n\n

This phrase carries out the given activity, which must apply to a kind of value matching the one supplied. Example:

\n \n

carry out the analysing activity with the pitchblende;\n
\n carry out the announcing activity with the score;\n

\n
\n \n\n

See   18.5. 18.5. New activities

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 carry out the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 carry out the (activity) activity with (value)

\n

See   18.5. 18.5. New activities

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 continue the activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 continue the activity

\n\n\n

This phrase should be used only in rules in activity rulebooks. It causes the current rule to end, but without result, so that the activity continues rather than stopping as a result of the rule. This is useful for rulebooks like the "for" rulebook of an activity) where the default is that a rule does stop the activity.

\n\n

See   18.5. 18.5. New activities

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 continue the activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 continue the activity

\n

See   18.5. 18.5. New activities

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading39 _phrasebook_heading constant (text) ^text = "Advanced Activities" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 begin the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 begin the (activity) activity

\n\n\n

This phrase causes the named activity to become active, and runs its "before" rulebook. The activity must be one which applies to nothing. Example:

\n \n

begin the assaying activity;\n

\n
\n \n

In all cases a matching "end the ... activity" or else "abandon the ... activity" phrase must be reached.

\n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 begin the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 begin the (activity) activity

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 begin the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 begin the (activity) activity with (value)

\n\n\n

This phrase causes the named activity to become active, and runs its "before" rulebook. The activity must be one which applies to a value of a matching kind. Example:

\n \n

begin the analysing activity with the pitchblende;\n

\n
\n \n

In all cases a matching "end the ... activity with ..." or else "abandon the ... activity with..." phrase must be reached.

\n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 begin the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 begin the (activity) activity with (value)

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 if handling (activity) activity:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if handling (activity) activity:

\n\n\n

This should be used only where the given activity has been started with "begin ..." and will be finished with "end ...". It runs the "for" rules for the activity, and then comes out true if none of those for rules intervened in the handling of that activity. (The activity must be one which doesn't apply to any value.)

\n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if handling (activity) activity:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if handling (activity) activity:

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 if handling (activity) activity with (value):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if handling (activity) activity with (value):

\n\n\n

This should be used only where the given activity has been started with "begin ..." and will be finished with "end ...". It runs the "for" rules for the activity, and then comes out true if none of those for rules intervened in the handling of that activity. (The given value m st be the one it is being applied to.)

\n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if handling (activity) activity with (value):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if handling (activity) activity with (value):

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 end the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 end the (activity) activity

\n\n\n

This phrase runs the "after" rulebook of the activity and then causes it to become inactive. The activity must be one which applies to nothing. Example:

\n \n

end the assaying activity;\n

\n
\n \n

This must only happen to match an earlier "begin the ... activity" phrase.

\n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 end the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 end the (activity) activity

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 end the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 end the (activity) activity with (value)

\n\n\n

This phrase runs the "after" rulebook of the activity and then causes it to become inactive. The activity must be one which applies to a value of a matching kind. Example:

\n \n

end the analysing activity with the pitchblende;\n

\n
\n \n

This must only happen to match an earlier "begin the ... activity with..." phrase.

\n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 end the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 end the (activity) activity with (value)

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 abandon the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abandon the (activity) activity

\n\n\n

This phrase ends an activity at once (without consulting any further rulebooks, including its "after" rulebook). It can only be used with an activity which has had its "begin" but not yet its "end" phrase; it is a drastic remedy best taken o ly if it is clear that circumstances have changed so that the activity now seems inappropriate. It must not be used during one of the rules for the activity: it can only be used between the begin and for stages, or between the for and end stages.

\n \n

abandon the assaying activity;\n

\n
\n \n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 abandon the (activity) activity

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abandon the (activity) activity

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase activity -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 abandon the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abandon the (activity) activity with (value)

\n\n\n

This phrase ends an activity at once (without consulting any further rulebooks, including its "after" rulebook). It can only be used with an activity which has had its "begin" but not yet its "end" phrase; it is a drastic remedy best taken only if it is clear that circumstan es have changed so that the activity now seems inappropriate. It must not be used during one of the rules for the activity: it can only be used between the begin and for stages, or between the for and end stages.

\n \n

abandon the analysing activity with the pitchblende;\n

\n
\n \n\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 abandon the (activity) activity with (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abandon the (activity) activity with (value)

\n

See   18.7. 18.7. Beginning and ending activities manually

\n

Kind: phrase (activity on Ks, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading40 _phrasebook_heading constant (text) ^text = "Following Rules" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 follow (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 follow (nothing based rule)

\n\n\n

This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such). Example:

\n \n

follow the advance time rule;\n
\n follow the appraisal rulebook;\n

\n
\n \n\n

See   19.8. 19.8. New rulebooks

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 follow (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 follow (nothing based rule)

\n

See   19.8. 19.8. New rulebooks

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 follow (nothing based rule producing values) for (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 follow (nothing based rule producing values) for (value)

\n\n\n

This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such), and applies it to the value given, which must be of a matching kind. Example:

\n \n

follow the reaching inside rulebook for the electrified cage;\n

\n
\n \n\n

See   19.9. 19.9. Basis of a rulebook

\n

Kind: phrase (Ks based rule producing values, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 follow (nothing based rule producing values) for (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 follow (nothing based rule producing values) for (value)

\n

See   19.9. 19.9. Basis of a rulebook

\n

Kind: phrase (Ks based rule producing values, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 follow (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 follow (nothing based rule)

\n\n\n

This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such). Example:

\n \n

follow the advance time rule;\n
\n follow the appraisal rulebook;\n

\n
\n \n\n

See   19.8. 19.8. New rulebooks

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 follow (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 follow (nothing based rule)

\n

See   19.8. 19.8. New rulebooks

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 (name of kind) produced by (nothing based rule producing values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) produced by (nothing based rule producing values) ... value

\n\n\n

This phrase is used to follow the named rule, and to collect the resulting value.

\n\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase (K, nothing based rule producing Ks) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (name of kind) produced by (nothing based rule producing values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) produced by (nothing based rule producing values) ... value

\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase (K, nothing based rule producing Ks) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 (name of kind) produced by (nothing based rule producing values) for (value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) produced by (nothing based rule producing values) for (value) ... value

\n\n\n

This phrase is used to follow the named rule based on the value given, and to collect the resulting value.

\n\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase (L, Ks based rule producing Ls, K) -> L

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (name of kind) produced by (nothing based rule producing values) for (value) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) produced by (nothing based rule producing values) for (value) ... value

\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase (L, Ks based rule producing Ls, K) -> L

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 (name of kind) produced by (nothing based rule producing values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) produced by (nothing based rule producing values) ... value

\n\n\n

This phrase is used to follow the named rule, and to collect the resulting value.

\n\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase (K, nothing based rule producing Ks) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 (name of kind) produced by (nothing based rule producing values) ... value

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 (name of kind) produced by (nothing based rule producing values) ... value

\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase (K, nothing based rule producing Ks) -> K

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 abide by (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abide by (nothing based rule)

\n\n\n

This phrase applies the given rule, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further i structions. Example:

\n \n

The omnibus rule:\n
\n     abide by the first rule;\n
\n     abide by the second rule;\n
\n     abide by the third rule;\n
\n     abide by the fourth rule.\n

\n
\n \n

This duplicates the effect of a rulebook of four rules: the "omnibus rule" tries each in turn, and stops as soon as any of them stop.

\n\n

See   19.14. 19.14. Abide by

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 abide by (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abide by (nothing based rule)

\n

See   19.14. 19.14. Abide by

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

 abide by (nothing based rule producing values) for (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abide by (nothing based rule producing values) for (value)

\n\n\n

This phrase applies the given rule to the given value, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further instructions.

\n\n

See   19.14. 19.14. Abide by

\n

Kind: phrase (Ks based rule producing values, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 abide by (nothing based rule producing values) for (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abide by (nothing based rule producing values) for (value)

\n

See   19.14. 19.14. Abide by

\n

Kind: phrase (Ks based rule producing values, K) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

 abide by (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abide by (nothing based rule)

\n\n\n

This phrase applies the given rule, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further i structions. Example:

\n \n

The omnibus rule:\n
\n     abide by the first rule;\n
\n     abide by the second rule;\n
\n     abide by the third rule;\n
\n     abide by the fourth rule.\n

\n
\n \n

This duplicates the effect of a rulebook of four rules: the "omnibus rule" tries each in turn, and stops as soon as any of them stop.

\n\n

See   19.14. 19.14. Abide by

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 abide by (nothing based rule)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 abide by (nothing based rule)

\n

See   19.14. 19.14. Abide by

\n

Kind: phrase nothing based rule -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading41 _phrasebook_heading constant (text) ^text = "Success and Failure" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 make no decision

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 make no decision

\n\n\n

This causes the current rule to end immediately, but with no outcome. That means the rulebook being worked through will continue to run on, beginning with the next rule.

\n\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 make no decision

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 make no decision

\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 rule succeeds

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rule succeeds

\n\n\n

This causes the current rule to end immediately, with its outcome considered to be a success. The rulebook being worked through also ends, and is also a success.

\n\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 rule succeeds

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rule succeeds

\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 rule fails

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rule fails

\n\n\n

This causes the current rule to end immediately, with its outcome considered to be a failure. The rulebook being worked through also ends, and is also a failure.

\n\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 rule fails

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rule fails

\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 rule succeeds with result (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rule succeeds with result (value)

\n\n\n

This phrase can only be used in a rule which produces a value, and the value given must be of the right kind. It causes the current rule to finish immediately, to succeed, and to produce the value given.

\n\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 rule succeeds with result (value)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 rule succeeds with result (value)

\n

See   19.13. 19.13. Rulebooks producing values

\n

Kind: phrase value -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

 if rule succeeded:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if rule succeeded:

\n\n\n

This condition is true if the most recently followed rule or rulebook ended in success. Example:

\n \n

follow the hypothetical clever rule;\n
\n if rule succeeded:\n
\n     ...\n

\n
\n \n\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if rule succeeded:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if rule succeeded:

\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

 if rule failed:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if rule failed:

\n\n\n

This condition is true if the most recently followed rule or rulebook ended in failure. Example:

\n \n

follow the hypothetical clever rule;\n
\n if rule failed:\n
\n     ...\n

\n
\n \n

Note that this is not the opposite of "rule succeeded", because there's a third possibility: that it ended with no outcome.

\n\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if rule failed:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if rule failed:

\n

See   19.11. 19.11. Success and failure

\n

Kind: phrase nothing -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

 outcome of the rulebook ... rulebook outcome

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 outcome of the rulebook ... rulebook outcome

\n\n\n

This phrase produces the (named) outcome of the phrase most recently followed. Example:

\n \n

follow the audibility rules;\n
\n if the outcome of the rulebook is the absolute silence outcome:\n
\n     say "You could hear a pin drop in here."\n

\n
\n \n\n

See   19.12. 19.12. Named outcomes

\n

Kind: phrase nothing -> rulebook outcome

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 outcome of the rulebook ... rulebook outcome

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 outcome of the rulebook ... rulebook outcome

\n

See   19.12. 19.12. Named outcomes

\n

Kind: phrase nothing -> rulebook outcome

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading42 _phrasebook_heading constant (text) ^text = "Files of Text" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 write (text) to (external file)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 write (text) to (external file)

\n\n\n

This phrase makes the given text become the entire contents of the named file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

\n \n

write "Jackdaws love my big sphinx of quartz." to the file of Abecedary Wisdom;\n

\n
\n \n\n

See   23.14. 23.14. Writing, reading and appending text to files

\n

Kind: phrase (text, external file) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 write (text) to (external file)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 write (text) to (external file)

\n

See   23.14. 23.14. Writing, reading and appending text to files

\n

Kind: phrase (text, external file) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 append (text) to (external file)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 append (text) to (external file)

\n\n\n

This phrase adds the given text to the end of the current contents of the named file (creating it if it does not exist on disc). Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. E ample:

\n \n

append "Jinxed wizards pluck ivy from the big quilt." to the file of Abecedary Wisdom;\n

\n
\n \n\n

See   23.14. 23.14. Writing, reading and appending text to files

\n

Kind: phrase (text, external file) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 append (text) to (external file)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 append (text) to (external file)

\n

See   23.14. 23.14. Writing, reading and appending text to files

\n

Kind: phrase (text, external file) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 say \"[text of external file]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[text of external file]\"

\n\n\n

This text expands to the contents of the named file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

\n \n

"[text of the File of Abecedary Wisdom]"\n

\n
\n \n\n

See   23.14. 23.14. Writing, reading and appending text to files

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 say \"[text of external file]\"

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 say \"[text of external file]\"

\n

See   23.14. 23.14. Writing, reading and appending text to files

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading43 _phrasebook_heading constant (text) ^text = "Files of Data" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 read (external file) into (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 read (external file) into (table name)

\n\n\n

This phrase causes the entire contents of the given table to be read in from the given file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

\n \n

read File of Glaciation Data into the Table of Antarctic Reserves\n

\n
\n \n

Any rows left spare at the foot of the table are automatically blanked. On the other hand if the file is too large to fit into the table - with too many columns or too many rows - a run-time problem is produced.

\n\n

See   23.13. 23.13. Writing and reading tables to external files

\n

Kind: phrase (external file, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 read (external file) into (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 read (external file) into (table name)

\n

See   23.13. 23.13. Writing and reading tables to external files

\n

Kind: phrase (external file, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 write (external file) from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 write (external file) from (table name)

\n\n\n

This phrase causes the entire contents of the given table to be written out to the given file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

\n \n

write File of Glaciation Data from the Table of Antarctic Reserves\n

\n
\n \n

Any blank rows in the table are automatically moved to the bottom, and only the non-blank rows are written.

\n\n

See   23.13. 23.13. Writing and reading tables to external files

\n

Kind: phrase (external file, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 write (external file) from (table name)

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 write (external file) from (table name)

\n

See   23.13. 23.13. Writing and reading tables to external files

\n

Kind: phrase (external file, table name) -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_heading44 _phrasebook_heading constant (text) ^text = "File Handling" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

 if (external file) exists:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (external file) exists:

\n\n\n

This condition is true if the file-system used by the player appears to contain a file with the right name. For example, if we declared:

\n \n

The binary File of Glaciation Data is called "icedata".\n

\n
\n \n

and then tested

\n \n

if the File of Glaciation Data exists, ...\n

\n
\n \n

then Inform would search for a file called "icedata". (The arrangements for where this might be stored, and its filename extension, vary from platform to platform.)

\n\n

See   23.13. 23.13. Writing and reading tables to external files

\n

Kind: phrase external file -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if (external file) exists:

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if (external file) exists:

\n

See   23.13. 23.13. Writing and reading tables to external files

\n

Kind: phrase external file -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

 if ready to read (external file):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if ready to read (external file):

\n\n\n

This condition is true if the file exists and is marked as being ready to read; that is, it is not in a state where another program is currently writing it. Example:

\n \n

if ready to read the file of Invariants, ...\n

\n
\n \n\n

See   23.15. 23.15. Exchanging files with other programs

\n

Kind: phrase external file -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 if ready to read (external file):

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 if ready to read (external file):

\n

See   23.15. 23.15. Exchanging files with other programs

\n

Kind: phrase external file -> truth state

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

 mark (external file) as ready to read

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 mark (external file) as ready to read

\n\n\n

This phrase marks that we have finished writing to the given file, so that any external program is welcome to read it now. Example:

\n \n

mark the file of Invariants as ready to read;\n

\n
\n \n\n

See   23.15. 23.15. Exchanging files with other programs

\n

Kind: phrase external file -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 mark (external file) as ready to read

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 mark (external file) as ready to read

\n

See   23.15. 23.15. Exchanging files with other programs

\n

Kind: phrase external file -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

 mark (external file) as not ready to read

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 mark (external file) as not ready to read

\n\n\n

This phrase marks that we are about to start writing to the given file, so that any external program should wait until we're finished if it wants to read the file. Example:

\n \n

mark the file of Invariants as not ready to read;\n

\n
\n \n\n

See   23.15. 23.15. Exchanging files with other programs

\n

Kind: phrase external file -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" + constant (text) ^text = "

 mark (external file) as not ready to read

\n
\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \"...\"\n \n\n \n \"...\"\n
\n\n \n

 mark (external file) as not ready to read

\n

See   23.15. 23.15. Exchanging files with other programs

\n

Kind: phrase external file -> nothing

\n\n
\n\n
\n \"...\"\n \n\n \n \"...\"\n
\n

\n
\n" package phrasebook_super_heading3 _phrasebook_super_heading constant (text) ^text = "Defined in the source" package phrasebook_heading1 _phrasebook_heading diff --git a/inform7/if-module/Chapter 4/Actions Plugin.w b/inform7/if-module/Chapter 4/Actions Plugin.w index acf0b5ca0..fc42896f5 100644 --- a/inform7/if-module/Chapter 4/Actions Plugin.w +++ b/inform7/if-module/Chapter 4/Actions Plugin.w @@ -165,6 +165,7 @@ int ActionsPlugin::new_action_SMF(int task, parse_node *V, wording *NPs) { } @ = +LOG("Checking %W\n", OW); if ((OW)) { if (<> == FALSE) return FALSE; parse_node *O = <>; @@ -184,6 +185,7 @@ as an instance of "... is an action ...", creating a new action. ==> { pass 1 } ::= + action based ... | ==> { FALSE, NULL } action | ==> { TRUE, RP[1] } action ==> @