hydra-ext 0.17.5 → 0.17.6
raw patch · 57 files changed
+323/−160 lines, 57 filesdep ~hydra-kerneldep ~hydra-rdfPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hydra-kernel, hydra-rdf
API changes (from Hackage documentation)
Files
- CHANGELOG.md +162/−0
- hydra-ext.cabal +4/−4
- src/main/haskell/Hydra/Atlas.hs +1/−1
- src/main/haskell/Hydra/Avro/Coder.hs +25/−25
- src/main/haskell/Hydra/Avro/Encoder.hs +2/−2
- src/main/haskell/Hydra/Avro/Environment.hs +1/−1
- src/main/haskell/Hydra/Avro/Language.hs +1/−1
- src/main/haskell/Hydra/Avro/Schema.hs +1/−1
- src/main/haskell/Hydra/Avro/SchemaJson.hs +5/−5
- src/main/haskell/Hydra/Avro/Testing.hs +1/−1
- src/main/haskell/Hydra/Azure/Dtld.hs +1/−1
- src/main/haskell/Hydra/Cpp/Coder.hs +2/−2
- src/main/haskell/Hydra/Cpp/Environment.hs +1/−1
- src/main/haskell/Hydra/Cpp/Language.hs +1/−1
- src/main/haskell/Hydra/Cpp/Names.hs +1/−1
- src/main/haskell/Hydra/Cpp/Serde.hs +8/−8
- src/main/haskell/Hydra/Cpp/Syntax.hs +1/−1
- src/main/haskell/Hydra/Cpp/Utils.hs +2/−2
- src/main/haskell/Hydra/Csharp/Language.hs +1/−1
- src/main/haskell/Hydra/Csharp/Syntax.hs +1/−1
- src/main/haskell/Hydra/Datalog/Syntax.hs +1/−1
- src/main/haskell/Hydra/Delta/Parquet.hs +1/−1
- src/main/haskell/Hydra/Geojson/Model.hs +1/−1
- src/main/haskell/Hydra/Graphql/Coder.hs +2/−2
- src/main/haskell/Hydra/Graphql/Language.hs +1/−1
- src/main/haskell/Hydra/Graphql/Serde.hs +2/−2
- src/main/haskell/Hydra/Graphql/Syntax.hs +1/−1
- src/main/haskell/Hydra/Iana/Linkrelations.hs +1/−1
- src/main/haskell/Hydra/Json/Schema/Coder.hs +5/−4
- src/main/haskell/Hydra/Json/Schema/Language.hs +1/−1
- src/main/haskell/Hydra/Json/Schema/Model.hs +1/−1
- src/main/haskell/Hydra/Json/Schema/Serde.hs +2/−2
- src/main/haskell/Hydra/Kusto/Kql.hs +1/−1
- src/main/haskell/Hydra/Osv/Schema.hs +1/−1
- src/main/haskell/Hydra/Parquet/Format.hs +1/−1
- src/main/haskell/Hydra/Pegasus/Coder.hs +2/−2
- src/main/haskell/Hydra/Pegasus/Language.hs +1/−1
- src/main/haskell/Hydra/Pegasus/Pdl.hs +1/−1
- src/main/haskell/Hydra/Pegasus/Serde.hs +10/−10
- src/main/haskell/Hydra/Protobuf/Any.hs +1/−1
- src/main/haskell/Hydra/Protobuf/Coder.hs +1/−1
- src/main/haskell/Hydra/Protobuf/Environment.hs +1/−1
- src/main/haskell/Hydra/Protobuf/Language.hs +1/−1
- src/main/haskell/Hydra/Protobuf/Proto3.hs +1/−1
- src/main/haskell/Hydra/Protobuf/Serde.hs +19/−19
- src/main/haskell/Hydra/Protobuf/SourceContext.hs +1/−1
- src/main/haskell/Hydra/Rust/Coder.hs +3/−3
- src/main/haskell/Hydra/Rust/Language.hs +1/−1
- src/main/haskell/Hydra/Rust/Operators.hs +1/−1
- src/main/haskell/Hydra/Rust/Serde.hs +13/−13
- src/main/haskell/Hydra/Rust/Syntax.hs +1/−1
- src/main/haskell/Hydra/Sql/Syntax.hs +1/−1
- src/main/haskell/Hydra/Stac/Items.hs +1/−1
- src/main/haskell/Hydra/Workflow.hs +1/−1
- src/main/haskell/Hydra/Yaml/Coder.hs +2/−2
- src/main/haskell/Hydra/Yaml/Language.hs +1/−1
- src/main/haskell/Hydra/Yaml/Serde.hs +15/−15
CHANGELOG.md view
@@ -15,6 +15,168 @@ --- +## [0.17.6] - 2026-08-30++Point release on the 0.17.x line, and the last backward-incompatible batch before the 1.0 surface+freeze. Five kernel-surface changes land together as the "0.17 breaking batch":+`null` becomes `isEmpty`, `read*`/`show*` become `parse*`/`print*`, `TypeScheme.constraints` and+`TypeVariableConstraints.classes` change shape, and the constructor primitives are finalized.+Alongside them, a genuine soundness gap in type inference is fixed — class constraints now propagate+through function-domain positions — and the cold-seed path is rebuilt on the Java host so that+breaking core-type changes are no longer structurally impossible to bootstrap.++**Backward-incompatible.** All five surface changes below alter the published kernel. Code written+against 0.17.5 must be updated:++- **[#682]** `hydra.lib.{lists,sets,maps,strings}.null` -> `.isEmpty`.+- **[#691]** the `read*`/`show*` family -> `parse*`/`print*`.+- **[#683]** `TypeScheme.constraints`: `optional<map>` -> plain `map`.+- **[#685]** `TypeVariableConstraints.classes`: `list` -> `set`.+- **[#687]** constructor primitives finalized: `lists.pure` is removed; `optionals.given`,+ `eithers.left`/`right` and `pairs.pair` are added.++[#682]: https://github.com/CategoricalData/hydra/issues/682+[#683]: https://github.com/CategoricalData/hydra/issues/683+[#685]: https://github.com/CategoricalData/hydra/issues/685+[#687]: https://github.com/CategoricalData/hydra/issues/687+[#691]: https://github.com/CategoricalData/hydra/issues/691++### Highlights++- **Class constraints propagate through contravariant positions**+ ([#702](https://github.com/CategoricalData/hydra/issues/702)): inference silently dropped a class+ constraint when the constrained type variable was bound through the **domain** (input) position of a+ higher-order function argument, while transferring it correctly in output positions — a real soundness+ gap in the type checker. It had been papered over twice by freezing `encodeMap`/`encodeSet` to+ monomorphic `Int`. Both freezes and the [#554](https://github.com/CategoricalData/hydra/issues/554)+ `toPrimitive` stopgap are now removed, the definitions re-polymorphized, and a domain-position+ regression test added. A `sets.filter` overlay lands across Java, Python, Scala, TypeScript and the+ Lisp dialects as its first consumer.+- **Cold-seed rebuilt on the Java host**+ ([#703](https://github.com/CategoricalData/hydra/issues/703)): CI's cold-seed steps compiled HEAD's+ kernel `Types` source against the *published* Hackage `hydra-kernel`, which is sound only for additive+ changes and structurally impossible for any breaking core-type-shape change — the root of a recurring+ red-CI class (#500, #608, #617, #417, #683). The Haskell cold-seeder (`ColdSeedMain`, `typesmods/`,+ Check-2) is deleted and replaced by a data-driven Java-host schema-walking seed+ (`seed-dist-haskell.sh`), which decodes `dist/json` and emits Haskell text without ever linking+ HEAD types against a published kernel.+- **`hydra.paths` completed** ([#716](https://github.com/CategoricalData/hydra/issues/716)):+ the step unions are realigned with the `hydra.core` term and type grammars — missing variants+ added (`annotatedAnnotation`, `eitherLeft`/`eitherRight`, `effect`), undirected steps given a+ direction, and variants named after retired constructors renamed. `hydra.print.paths` is rewritten+ as serialization-only (printers, parsers and a round-trip law), and the graph view moves to a new+ `hydra.shredding` module (`shredGraph`/`shredTerm`/`shredSchema`), which the Graphviz coder now+ consumes.+- **`hydra.lib.ordering` is genuinely structural on every host**+ ([#718](https://github.com/CategoricalData/hydra/issues/718)): the Java, Python and Scala overlay+ implementations fell back to comparing *printed strings* for non-literal and mixed-variant terms,+ contradicting the normative `ordering-and-equality.md` (records field-by-field in declaration+ order, unions by declared-variant order then payload, wrappers by wrapped value, decimals by+ numeric value then scale — with no print-based fallback anywhere). All three are now structural;+ Java delegates to the generated `compareTo`.+- **Bash driver-layer audit** ([#714](https://github.com/CategoricalData/hydra/issues/714)):+ a prerequisite to the remaining #416 promotion. Six dead build scripts superseded by+ `transform-json-to-target.sh` are deleted, and the #608 oil-and-water and #540 header-idempotency+ regression harnesses are wired into `test-regressions.sh`.++- **Backward-compatibility and deprecation policy**+ ([#676](https://github.com/CategoricalData/hydra/issues/676)): adds the normative spec chapter defining+ what "compatible" means after 1.0 — the additivity calculus, the deprecation/rename mechanism, and+ enforcement. `LifecycleInfo.deprecatedSince` moves from defined-but-unused to populated on **32**+ kernel primitives slated for 0.18 deprecation, via a new `deprecatedSince` DSL helper.+- **Effect-sequencing contract specified and tested**+ ([#675](https://github.com/CategoricalData/hydra/issues/675)): `hydra.lib.effects` carries a sequencing+ contract — effects composed in a specified order, exactly once each, with `bind`'s continuation deferred+ until the prior effect has run. On the lazy Haskell host this falls out of the evaluation model; on the+ eight eager hosts it depended entirely on each hand-written interpreter. The obligations are now written+ into `effects.md` and backed by ordering-observation tests for `bind`/`foldList`/`mapList`/`mapOptional`.+- **Non-GC memory-discipline investigation**+ ([#678](https://github.com/CategoricalData/hydra/issues/678)): Hydra's data model says nothing about+ allocation, freeing, or ownership, which is what gates Swift, Rust, C++ and C as runtime hosts. This+ investigation delivers per-language verdicts plus leak-free proof-of-concept implementations — Rust+ (`Box` structural ownership), C++ (`unique_ptr` + arena) and C (arena), all ASan/LSan-clean on+ construct-and-drop of a recursive `Term` — and an airtight analysis of Swift's class-forcing requirement.+- **Build system promotion continues** ([#416](https://github.com/CategoricalData/hydra/issues/416)):+ adds `hydra.build.Registry`, which models per-language build identity as data (name / coder package /+ family) with per-script scope lists. `syncMatrix` and `langExpansion` are rewired onto it, and the+ hardcoded language lists in the test and bench scripts are retired in favour of a generated+ `languages.json`. Later in the cycle: `publishsets.reverseDepClosure` and+ `publishsets.requiresCoders` promote reverse-dependency propagation and per-package coder-loading+ into data, an `expected-libraries.json` artifact lets the Common Lisp and Emacs Lisp harnesses+ fail fast on a missing `hydra.lib`, and a host-independent `apply-assembly-plan.sh` executor+ (with a conformance test) takes over the Java `assemble-distribution` Step 0.+- **Serialization specification chapter**+ ([#674](https://github.com/CategoricalData/hydra/issues/674)): documents serializability, the+ encode/decode contract, and the round-trip law; `isSerializable` now forbids `void`+ ([#690](https://github.com/CategoricalData/hydra/issues/690)), and `hydra.lib.functions.absurd` is added+ as the void eliminator ([#684](https://github.com/CategoricalData/hydra/issues/684)).++### Bug fixes++- **Hoisting silently produced terms with free variables**+ ([#717](https://github.com/CategoricalData/hydra/issues/717)):+ `augmentBindingsWithNewFreeVars` returned a binding *unchanged* when a captured variable had no+ type in the context, yielding a top-level binding with free variables — a term valid before+ hoisting and invalid after, produced with no error. It is now total and fails loudly, per the+ kernel's fail-immediately rule.+- **TypeScript `div`/`mod` used truncating semantics**+ ([#677](https://github.com/CategoricalData/hydra/issues/677)): corrected to floor/Knuth division via+ shared bigint helpers, with an `Optional` codomain; the dead `maybeDiv`/`maybeMod` are deleted and an+ emitted-path test added.+- **Overlay lag behind the `null` -> `isEmpty` rename**+ ([#682](https://github.com/CategoricalData/hydra/issues/682)): the Java, Python, Scala, TypeScript and+ Lisp overlays each kept a stale spelling (`isEmpty_`, a half-renamed Python `null` impl, and Lisp+ camelCase where the coder emits snake_case), breaking generation until reconciled.+- **`check-haskell-def-completeness` could not resolve qualified assembly references**+ ([#683](https://github.com/CategoricalData/hydra/issues/683)), surfaced once the #703 cold-clone path+ began reaching the check.+- **Void-typed definitions leaked into DSL-ref generation**+ ([#684](https://github.com/CategoricalData/hydra/issues/684)): `absurd` and friends are now excluded+ across all hosts.+- **Scheme bootstrap loader gaps** ([#641](https://github.com/CategoricalData/hydra/issues/641)):+ missing `functions.scm`/`ordering.scm` in the native-lib load list, missing defaults in the def-module+ load list, and a guile-only import allowlist.+- **Bootstrap diff detail was swallowed** ([#671](https://github.com/CategoricalData/hydra/issues/671)):+ now persisted to `<run>/<path>.diff`, with `compare_output`'s return value no longer discarded.+ Separately, `compare_output` mis-derived the `src/main` vs `src/test` root per file+ ([#706](https://github.com/CategoricalData/hydra/issues/706)).+- **Nested duplicate output path** ([#664](https://github.com/CategoricalData/hydra/issues/664)) from+ `hydra-kernel` being hardcoded into `defaultOutput`.+- **Bootstrap codegen exceptions hid their stack traces**+ ([#707](https://github.com/CategoricalData/hydra/issues/707)) in `bootstrap.ts`.++### Release tooling++- `bin/check-release-env.sh` ([#704](https://github.com/CategoricalData/hydra/issues/704)) adds a+ publish-time toolchain preflight, after JDK- and twine-version problems cost real time at 0.17.5.+- The TypeScript head's node floor is lowered to `^18.0.0 || >=20.0.0`, the true vitest constraint+ ([#708](https://github.com/CategoricalData/hydra/issues/708)).+- Hydra does not create GitHub Releases; the detached `.asc` signature stays in `release-artifacts/`+ until [#441](https://github.com/CategoricalData/hydra/issues/441)+ ([#508](https://github.com/CategoricalData/hydra/issues/508)).++### Known issues++- The `hostOverrides` shim is pinned to `{java: local, python: local}` for the duration of the breaking+ batch, since the new kernel surface is by definition absent from published 0.17.5. It must be retired+ once 0.17.6 is visible in Maven Central and PyPI+ ([#508](https://github.com/CategoricalData/hydra/issues/508)).+- **`hydra-ext` does not ship to Maven Central for Java**, as in 0.17.4 and 0.17.5: the Java coder's+ visitor-pattern inner interface still collides with an enclosing type named `Visitor`+ ([#643](https://github.com/CategoricalData/hydra/issues/643)), so the package does not compile for+ that target. It publishes to Hackage and PyPI as usual.+- The breaking batch leaves three deliberate 0.18 tails, each separately tracked:+ `effects.pure` is retained provisionally pending a name decision+ ([#688](https://github.com/CategoricalData/hydra/issues/688)); the `printable` type class that would+ promote the print/parse convention into enforced dispatch awaits+ [#497](https://github.com/CategoricalData/hydra/issues/497); and the literal conversion lattice is+ gated on [#129](https://github.com/CategoricalData/hydra/issues/129) via+ [#689](https://github.com/CategoricalData/hydra/issues/689). Anticipated `TypeClassConstraint`+ variants remain open as [#686](https://github.com/CategoricalData/hydra/issues/686) — the `set`+ element type must stay orderable as variants are added.++---+ ## [0.17.5] - 2026-08-19 Point release on the 0.17.x line. Two language-surface changes lead: sum-type eliminators unify on
hydra-ext.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.38.1.+-- This file has been generated from package.yaml by hpack version 0.39.1. -- -- see: https://github.com/sol/hpack name: hydra-ext-version: 0.17.5+version: 0.17.6 synopsis: Hydra extensions: additional coders and schema integrations description: Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". Various extensions to Hydra category: Data@@ -90,7 +90,7 @@ base >=4.19.0 && <4.22 , bytestring >=0.11.5 && <0.13 , containers >=0.6.7 && <0.8- , hydra-kernel ==0.17.5- , hydra-rdf ==0.17.5+ , hydra-kernel ==0.17.6+ , hydra-rdf ==0.17.6 , scientific >=0.3.7 && <0.4 default-language: Haskell2010
src/main/haskell/Hydra/Atlas.hs view
@@ -8,7 +8,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Xml.Schema as Schema-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Int as I import qualified Data.Map as M
src/main/haskell/Hydra/Avro/Coder.hs view
@@ -49,7 +49,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -138,7 +138,7 @@ Schema.SchemaNamed v0 -> let ns = Schema.namedNamespace v0 manns = namedAnnotationsToCore v0- ann = Logic.ifElse (Maps.null manns) Nothing (Just manns)+ ann = Logic.ifElse (Maps.isEmpty manns) Nothing (Just manns) lastNs = Environment.avroEnvironmentNamespace env0 nextNs = Optionals.match ns lastNs (\s -> Just s) env1 =@@ -325,7 +325,7 @@ Schema.PrimitiveNull -> True _ -> False _ -> False- hasNull = Logic.not (Lists.null (Lists.filter isNull schemas))+ hasNull = Logic.not (Lists.isEmpty (Lists.filter isNull schemas)) nonNulls = Lists.filter (\s -> Logic.not (isNull s)) schemas forOptional = \s -> Eithers.bind (avroHydraAdapter cx s env0) (\adEnv ->@@ -425,7 +425,7 @@ findAvroPrimaryKeyField cx qname avroFields = let keys = Optionals.givens (Lists.map (\f -> primaryKeyE cx f) avroFields)- in (Logic.ifElse (Lists.null keys) (Right Nothing) (Logic.ifElse (Equality.equal (Lists.length keys) 1) (Right (Lists.head keys)) (err cx (Strings.concat2 "multiple primary key fields for " (showQname qname)))))+ in (Logic.ifElse (Lists.isEmpty keys) (Right Nothing) (Logic.ifElse (Equality.equal (Lists.length keys) 1) (Right (Lists.head keys)) (err cx (Strings.concat2 "multiple primary key fields for " (showQname qname))))) -- | Extract a foreign key annotation from a field, if present foreignKeyE :: t0 -> Schema.Field -> Either Errors.Error (Maybe Environment.AvroForeignKey)@@ -446,7 +446,7 @@ case v of Model.ValueBoolean v0 -> Right (Logic.ifElse v0 "true" "false") Model.ValueString v0 -> Right v0- Model.ValueNumber v0 -> Right (Literals.showDecimal v0)+ Model.ValueNumber v0 -> Right (Literals.printDecimal v0) _ -> unexpectedE cx "string, number, or boolean" "other" -- | Extract named type annotations and convert them to core Name/Term pairs@@ -460,7 +460,7 @@ -- | Look up an optional string attribute in a JSON object map optStringE :: Ord t1 => (t0 -> t1 -> M.Map t1 Model.Value -> Either t2 (Maybe String)) optStringE cx fname m =- Optionals.match (Maps.lookup fname m) (Right Nothing) (\v -> Eithers.map (\s -> Optionals.pure s) (expectStringE cx v))+ Optionals.match (Maps.lookup fname m) (Right Nothing) (\v -> Eithers.map (\s -> Optionals.given s) (expectStringE cx v)) -- | Parse a dotted Avro name into a qualified name parseAvroName :: Maybe String -> String -> Environment.AvroQualifiedName@@ -485,7 +485,7 @@ prepareField cx env f = let manns = fieldAnnotationsToCore f- ann = Logic.ifElse (Maps.null manns) Nothing (Just manns)+ ann = Logic.ifElse (Maps.isEmpty manns) Nothing (Just manns) in (Eithers.bind (foreignKeyE cx f) (\fk -> Eithers.bind (Optionals.match fk (avroHydraAdapter cx (Schema.fieldType f) env) (\fkVal -> let fkName = Environment.avroForeignKeyTypeName fkVal fkConstr = Environment.avroForeignKeyConstructor fkVal@@ -616,15 +616,15 @@ Core.TypeLiteral v0 -> case v0 of Core.LiteralTypeBoolean -> readAndWrap (\x -> Literals.parseBoolean x) (\b -> Core.LiteralBoolean b) Core.LiteralTypeInteger v1 -> case v1 of- Core.IntegerTypeBigint -> readAndWrap (\x -> Literals.readBigint x) (\i -> Core.LiteralInteger (Core.IntegerValueBigint i))- Core.IntegerTypeInt8 -> readAndWrap (\x -> Literals.readInt8 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt8 i))- Core.IntegerTypeInt16 -> readAndWrap (\x -> Literals.readInt16 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt16 i))- Core.IntegerTypeInt32 -> readAndWrap (\x -> Literals.readInt32 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt32 i))- Core.IntegerTypeInt64 -> readAndWrap (\x -> Literals.readInt64 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt64 i))- Core.IntegerTypeUint8 -> readAndWrap (\x -> Literals.readUint8 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint8 i))- Core.IntegerTypeUint16 -> readAndWrap (\x -> Literals.readUint16 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint16 i))- Core.IntegerTypeUint32 -> readAndWrap (\x -> Literals.readUint32 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint32 i))- Core.IntegerTypeUint64 -> readAndWrap (\x -> Literals.readUint64 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint64 i))+ Core.IntegerTypeBigint -> readAndWrap (\x -> Literals.parseBigint x) (\i -> Core.LiteralInteger (Core.IntegerValueBigint i))+ Core.IntegerTypeInt8 -> readAndWrap (\x -> Literals.parseInt8 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt8 i))+ Core.IntegerTypeInt16 -> readAndWrap (\x -> Literals.parseInt16 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt16 i))+ Core.IntegerTypeInt32 -> readAndWrap (\x -> Literals.parseInt32 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt32 i))+ Core.IntegerTypeInt64 -> readAndWrap (\x -> Literals.parseInt64 x) (\i -> Core.LiteralInteger (Core.IntegerValueInt64 i))+ Core.IntegerTypeUint8 -> readAndWrap (\x -> Literals.parseUint8 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint8 i))+ Core.IntegerTypeUint16 -> readAndWrap (\x -> Literals.parseUint16 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint16 i))+ Core.IntegerTypeUint32 -> readAndWrap (\x -> Literals.parseUint32 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint32 i))+ Core.IntegerTypeUint64 -> readAndWrap (\x -> Literals.parseUint64 x) (\i -> Core.LiteralInteger (Core.IntegerValueUint64 i)) Core.LiteralTypeString -> Right (Core.TermLiteral (Core.LiteralString s)) _ -> unexpectedE cx "literal type" "other literal type" _ -> unexpectedE cx "literal type" "other"@@ -636,15 +636,15 @@ Core.TermLiteral v0 -> case v0 of Core.LiteralBoolean v1 -> Right (Literals.printBoolean v1) Core.LiteralInteger v1 -> Right (case v1 of- Core.IntegerValueBigint v2 -> Literals.showBigint v2- Core.IntegerValueInt8 v2 -> Literals.showInt8 v2- Core.IntegerValueInt16 v2 -> Literals.showInt16 v2- Core.IntegerValueInt32 v2 -> Literals.showInt32 v2- Core.IntegerValueInt64 v2 -> Literals.showInt64 v2- Core.IntegerValueUint8 v2 -> Literals.showUint8 v2- Core.IntegerValueUint16 v2 -> Literals.showUint16 v2- Core.IntegerValueUint32 v2 -> Literals.showUint32 v2- Core.IntegerValueUint64 v2 -> Literals.showUint64 v2)+ Core.IntegerValueBigint v2 -> Literals.printBigint v2+ Core.IntegerValueInt8 v2 -> Literals.printInt8 v2+ Core.IntegerValueInt16 v2 -> Literals.printInt16 v2+ Core.IntegerValueInt32 v2 -> Literals.printInt32 v2+ Core.IntegerValueInt64 v2 -> Literals.printInt64 v2+ Core.IntegerValueUint8 v2 -> Literals.printUint8 v2+ Core.IntegerValueUint16 v2 -> Literals.printUint16 v2+ Core.IntegerValueUint32 v2 -> Literals.printUint32 v2+ Core.IntegerValueUint64 v2 -> Literals.printUint64 v2) Core.LiteralString v1 -> Right v1 _ -> unexpectedE cx "boolean, integer, or string" "other literal" Core.TermOptional v0 -> Optionals.match v0 (unexpectedE cx "literal value" "Nothing") (\term_ -> termToStringE cx term_)
src/main/haskell/Hydra/Avro/Encoder.hs view
@@ -48,7 +48,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -519,7 +519,7 @@ _ -> "<key>" _ -> "<key>", (termToJsonValue v))) (Maps.toList v0))- Core.TermRecord v0 -> Logic.ifElse (Lists.null (Core.recordFields v0)) Model.ValueNull (Model.ValueString "<record>")+ Core.TermRecord v0 -> Logic.ifElse (Lists.isEmpty (Core.recordFields v0)) Model.ValueNull (Model.ValueString "<record>") _ -> Model.ValueString "<term>" -- | Generate a default name for an anonymous type
src/main/haskell/Hydra/Avro/Environment.hs view
@@ -9,7 +9,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Errors as Errors import qualified Hydra.Json.Model as Model-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M
src/main/haskell/Hydra/Avro/Language.hs view
@@ -36,7 +36,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Language constraints for Apache Avro
src/main/haskell/Hydra/Avro/Schema.hs view
@@ -7,7 +7,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Json.Model as Model-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M
src/main/haskell/Hydra/Avro/SchemaJson.hs view
@@ -45,7 +45,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -178,7 +178,7 @@ -- | Decode aliases from a JSON object map decodeAliases :: t0 -> M.Map String Model.Value -> Either t1 (Maybe [String]) decodeAliases cx m =- Eithers.bind (optArrayE cx avroAliases m) (\mArr -> Optionals.match mArr (Right Nothing) (\arr -> Eithers.map (\strs -> Optionals.pure strs) (Eithers.mapList (expectStringE cx) arr)))+ Eithers.bind (optArrayE cx avroAliases m) (\mArr -> Optionals.match mArr (Right Nothing) (\arr -> Eithers.map (\strs -> Optionals.given strs) (Eithers.mapList (expectStringE cx) arr))) -- | Decode an Avro array schema from a JSON object map decodeArraySchema :: t0 -> M.Map String Model.Value -> Either Errors.Error Schema.Schema@@ -424,12 +424,12 @@ Maps.fromList (Optionals.givens (Lists.map (\entry -> let k = Pairs.first entry v = Pairs.second entry- in (Logic.ifElse (Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 k)) 64) (Optionals.pure (Strings.fromList (Lists.drop 1 (Strings.toList k)), v)) Nothing)) (Maps.toList m)))+ in (Logic.ifElse (Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 k)) 64) (Optionals.given (Strings.fromList (Lists.drop 1 (Strings.toList k)), v)) Nothing)) (Maps.toList m))) -- | Look up an optional array attribute in a JSON object map optArrayE :: Ord t1 => (t0 -> t1 -> M.Map t1 Model.Value -> Either t2 (Maybe [Model.Value])) optArrayE cx fname m =- Optionals.match (Maps.lookup fname m) (Right Nothing) (\v -> Eithers.map (\a -> Optionals.pure a) (expectArrayE cx v))+ Optionals.match (Maps.lookup fname m) (Right Nothing) (\v -> Eithers.map (\a -> Optionals.given a) (expectArrayE cx v)) -- | Look up an optional attribute in a JSON object map optE :: Ord t0 => (t0 -> M.Map t0 t1 -> Maybe t1)@@ -438,7 +438,7 @@ -- | Look up an optional string attribute in a JSON object map optStringE :: Ord t1 => (t0 -> t1 -> M.Map t1 Model.Value -> Either t2 (Maybe String)) optStringE cx fname m =- Optionals.match (Maps.lookup fname m) (Right Nothing) (\v -> Eithers.map (\s -> Optionals.pure s) (expectStringE cx v))+ Optionals.match (Maps.lookup fname m) (Right Nothing) (\v -> Eithers.map (\s -> Optionals.given s) (expectStringE cx v)) -- | Look up a required array attribute in a JSON object map requireArrayE :: t0 -> String -> M.Map String Model.Value -> Either Errors.Error [Model.Value]
src/main/haskell/Hydra/Avro/Testing.hs view
@@ -7,7 +7,7 @@ import qualified Hydra.Avro.Schema as Schema import qualified Hydra.Core as Core import qualified Hydra.Json.Model as Model-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | A test case for the bidirectional Avro coder
src/main/haskell/Hydra/Azure/Dtld.hs view
@@ -10,7 +10,7 @@ module Hydra.Azure.Dtld where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Set as S
src/main/haskell/Hydra/Cpp/Coder.hs view
@@ -59,7 +59,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -172,7 +172,7 @@ -- | Create a constructor function body: default if no params, empty compound otherwise createConstructorBody :: [t0] -> Syntax.FunctionBody createConstructorBody params =- Logic.ifElse (Lists.null params) Syntax.FunctionBodyDefault (Syntax.FunctionBodyCompound (Syntax.CompoundStatement []))+ Logic.ifElse (Lists.isEmpty params) Syntax.FunctionBodyDefault (Syntax.FunctionBodyCompound (Syntax.CompoundStatement [])) -- | Create a function call expression createFunctionCallExpr :: String -> [Syntax.Expression] -> Syntax.Expression
src/main/haskell/Hydra/Cpp/Environment.hs view
@@ -7,7 +7,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Packaging as Packaging import qualified Hydra.Util as Util-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M
src/main/haskell/Hydra/Cpp/Language.hs view
@@ -36,7 +36,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Set as S
src/main/haskell/Hydra/Cpp/Names.hs view
@@ -46,7 +46,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Get the C++ class name from a Hydra Name
src/main/haskell/Hydra/Cpp/Serde.hs view
@@ -41,7 +41,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Convert an access specifier to an expression@@ -237,7 +237,7 @@ [ classKeyToExpr key, (Serialization.cst name)],- (Logic.ifElse (Lists.null inheritance) [] [+ (Logic.ifElse (Lists.isEmpty inheritance) [] [ Serialization.cst ":", (Serialization.commaSep Serialization.inlineStyle (Lists.map baseSpecifierToExpr inheritance))])])) @@ -284,7 +284,7 @@ Just (Serialization.noSep [ Serialization.cst name, (Serialization.parenListAdaptive (Lists.map parameterToExpr params))]),- (Logic.ifElse (Lists.null inits) Nothing (Just (Serialization.spaceSep [+ (Logic.ifElse (Lists.isEmpty inits) Nothing (Just (Serialization.spaceSep [ Serialization.cst ":", (Serialization.commaSep Serialization.inlineStyle (Lists.map memInitializerToExpr inits))]))), (Just (functionBodyToExpr body))]))@@ -606,7 +606,7 @@ integerLiteralToExpr :: Syntax.IntegerLiteral -> Ast.Expr integerLiteralToExpr i = case i of- Syntax.IntegerLiteralDecimal v0 -> Serialization.cst (Literals.showBigint v0)+ Syntax.IntegerLiteralDecimal v0 -> Serialization.cst (Literals.printBigint v0) Syntax.IntegerLiteralHexadecimal v0 -> Serialization.cst (Strings.concat2 "0x" v0) Syntax.IntegerLiteralOctal v0 -> Serialization.cst (Strings.concat2 "0" v0) Syntax.IntegerLiteralBinary v0 -> Serialization.cst (Strings.concat2 "0b" v0)@@ -654,7 +654,7 @@ body = Syntax.lambdaExpressionBody le in (Serialization.spaceSep [ captureListToExpr captures,- (Logic.ifElse (Lists.null params) (Serialization.parens (Serialization.cst "")) (Serialization.parenListAdaptive (Lists.map parameterToExpr params))),+ (Logic.ifElse (Lists.isEmpty params) (Serialization.parens (Serialization.cst "")) (Serialization.parenListAdaptive (Lists.map parameterToExpr params))), (Optionals.match retType (Serialization.cst "") (\t -> Serialization.spaceSep [ Serialization.cst "->", (typeExpressionToExpr t)])),@@ -702,7 +702,7 @@ in (Serialization.spaceSep (Lists.concat [ [ Serialization.cst "#line",- (Serialization.cst (Literals.showInt32 lineNumber))],+ (Serialization.cst (Literals.printInt32 lineNumber))], (Optionals.match filename [] (\f -> [ Serialization.cst (Strings.concat [ "\"",@@ -714,7 +714,7 @@ literalToExpr l = case l of Syntax.LiteralInteger v0 -> integerLiteralToExpr v0- Syntax.LiteralFloating v0 -> Serialization.cst (Literals.showFloat64 (Syntax.unFloatingLiteral v0))+ Syntax.LiteralFloating v0 -> Serialization.cst (Literals.printFloat64 (Syntax.unFloatingLiteral v0)) Syntax.LiteralCharacter v0 -> Serialization.cst (Strings.concat [ "'", (Syntax.unCharacterLiteral v0),@@ -1001,7 +1001,7 @@ let preps = Syntax.programPreprocessorDirectives prog includes = Syntax.programIncludes prog decls = Syntax.programDeclarations prog- separate = \sep -> \defs -> Logic.ifElse (Lists.null defs) Nothing (Just (sep defs))+ separate = \sep -> \defs -> Logic.ifElse (Lists.isEmpty defs) Nothing (Just (sep defs)) in (Serialization.doubleNewlineSep (Optionals.givens [ separate Serialization.newlineSep (Lists.map preprocessorDirectiveToExpr preps), (separate Serialization.newlineSep (Lists.map includeDirectiveToExpr includes)),
src/main/haskell/Hydra/Cpp/Syntax.hs view
@@ -5,7 +5,7 @@ module Hydra.Cpp.Syntax where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | A C++ member or base-class access specifier: public, protected, or private
src/main/haskell/Hydra/Cpp/Utils.hs view
@@ -36,7 +36,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Create a const reference parameter@@ -119,7 +119,7 @@ -- | Create a constructor body (default if no params, empty otherwise) createConstructorBody :: [t0] -> Syntax.FunctionBody-createConstructorBody params = Logic.ifElse (Lists.null params) Syntax.FunctionBodyDefault emptyFunctionBody+createConstructorBody params = Logic.ifElse (Lists.isEmpty params) Syntax.FunctionBodyDefault emptyFunctionBody -- | Create an enum access expression createEnumAccessExpr :: String -> String -> Syntax.Expression
src/main/haskell/Hydra/Csharp/Language.hs view
@@ -36,7 +36,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Set as S
src/main/haskell/Hydra/Csharp/Syntax.hs view
@@ -6,7 +6,7 @@ module Hydra.Csharp.Syntax where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | The body of a property or indexer accessor: a block, an expression, or empty (abstract).
src/main/haskell/Hydra/Datalog/Syntax.hs view
@@ -5,7 +5,7 @@ module Hydra.Datalog.Syntax where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | A relation applied to a list of terms
src/main/haskell/Hydra/Delta/Parquet.hs view
@@ -5,7 +5,7 @@ module Hydra.Delta.Parquet where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Represent array data type.
src/main/haskell/Hydra/Geojson/Model.hs view
@@ -6,7 +6,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Json.Model as Model-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M
src/main/haskell/Hydra/Graphql/Coder.hs view
@@ -54,7 +54,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -240,7 +240,7 @@ ns_, (Logic.ifElse (Equality.equal ns_ modNs) "" (Strings.concat2 (Formatting.sanitizeWithUnderscores Sets.empty (Packaging.unModuleName ns_)) "_")))) namespaces))) (Packaging.moduleName mod) typeDefs filePath = Names.moduleNameToFilePath Util.CaseConventionCamel (File.FileExtension "graphql") (Packaging.moduleName mod)- in (Eithers.bind (Eithers.mapList (\td -> encodeTypeDefinition cx g prefixes td) typeDefs) (\gtdefs -> Right (Maps.fromList (Lists.pure (+ in (Eithers.bind (Eithers.mapList (\td -> encodeTypeDefinition cx g prefixes td) typeDefs) (\gtdefs -> Right (Maps.fromList (Lists.singleton ( filePath, (Serialization.printExpr (Serialization.parenthesize (Serde.documentToExpr (Syntax.Document (Lists.map (\gtdef -> Syntax.DefinitionTypeSystem (Syntax.TypeSystemDefinitionOrExtensionDefinition (Syntax.TypeSystemDefinitionType gtdef))) gtdefs))))))))))
src/main/haskell/Hydra/Graphql/Language.hs view
@@ -36,7 +36,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Set as S
src/main/haskell/Hydra/Graphql/Serde.hs view
@@ -37,7 +37,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Convert a GraphQL definition to an expression@@ -183,4 +183,4 @@ withDescription mdesc expr = Serialization.newlineSep (Optionals.givens [ Optionals.map descriptionToExpr mdesc,- (Optionals.pure expr)])+ (Optionals.given expr)])
src/main/haskell/Hydra/Graphql/Syntax.hs view
@@ -6,7 +6,7 @@ module Hydra.Graphql.Syntax where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | A GraphQL field alias, immediately followed by a colon.
src/main/haskell/Hydra/Iana/Linkrelations.hs view
@@ -5,7 +5,7 @@ module Hydra.Iana.Linkrelations where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | An IANA link relation type
src/main/haskell/Hydra/Json/Schema/Coder.hs view
@@ -55,7 +55,7 @@ import qualified Hydra.Validation as Validation import qualified Hydra.Variables as Variables import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M import qualified Data.Set as S@@ -107,8 +107,9 @@ reqs = Lists.foldl (\acc -> \f -> Logic.ifElse (isRequiredField f) (Lists.concat2 acc [ SchemaModel.Keyword (Core.unName (Core.fieldTypeName f))]) acc) [] fields- reqRes = Logic.ifElse (Lists.null reqs) [] [- SchemaModel.RestrictionObject (SchemaModel.ObjectRestrictionRequired reqs)]+ reqRes =+ Logic.ifElse (Lists.isEmpty reqs) [] [+ SchemaModel.RestrictionObject (SchemaModel.ObjectRestrictionRequired reqs)] addPropsRes = [ SchemaModel.RestrictionObject (SchemaModel.ObjectRestrictionAdditionalProperties (SchemaModel.AdditionalItemsAny False))]@@ -130,7 +131,7 @@ let isSimple = \f -> Predicates.isUnitType (Strip.deannotateType (Core.fieldTypeType f)) simple = Lists.filter isSimple fields nonsimple = Lists.filter (\f -> Logic.not (isSimple f)) fields- in (Logic.ifElse (Lists.null simple) (encodeRecordOrUnion cx g optional True fields) (Eithers.bind (encodeRecordOrUnion cx g False True nonsimple) (\recRes ->+ in (Logic.ifElse (Lists.isEmpty simple) (encodeRecordOrUnion cx g optional True fields) (Eithers.bind (encodeRecordOrUnion cx g False True nonsimple) (\recRes -> let names = Lists.map (\f -> Core.unName (Core.fieldTypeName f)) simple simpleSchema = SchemaModel.Schema [
src/main/haskell/Hydra/Json/Schema/Language.hs view
@@ -35,7 +35,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Language constraints for JSON Schema
src/main/haskell/Hydra/Json/Schema/Model.hs view
@@ -6,7 +6,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Json.Model as Model-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M
src/main/haskell/Hydra/Json/Schema/Serde.hs view
@@ -41,7 +41,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -92,7 +92,7 @@ restMap = fromObject (toObject [ (keyId, (Optionals.map (\i -> Model.ValueString i) mid)),- (keySchema, (Optionals.pure (Model.ValueString "http://json-schema.org/2020-12/schema"))),+ (keySchema, (Optionals.given (Model.ValueString "http://json-schema.org/2020-12/schema"))), ( keyDefinitions, (Optionals.map (\mp -> Model.ValueObject (Lists.map (\p ->
src/main/haskell/Hydra/Kusto/Kql.hs view
@@ -5,7 +5,7 @@ module Hydra.Kusto.Kql where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Int as I
src/main/haskell/Hydra/Osv/Schema.hs view
@@ -5,7 +5,7 @@ module Hydra.Osv.Schema where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | A person or entity credited with discovering, fixing, or reporting a vulnerability
src/main/haskell/Hydra/Parquet/Format.hs view
@@ -6,7 +6,7 @@ module Hydra.Parquet.Format where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.ByteString as B import qualified Data.Int as I
src/main/haskell/Hydra/Pegasus/Coder.hs view
@@ -56,7 +56,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -80,7 +80,7 @@ encode :: t0 -> Graph.Graph -> M.Map Packaging.ModuleName String -> Core.Type -> Either Errors.Error Pdl.Schema encode cx g aliases t = case (Strip.deannotateType t) of- Core.TypeRecord v0 -> Logic.ifElse (Lists.null v0) (encode cx g aliases (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))) (Eithers.bind (encodeType cx g aliases t) (\res -> Eithers.either (\schema -> Right schema) (\_ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "type resolved to an unsupported nested named schema: " (PrintCore.type_ t))))) res))+ Core.TypeRecord v0 -> Logic.ifElse (Lists.isEmpty v0) (encode cx g aliases (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))) (Eithers.bind (encodeType cx g aliases t) (\res -> Eithers.either (\schema -> Right schema) (\_ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "type resolved to an unsupported nested named schema: " (PrintCore.type_ t))))) res)) _ -> Eithers.bind (encodeType cx g aliases t) (\res -> Eithers.either (\schema -> Right schema) (\_ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "type resolved to an unsupported nested named schema: " (PrintCore.type_ t))))) res) -- | Encode a Hydra field type as a PDL enum field, converting the name to upper snake case
src/main/haskell/Hydra/Pegasus/Language.hs view
@@ -35,7 +35,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Language constraints for LinkedIn Pegasus (PDL)
src/main/haskell/Hydra/Pegasus/Pdl.hs view
@@ -7,7 +7,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Json.Model as Model-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Annotations which can be applied to record fields, aliased union members, enum symbols, or named schemas
src/main/haskell/Hydra/Pegasus/Serde.hs view
@@ -40,7 +40,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Convert PDL annotations to an optional expression (doc comment)@@ -112,7 +112,7 @@ parts = Optionals.givens [ Optionals.map (\n -> Pdl.unNamespace n) ns,- (Optionals.pure name)]+ (Optionals.given name)] in (Serialization.cst (Strings.join "." parts)) -- | Convert a record field to an expression@@ -124,9 +124,9 @@ optional = Pdl.recordFieldOptional rf anns = Pdl.recordFieldAnnotations rf in (withAnnotations anns (Serialization.spaceSep (Optionals.givens [- Optionals.pure (Serialization.cst (Strings.concat2 name ":")),- (Logic.ifElse optional (Optionals.pure (Serialization.cst "optional")) Nothing),- (Optionals.pure (schemaToExpr schema))])))+ Optionals.given (Serialization.cst (Strings.concat2 name ":")),+ (Logic.ifElse optional (Optionals.given (Serialization.cst "optional")) Nothing),+ (Optionals.given (schemaToExpr schema))]))) -- | Convert a schema file to an expression schemaFileToExpr :: Pdl.SchemaFile -> Ast.Expr@@ -137,7 +137,7 @@ imports = Pdl.schemaFileImports sf schemas = Pdl.schemaFileSchemas sf namespaceSec =- Optionals.pure (Serialization.spaceSep [+ Optionals.given (Serialization.spaceSep [ Serialization.cst "namespace", (Serialization.cst ns)]) packageSec =@@ -145,8 +145,8 @@ Serialization.cst "package", (Serialization.cst (Pdl.unPackage p))]) pkg importsSec =- Logic.ifElse (Lists.null imports) Nothing (Optionals.pure (Serialization.newlineSep (Lists.map importToExpr imports)))- schemaSecs = Lists.map (\s -> Optionals.pure (namedSchemaToExpr s)) schemas+ Logic.ifElse (Lists.isEmpty imports) Nothing (Optionals.given (Serialization.newlineSep (Lists.map importToExpr imports)))+ schemaSecs = Lists.map (\s -> Optionals.given (namedSchemaToExpr s)) schemas in (Serialization.doubleNewlineSep (Optionals.givens (Lists.concat [ [ namespaceSec,@@ -183,11 +183,11 @@ anns = Pdl.unionMemberAnnotations um in (withAnnotations anns (Serialization.spaceSep (Optionals.givens [ Optionals.map (\fn -> Serialization.cst (Strings.concat2 (Pdl.unFieldName fn) ":")) alias,- (Optionals.pure (schemaToExpr schema))])))+ (Optionals.given (schemaToExpr schema))]))) -- | Prepend annotations (doc comment) to an expression withAnnotations :: Pdl.Annotations -> Ast.Expr -> Ast.Expr withAnnotations anns expr = Serialization.newlineSep (Optionals.givens [ annotationsToExpr anns,- (Optionals.pure expr)])+ (Optionals.given expr)])
src/main/haskell/Hydra/Protobuf/Any.hs view
@@ -5,7 +5,7 @@ module Hydra.Protobuf.Any where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.ByteString as B
src/main/haskell/Hydra/Protobuf/Coder.hs view
@@ -64,7 +64,7 @@ import qualified Hydra.Validation as Validation import qualified Hydra.Variables as Variables import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M import qualified Data.Set as S
src/main/haskell/Hydra/Protobuf/Environment.hs view
@@ -6,7 +6,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Typing as Typing-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | State threaded through Protobuf encoding: inference context plus field-index counter
src/main/haskell/Hydra/Protobuf/Language.hs view
@@ -37,7 +37,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Set as S
src/main/haskell/Hydra/Protobuf/Proto3.hs view
@@ -5,7 +5,7 @@ module Hydra.Protobuf.Proto3 where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | A top-level Protobuf definition, either an enum or a message type
src/main/haskell/Hydra/Protobuf/Serde.hs view
@@ -42,7 +42,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Convert a definition to an expression@@ -82,7 +82,7 @@ in (optDesc False options (semi (Serialization.spaceSep [ Serialization.cst (Proto3.unEnumValueName name), (Serialization.cst "="),- (Serialization.cst (Literals.showInt32 number))])))+ (Serialization.cst (Literals.printInt32 number))]))) -- | Filter out internal options (those whose names start with underscore) excludeInternalOptions :: [Proto3.Option] -> [Proto3.Option]@@ -105,7 +105,7 @@ fieldOptionsToExpr opts0 = let opts = excludeInternalOptions opts0- in (Logic.ifElse (Lists.null opts) Nothing (Optionals.pure (Serialization.bracketList Serialization.inlineStyle (Lists.map fieldOptionToExpr opts))))+ in (Logic.ifElse (Lists.isEmpty opts) Nothing (Optionals.given (Serialization.bracketList Serialization.inlineStyle (Lists.map fieldOptionToExpr opts)))) -- | Convert a field to an expression fieldToExpr :: Proto3.Field -> Ast.Expr@@ -124,22 +124,22 @@ let kt = Proto3.mapTypeKeys v0 vt = Proto3.mapTypeValues v0 in (semi (Serialization.spaceSep (Optionals.givens [- Optionals.pure (fieldTypeToExpr typ),- (Optionals.pure (Serialization.cst (Proto3.unFieldName name))),- (Optionals.pure (Serialization.cst "=")),- (Optionals.pure (Serialization.cst (Literals.showInt32 num))),+ Optionals.given (fieldTypeToExpr typ),+ (Optionals.given (Serialization.cst (Proto3.unFieldName name))),+ (Optionals.given (Serialization.cst "=")),+ (Optionals.given (Serialization.cst (Literals.printInt32 num))), (fieldOptionsToExpr options)]))) Proto3.FieldTypeRepeated _ -> semi (Serialization.spaceSep (Optionals.givens [- Optionals.pure (fieldTypeToExpr typ),- (Optionals.pure (Serialization.cst (Proto3.unFieldName name))),- (Optionals.pure (Serialization.cst "=")),- (Optionals.pure (Serialization.cst (Literals.showInt32 num))),+ Optionals.given (fieldTypeToExpr typ),+ (Optionals.given (Serialization.cst (Proto3.unFieldName name))),+ (Optionals.given (Serialization.cst "=")),+ (Optionals.given (Serialization.cst (Literals.printInt32 num))), (fieldOptionsToExpr options)])) Proto3.FieldTypeSimple _ -> semi (Serialization.spaceSep (Optionals.givens [- Optionals.pure (fieldTypeToExpr typ),- (Optionals.pure (Serialization.cst (Proto3.unFieldName name))),- (Optionals.pure (Serialization.cst "=")),- (Optionals.pure (Serialization.cst (Literals.showInt32 num))),+ Optionals.given (fieldTypeToExpr typ),+ (Optionals.given (Serialization.cst (Proto3.unFieldName name))),+ (Optionals.given (Serialization.cst "=")),+ (Optionals.given (Serialization.cst (Literals.printInt32 num))), (fieldOptionsToExpr options)])))) -- | Convert a field type to an expression@@ -177,7 +177,7 @@ fileOptionsToExpr opts0 = let opts = excludeInternalOptions opts0- in (Logic.ifElse (Lists.null opts) Nothing (Optionals.pure (Serialization.newlineSep (Lists.map fileOptionToExpr opts))))+ in (Logic.ifElse (Lists.isEmpty opts) Nothing (Optionals.given (Serialization.newlineSep (Lists.map fileOptionToExpr opts)))) -- | Convert a file reference to an import expression importToExpr :: Proto3.FileReference -> Ast.Expr@@ -234,17 +234,17 @@ defs = Proto3.protoFileTypes pf options = Proto3.protoFileOptions pf headerSec =- Optionals.pure (Serialization.newlineSep [+ Optionals.given (Serialization.newlineSep [ semi (Serialization.cst "syntax = \"proto3\""), (semi (Serialization.spaceSep [ Serialization.cst "package", (Serialization.cst (Proto3.unPackageName pkg))]))]) importsSec =- Logic.ifElse (Lists.null imports) Nothing (Optionals.pure (Serialization.newlineSep (Lists.map importToExpr imports)))+ Logic.ifElse (Lists.isEmpty imports) Nothing (Optionals.given (Serialization.newlineSep (Lists.map importToExpr imports))) options1 = Lists.filter (\opt -> Logic.not (Equality.equal (Proto3.optionName opt) "_description")) options optionsSec = fileOptionsToExpr options1 defsSec =- Logic.ifElse (Lists.null defs) Nothing (Optionals.pure (Serialization.doubleNewlineSep (Lists.map definitionToExpr defs)))+ Logic.ifElse (Lists.isEmpty defs) Nothing (Optionals.given (Serialization.doubleNewlineSep (Lists.map definitionToExpr defs))) in (optDesc True options (Serialization.doubleNewlineSep (Optionals.givens [ headerSec, importsSec,
src/main/haskell/Hydra/Protobuf/SourceContext.hs view
@@ -5,7 +5,7 @@ module Hydra.Protobuf.SourceContext where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | `SourceContext` represents information about the source of a protobuf element, like the file in which it is defined.
src/main/haskell/Hydra/Rust/Coder.hs view
@@ -54,7 +54,7 @@ import qualified Hydra.Validation as Validation import qualified Hydra.Variables as Variables import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M @@ -68,7 +68,7 @@ isUnit = case dtyp of Core.TypeUnit -> True- Core.TypeRecord v0 -> Lists.null v0+ Core.TypeRecord v0 -> Lists.isEmpty v0 _ -> False in (Logic.ifElse isUnit (Right (Syntax.EnumVariant { Syntax.enumVariantName = (Formatting.capitalize fname),@@ -235,7 +235,7 @@ isUnit = case dterm of Core.TermUnit -> True- Core.TermRecord v1 -> Lists.null (Core.recordFields v1)+ Core.TermRecord v1 -> Lists.isEmpty (Core.recordFields v1) _ -> False in (Logic.ifElse isUnit (Right (rustExprPath (Strings.concat2 (Strings.concat2 tname "::") fname))) (Eithers.bind (encodeTerm cx g fterm) (\sval -> Right (rustCall (rustExprPath (Strings.concat2 (Strings.concat2 tname "::") fname)) [ sval]))))
src/main/haskell/Hydra/Rust/Language.hs view
@@ -36,7 +36,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Set as S
src/main/haskell/Hydra/Rust/Operators.hs view
@@ -34,7 +34,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Add-assign operator (+=)
src/main/haskell/Hydra/Rust/Serde.hs view
@@ -44,7 +44,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Serialize an array expression@@ -243,7 +243,7 @@ -- | Serialize derive macros to an attribute expression derivesToExpr :: [String] -> Maybe Ast.Expr derivesToExpr derives =- Logic.ifElse (Lists.null derives) Nothing (Just (Serialization.cst (Strings.concat [+ Logic.ifElse (Lists.isEmpty derives) Nothing (Just (Serialization.cst (Strings.concat [ "#[derive(", (Strings.join ", " derives), ")]"])))@@ -391,7 +391,7 @@ let val = Syntax.floatLiteralValue fl suf = Syntax.floatLiteralSuffix fl- valStr = Literals.showFloat64 val+ valStr = Literals.printFloat64 val sufStr = Optionals.match suf "" (\s -> s) in (Serialization.cst (Strings.concat2 valStr sufStr)) @@ -510,14 +510,14 @@ let name = Syntax.genericParamName gp bounds = Syntax.genericParamBounds gp- in (Logic.ifElse (Lists.null bounds) (Serialization.cst name) (Serialization.spaceSep [+ in (Logic.ifElse (Lists.isEmpty bounds) (Serialization.cst name) (Serialization.spaceSep [ Serialization.cst (Strings.concat2 name ":"), (Serialization.cst (Strings.join " + " (Lists.map (\b -> Serialization.printExpr (typeParamBoundToExpr b)) bounds)))])) -- | Serialize a list of generic parameters genericParamsToExpr :: [Syntax.GenericParam] -> Maybe Ast.Expr genericParamsToExpr gps =- Logic.ifElse (Lists.null gps) Nothing (Just (Serialization.angleBracesList Serialization.inlineStyle (Lists.map genericParamToExpr gps)))+ Logic.ifElse (Lists.isEmpty gps) Nothing (Just (Serialization.angleBracesList Serialization.inlineStyle (Lists.map genericParamToExpr gps))) -- | Serialize an identifier pattern identifierPatternToExpr :: Syntax.IdentifierPattern -> Ast.Expr@@ -655,7 +655,7 @@ let val = Syntax.integerLiteralValue il suf = Syntax.integerLiteralSuffix il- valStr = Literals.showBigint val+ valStr = Literals.printBigint val sufStr = Optionals.match suf "" (\s -> s) in (Serialization.cst (Strings.concat2 valStr sufStr)) @@ -732,11 +732,11 @@ Syntax.LiteralByteString _ -> Serialization.cst "b\"...\"" Syntax.LiteralChar v0 -> Serialization.cst (Strings.concat [ "'",- (Literals.showUint32 v0),+ (Literals.printUint32 v0), "'"]) Syntax.LiteralByte v0 -> Serialization.cst (Strings.concat [ "b'",- (Literals.showUint8 v0),+ (Literals.printUint8 v0), "'"]) Syntax.LiteralBool v0 -> Serialization.cst (Logic.ifElse v0 "true" "false") @@ -816,7 +816,7 @@ turbo = Syntax.methodCallExprTurbofish m args = Syntax.methodCallExprArgs m turboPart =- Logic.ifElse (Lists.null turbo) "" (Strings.concat [+ Logic.ifElse (Lists.isEmpty turbo) "" (Strings.concat [ "::<", (Strings.join ", " (Lists.map (\t -> Serialization.printExpr (typeToExpr t)) turbo)), ">"])@@ -1108,7 +1108,7 @@ unsafeKw = Logic.ifElse isUnsafe (Just (Serialization.cst "unsafe")) Nothing genericsExpr = genericParamsToExpr generics superPart =- Logic.ifElse (Lists.null supers) Nothing (Just (Serialization.spaceSep [+ Logic.ifElse (Lists.isEmpty supers) Nothing (Just (Serialization.spaceSep [ Serialization.cst ":", (Serialization.cst (Strings.join " + " (Lists.map (\b -> Serialization.printExpr (typeParamBoundToExpr b)) supers)))])) wherePart = Optionals.match whereC Nothing (\w -> Just (whereClauseToExpr w))@@ -1172,7 +1172,7 @@ bounds = Syntax.traitTypeBounds t def = Syntax.traitTypeDefault t boundsPart =- Logic.ifElse (Lists.null bounds) Nothing (Just (Serialization.spaceSep [+ Logic.ifElse (Lists.isEmpty bounds) Nothing (Just (Serialization.spaceSep [ Serialization.cst ":", (Serialization.cst (Strings.join " + " (Lists.map (\b -> Serialization.printExpr (typeParamBoundToExpr b)) bounds)))])) defPart =@@ -1195,7 +1195,7 @@ in (Serialization.cst (Strings.concat [ Serialization.printExpr (expressionToExpr tuple), ".",- (Literals.showInt32 idx)]))+ (Literals.printInt32 idx)])) -- | Serialize a tuple struct pattern tupleStructPatternToExpr :: Syntax.TupleStructPattern -> Ast.Expr@@ -1341,7 +1341,7 @@ Syntax.UseTreeGroup v0 -> let prefix = Syntax.useGroupPrefix v0 trees = Syntax.useGroupTrees v0- prefixStr = Logic.ifElse (Lists.null prefix) "" (Strings.concat2 (Strings.join "::" prefix) "::")+ prefixStr = Logic.ifElse (Lists.isEmpty prefix) "" (Strings.concat2 (Strings.join "::" prefix) "::") in (Serialization.cst (Strings.concat [ prefixStr, "{",
src/main/haskell/Hydra/Rust/Syntax.hs view
@@ -5,7 +5,7 @@ module Hydra.Rust.Syntax where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.ByteString as B import qualified Data.Int as I
src/main/haskell/Hydra/Sql/Syntax.hs view
@@ -5,7 +5,7 @@ module Hydra.Sql.Syntax where import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | An approximate (floating-point) numeric literal, such as 1.5E10
src/main/haskell/Hydra/Stac/Items.hs view
@@ -7,7 +7,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Geojson.Model as Model import qualified Hydra.Iana.Linkrelations as Linkrelations-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import qualified Data.Map as M
src/main/haskell/Hydra/Workflow.hs view
@@ -7,7 +7,7 @@ import qualified Hydra.Core as Core import qualified Hydra.Graph as Graph import qualified Hydra.Packaging as Packaging-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | The specification of a Hydra schema, provided as a set of modules and a distinguished type
src/main/haskell/Hydra/Yaml/Coder.hs view
@@ -49,7 +49,7 @@ import qualified Hydra.Variants as Variants import qualified Hydra.Yaml.Language as Language import qualified Hydra.Yaml.Model as YamlModel-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Decode a YAML value to a record term@@ -145,7 +145,7 @@ case f of Core.FloatValueFloat32 v1 -> LibLiterals.float32ToFloat64 v1 Core.FloatValueFloat64 v1 -> v1- shown = LibLiterals.showFloat64 bf+ shown = LibLiterals.printFloat64 bf in (Logic.ifElse (requiresYamlStringSentinel shown) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat [ "YAML cannot represent float value: ", shown])))) (Right (YamlModel.ScalarFloat bf))))),
src/main/haskell/Hydra/Yaml/Language.hs view
@@ -35,7 +35,7 @@ import qualified Hydra.Util as Util import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Language constraints for YAML
src/main/haskell/Hydra/Yaml/Serde.hs view
@@ -45,7 +45,7 @@ import qualified Hydra.Validation as Validation import qualified Hydra.Variants as Variants import qualified Hydra.Yaml.Model as YamlModel-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci -- | Escape single quotes by doubling them@@ -72,7 +72,7 @@ -- | Indent all lines of a string by 2 spaces indentString :: String -> String indentString s =- Strings.concat (Lists.map (\line -> Logic.ifElse (Strings.null line) "" (Strings.concat [+ Strings.concat (Lists.map (\line -> Logic.ifElse (Strings.isEmpty line) "" (Strings.concat [ " ", line, "\n"])) (Formatting.lines s))@@ -85,11 +85,11 @@ parts = Lists.span (\c -> Logic.not (Equality.equal c dotCode)) chars before = Pairs.first parts afterWithDot = Pairs.second parts- in (Logic.ifElse (Lists.null before) False (Logic.ifElse (Lists.null afterWithDot) False (+ in (Logic.ifElse (Lists.isEmpty before) False (Logic.ifElse (Lists.isEmpty afterWithDot) False ( let after = Lists.drop 1 afterWithDot- in (Logic.ifElse (Lists.null after) False (+ in (Logic.ifElse (Lists.isEmpty after) False ( let isDigitFn = \c -> Logic.and (Ordering.gte c 48) (Ordering.lte c 57)- in (Logic.and (Lists.null (Lists.filter (\c -> Logic.not (isDigitFn c)) before)) (Lists.null (Lists.filter (\c -> Logic.not (isDigitFn c)) after))))))))+ in (Logic.and (Lists.isEmpty (Lists.filter (\c -> Logic.not (isDigitFn c)) before)) (Lists.isEmpty (Lists.filter (\c -> Logic.not (isDigitFn c)) after)))))))) -- | Check if a string looks like a number looksLikeNumber :: String -> Bool@@ -101,16 +101,16 @@ tailCh = Pairs.second p rest = Logic.ifElse (Equality.equal firstCh 45) tailCh chars isDigitFn = \c -> Logic.and (Ordering.gte c 48) (Ordering.lte c 57)- allDigits = Logic.and (Logic.not (Lists.null rest)) (Lists.null (Lists.filter (\c -> Logic.not (isDigitFn c)) rest))+ allDigits = Logic.and (Logic.not (Lists.isEmpty rest)) (Lists.isEmpty (Lists.filter (\c -> Logic.not (isDigitFn c)) rest)) in (Logic.ifElse allDigits True (isDecimalString rest))) (Lists.uncons chars))) -- | Check if a string needs quoting in YAML needsQuoting :: String -> Bool needsQuoting s =- Logic.ifElse (Strings.null s) True (Logic.ifElse (Lists.member s yamlReservedWords) True (Logic.ifElse (looksLikeNumber s) True (+ Logic.ifElse (Strings.isEmpty s) True (Logic.ifElse (Lists.member s yamlReservedWords) True (Logic.ifElse (looksLikeNumber s) True ( let chars = Strings.toList s specials = Strings.toList yamlSpecialChars- hasSpecial = Logic.not (Lists.null (Lists.filter (\c -> Lists.member c specials) chars))+ hasSpecial = Logic.not (Lists.isEmpty (Lists.filter (\c -> Lists.member c specials) chars)) in (Logic.ifElse hasSpecial True (hasLeadingTrailingSpace s))))) -- | Write a mapping entry in block style@@ -125,7 +125,7 @@ ": ", (writeScalar v0), "\n"]- YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.null v0) (Strings.concat [+ YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.isEmpty v0) (Strings.concat [ writeNodeInline key, ": []\n"]) (Strings.concat [ writeNodeInline key,@@ -150,7 +150,7 @@ ": ", (writeScalar v0), "\n"]- YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.null v0) (Strings.concat [+ YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.isEmpty v0) (Strings.concat [ writeNodeInline key, ": []\n"]) (Strings.concat [ writeNodeInline key,@@ -168,7 +168,7 @@ writeNode node = case node of YamlModel.NodeScalar v0 -> Strings.concat2 (writeScalar v0) "\n"- YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.null v0) "[]\n" (Strings.concat (Lists.map (\item -> writeSequenceItem item) v0))+ YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.isEmpty v0) "[]\n" (Strings.concat (Lists.map (\item -> writeSequenceItem item) v0)) YamlModel.NodeMapping v0 -> Logic.ifElse (Equality.equal (Maps.size v0) 0) "{}\n" (Strings.concat (Lists.map (\e -> writeMappingEntry e) (Maps.toList v0))) -- | Write a node inline (for use as a mapping key)@@ -196,9 +196,9 @@ writeScalar s = case s of YamlModel.ScalarBool v0 -> Logic.ifElse v0 "true" "false"- YamlModel.ScalarDecimal v0 -> Literals.showDecimal v0- YamlModel.ScalarFloat v0 -> Literals.showFloat64 v0- YamlModel.ScalarInt v0 -> Literals.showBigint v0+ YamlModel.ScalarDecimal v0 -> Literals.printDecimal v0+ YamlModel.ScalarFloat v0 -> Literals.printFloat64 v0+ YamlModel.ScalarInt v0 -> Literals.printBigint v0 YamlModel.ScalarNull -> "null" YamlModel.ScalarStr v0 -> writeString v0 @@ -210,7 +210,7 @@ "- ", (writeScalar v0), "\n"]- YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.null v0) "- []\n" (Strings.concat2 "-\n" (indentString (writeNode node)))+ YamlModel.NodeSequence v0 -> Logic.ifElse (Lists.isEmpty v0) "- []\n" (Strings.concat2 "-\n" (indentString (writeNode node))) YamlModel.NodeMapping v0 -> Logic.ifElse (Equality.equal (Maps.size v0) 0) "- {}\n" ( let entries = Maps.toList v0 in (Optionals.withDefault "" (Optionals.map (\p ->