packages feed

eo-phi-normalizer 3.1.0 → 3.2.0

raw patch · 5 files changed

+70/−16 lines, 5 files

Files

CHANGELOG.md view
@@ -6,7 +6,17 @@ and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). -## v3.1.0 - 2024-12-28+## v3.2.0 - 2025-01-13++### Breaking changes++- Pretty-print constants ([#661](https://github.com/objectionary/eo-phi-normalizer/pull/661), [#662](https://github.com/objectionary/eo-phi-normalizer/pull/662))++### Documentation and maintenance++- chore(deps): update baptiste0928/cargo-install action to v3.3.0 ([#660](https://github.com/objectionary/eo-phi-normalizer/pull/660))++## v3.1.0 - 2025-01-01  ### Breaking changes 
eo-phi-normalizer.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           eo-phi-normalizer-version:        3.1.0+version:        3.2.0 synopsis:       Command line normalizer of 𝜑-calculus expressions. description:    Please see the README on GitHub at <https://github.com/objectionary/eo-phi-normalizer#readme> homepage:       https://github.com/objectionary/eo-phi-normalizer#readme
src/Language/EO/Phi/Pretty.hs view
@@ -69,7 +69,7 @@   pretty (Abs.DoubleSigned i) = pretty i  instance Pretty Abs.StringRaw where-  pretty (Abs.StringRaw i) = pretty i+  pretty (Abs.StringRaw i) = pretty (show i)  instance Pretty Abs.Program where   pretty = \case@@ -104,7 +104,7 @@     Abs.ThisObject -> pretty "ξ"     Abs.Termination -> pretty "⊥"     Abs.ConstStringRaw str -> pretty str-    Abs.ConstString str -> pretty str+    Abs.ConstString str -> pretty (show str)     Abs.ConstIntRaw integersigned -> pretty integersigned     Abs.ConstFloatRaw doublesigned -> pretty doublesigned     Abs.MetaSubstThis object1 object2 -> pretty object1 <+> lbracket <+> pretty "ξ ↦" <+> pretty object2 <+> rbracket
src/Language/EO/Phi/Syntax.hs view
@@ -25,6 +25,7 @@ {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE ViewPatterns #-}@@ -187,9 +188,19 @@   sugarFinally :: Program -> Program   sugarFinally (Program bindings) = Program (sugarFinally bindings) +pattern SugarBinding :: Bytes -> Binding+pattern SugarBinding bs <- AlphaBinding "as-bytes" (Application "Φ.org.eolang.bytes" [AlphaBinding "α0" (Formation [DeltaBinding bs])])+ instance SugarableFinally Object where   sugarFinally :: Object -> Object   sugarFinally = \case+    Application "Φ.org.eolang.int" [SugarBinding bs] -> ConstInt (fromIntegral (bytesToInt bs))+    Application "Φ.org.eolang.i64" [SugarBinding bs] -> ConstInt (fromIntegral (bytesToInt bs))+    Application "Φ.org.eolang.i32" [SugarBinding bs] -> ConstInt (fromIntegral (bytesToInt bs))+    Application "Φ.org.eolang.i16" [SugarBinding bs] -> ConstInt (fromIntegral (bytesToInt bs))+    Application "Φ.org.eolang.float" [SugarBinding bs] -> ConstFloat (bytesToFloat bs)+    Application "Φ.org.eolang.number" [SugarBinding bs] -> ConstFloat (bytesToFloat bs)+    Application "Φ.org.eolang.string" [SugarBinding bs] -> ConstString (bytesToString bs)     "Φ.org.eolang" -> GlobalObjectPhiOrg     obj@ConstString{} -> obj     obj@ConstStringRaw{} -> errorExpectedDesugaredObject obj@@ -684,3 +695,6 @@ printTree =   printTreeDontSugar     . sugarFinally++-- >>> bytesToInt "00-00-00-00-00-00-00-00"+-- 0
test/eo/phi/from-eo/as-phi.yaml view
@@ -24,9 +24,9 @@ tests:   - name: "A program that prints itself"     input: |-      {⟦org ↦ ⟦eolang ↦ ⟦prints-itself ↦ ⟦φ ↦ Φ.org.eolang.as-phi(α0 ↦ ξ).length.gt(α0 ↦ Φ.org.eolang.int(α0 ↦ Φ.org.eolang.bytes(Δ ⤍ 00-00-00-00-00-00-00-00)))⟧, prints-itself-to-console ↦ ⟦x ↦ Φ.org.eolang.int(α0 ↦ Φ.org.eolang.bytes(Δ ⤍ 00-00-00-00-00-00-00-2A)), φ ↦ Φ.org.eolang.io.stdout(α0 ↦ Φ.org.eolang.as-phi(α0 ↦ ξ))⟧, λ ⤍ Package⟧, λ ⤍ Package⟧⟧}+      {⟦org ↦ ⟦eolang ↦ ⟦prints-itself ↦ ⟦φ ↦ Φ.org.eolang.as-phi(α0 ↦ ξ).length.gt(α0 ↦ Φ.org.eolang.int(as-bytes ↦ Φ.org.eolang.bytes(⟦ Δ ⤍ 00-00-00-00-00-00-00-00 ⟧)))⟧, prints-itself-to-console ↦ ⟦x ↦ Φ.org.eolang.int(as-bytes ↦ Φ.org.eolang.bytes(⟦ Δ ⤍ 00-00-00-00-00-00-00-2A ⟧)), φ ↦ Φ.org.eolang.io.stdout(α0 ↦ Φ.org.eolang.as-phi(α0 ↦ ξ))⟧, λ ⤍ Package⟧, λ ⤍ Package⟧⟧}     normalized: |-      { ⟦ org ↦ ⟦ eolang ↦ ⟦ prints-itself ↦ ⟦ φ ↦ Φ.org.eolang.as-phi (α0 ↦ ξ).length.gt (α0 ↦ Φ.org.eolang.int (α0 ↦ Φ.org.eolang.bytes (Δ ⤍ 00-00-00-00-00-00-00-00))) ⟧, prints-itself-to-console ↦ ⟦ x ↦ Φ.org.eolang.int (α0 ↦ Φ.org.eolang.bytes (Δ ⤍ 00-00-00-00-00-00-00-2A)), φ ↦ Φ.org.eolang.io.stdout (α0 ↦ Φ.org.eolang.as-phi (α0 ↦ ξ)) ⟧, λ ⤍ Package ⟧, λ ⤍ Package ⟧ ⟧ }+      { ⟦ org ↦ ⟦ eolang ↦ ⟦ prints-itself ↦ ⟦ φ ↦ Φ.org.eolang.as-phi (α0 ↦ ξ).length.gt (α0 ↦ Φ.org.eolang.int (as-bytes ↦ Φ.org.eolang.bytes (⟦ Δ ⤍ 00-00-00-00-00-00-00-00 ⟧))) ⟧, prints-itself-to-console ↦ ⟦ x ↦ Φ.org.eolang.int (as-bytes ↦ Φ.org.eolang.bytes (⟦ Δ ⤍ 00-00-00-00-00-00-00-2A ⟧)), φ ↦ Φ.org.eolang.io.stdout (α0 ↦ Φ.org.eolang.as-phi (α0 ↦ ξ)) ⟧, λ ⤍ Package ⟧, λ ⤍ Package ⟧ ⟧ }     prettified: |       {@@ -36,19 +36,11 @@                 φ ↦ Φ̇.as-phi(                   ξ                 ).length.gt(-                  Φ̇.int(-                    Φ̇.bytes(-                      Δ ⤍ 00-00-00-00-00-00-00-00-                    )-                  )+                  0                 )               ⟧,               prints-itself-to-console ↦ ⟦-                x ↦ Φ̇.int(-                  Φ̇.bytes(-                    Δ ⤍ 00-00-00-00-00-00-00-2A-                  )-                ),+                x ↦ 42,                 φ ↦ Φ̇.io.stdout(                   Φ̇.as-phi(                     ξ@@ -72,5 +64,43 @@           m ↦ ⟦             x ↦ ⟦⟧           ⟧()+        ⟧+      }+  - name: "Prints abstraction sugar"+    input: |+      {⟦+        foo ↦ Φ.bar(+          α0 ↦ "hello",+          α1 ↦ "jeff",+          α2 ↦ 42+        )+      ⟧}+    normalized: |+      {⟦+        foo ↦ Φ.bar(+          "hello",+          "jeff",+          42+        )+      ⟧}+    prettified: |+      {+        ⟦+          foo ↦ Φ.bar(+            "hello",+            "jeff",+            42+          )+        ⟧+      }+  - name: "Prints floats"+    input: |+      {⟦ m ↦ -42.0 ⟧}+    normalized: |+      {⟦ m ↦ -42.0 ⟧}+    prettified: |+      {+        ⟦+          m ↦ -42.0       }