... This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. ... If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. (.require [library [lux (.except) [abstract [monad (.only do)]] [control ["[0]" exception]] [meta [macro ["^" pattern]] [compiler [target ["_" lua]]]]]] ["[0]" / [runtime (.only Phase)] ["[1][0]" primitive] ["[1][0]" structure] ["[1][0]" reference] ["[1][0]" when] ["[1][0]" loop] ["[1][0]" function] ["/[1]" // ["[1][0]" reference] ["/[1]" // ["[1][0]" extension (.only) [translation [lua ["[1]/[0]" common]]]] ["/[1]" // [analysis (.only)] ["[0]" phase (.use "[1]#[0]" monad)] ["[0]" synthesis] [/// [reference (.only) [variable (.only)]]]]]]]) (exception.def .public cannot_recur_as_an_expression) (def .public (expression extender lux) (-> ///extension.Extender Lux Phase) (function (expression archive synthesis) (when synthesis (^.with_template [ ] [( @ value) (phase#in ( value))]) ([synthesis.bit /primitive.bit] [synthesis.i64 /primitive.i64] [synthesis.f64 /primitive.f64] [synthesis.text /primitive.text]) (synthesis.variant @ variantS) (/structure.variant expression archive variantS) (synthesis.tuple @ members) (/structure.tuple expression archive members) [@ {synthesis.#Reference value}] (//reference.reference /reference.system archive value) (synthesis.branch/when @ when) (/when.when ///extension/common.statement expression archive when) (synthesis.branch/exec @ it) (/when.exec expression archive it) (synthesis.branch/let @ let) (/when.let expression archive let) (synthesis.branch/if @ if) (/when.if expression archive if) (synthesis.branch/get @ get) (/when.get expression archive get) (synthesis.loop/scope @ scope) (/loop.scope ///extension/common.statement expression archive scope) (synthesis.loop/again @ updates) (phase.except ..cannot_recur_as_an_expression []) (synthesis.function/abstraction @ abstraction) (/function.function ///extension/common.statement expression archive abstraction) (synthesis.function/apply @ application) (/function.apply expression archive application) [@ {synthesis.#Extension [name parameters]}] (///extension.application extender lux expression archive .Translation false name parameters (|>>) (function (_ _) {.#None})))))