impl: update `symantic-base` dependency
authorJulien Moutinho <julm+symantic-parser@sourcephile.fr>
Thu, 7 Oct 2021 22:57:02 +0000 (00:57 +0200)
committerJulien Moutinho <julm+symantic-parser@sourcephile.fr>
Fri, 8 Oct 2021 00:07:07 +0000 (02:07 +0200)
12 files changed:
Makefile
default.nix
flake.lock
flake.nix
parsers/Parsers/Nandlang.hs
parsers/Parsers/Playground.hs
src/Symantic/Parser/Grammar/Combinators.hs
src/Symantic/Parser/Grammar/Optimize.hs
src/Symantic/Parser/Grammar/Production.hs
src/Symantic/Parser/Machine/Generate.hs
src/Symantic/Parser/Machine/Instructions.hs
src/Symantic/Parser/Machine/Program.hs

index cc76638cd72027c45b9fe44596ecc0d041c2103c..7642fc96b6121de77d3977647bd9510889fc15bf 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -122,3 +122,14 @@ nix-repl:
        nix -L develop --command cabal repl $(CABAL_REPL_FLAGS)
 nix-shell:
        nix -L develop
+
+.hlint.yaml: $(shell find src -name '*.hs' -not -name 'HLint.hs')
+       sed -i -e '/^# BEGIN: generated hints/,/^# END: generated hints/d' $@
+       echo >>$@ '# BEGIN: generated hints'
+       hlint --find . | grep -- '- fixity:' | sort -u >>$@
+       echo >>$@ '# END: generated hints'
+
+lint: .hlint.yaml
+       if hlint --quiet --report=hlint.html -XNoCPP $(HLINT_FLAGS) .; \
+       then rm -f hlint.html; \
+       else sensible-browser ./hlint.html & fi
index db14da0c149cec7862cf74deffce047b5802a48f..b3db12d3cb1f709a668ac8c93ae03176ded88b95 100644 (file)
@@ -44,6 +44,8 @@ in hs.symantic-parser // {
       hs.hs-speedscope
       hs.ormolu
       hs.profiteur
+      pkgs.git-chglog
+      pkgs.reuse
       #hs.threadscope
       #hs.ghc-events-analyze
       #hs.haskell-language-server
index 577cc2388efd3353c162812c35f629a4364a5476..0822867b5d1bc66afa9847924cd2d52f4e612e65 100644 (file)
@@ -2,26 +2,11 @@
   "nodes": {
     "flake-utils": {
       "locked": {
-        "lastModified": 1623875721,
-        "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
+        "lastModified": 1631561581,
+        "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
-    "flake-utils_2": {
-      "locked": {
-        "lastModified": 1623875721,
-        "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
+        "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
         "type": "github"
       },
       "original": {
@@ -32,8 +17,8 @@
     },
     "nixpkgs": {
       "locked": {
-        "narHash": "sha256-r3EoB5BEXlDDDm6zZ571l3GQQTV+ENxis3QQF33WzrQ=",
-        "path": "/nix/store/95j1q84ajdn4ry10rywngn2jhasjjzlz-nixpkgs-patched",
+        "narHash": "sha256-OwFkUPtQmg74pta7j4kLpj1yrRZCtb9X4qJY8PAyvgw=",
+        "path": "/nix/store/vi0l5zfy1saqjcs9yipdgfgv8xli1f3f-nixpkgs-patched",
         "type": "path"
       },
       "original": {
     },
     "symantic-base": {
       "inputs": {
-        "flake-utils": "flake-utils_2",
+        "flake-utils": [
+          "flake-utils"
+        ],
         "nixpkgs": [
           "nixpkgs"
         ]
       },
       "locked": {
-        "lastModified": 1630669709,
-        "narHash": "sha256-OoivM9+ToU99+5BJs2IssUwpW5QmVtECLm7QN4pL63k=",
+        "lastModified": 1633651466,
+        "narHash": "sha256-vdplmNo0BIChVJtxXPH3oob6mR4C1zxpOlywORf03OY=",
         "ref": "main",
-        "rev": "5e52e1ec42d515bc93187c9eeb3603a907214c69",
-        "revCount": 22,
+        "rev": "976663dccdd6807c501c35f9040325500da35e31",
+        "revCount": 45,
         "type": "git",
         "url": "https://git.code.sourcephile.fr/~julm/symantic-base"
       },
index 32c631dad15c56f2752e50b2f6ab025eb67bdaed..d3b0f6e751da068e6ab64de54135fea08d57ddc7 100644 (file)
--- a/flake.nix
+++ b/flake.nix
@@ -4,6 +4,7 @@ inputs.nixpkgs.url = "flake:nixpkgs";
 inputs.flake-utils.url = "github:numtide/flake-utils";
 inputs.symantic-base.url = "git+https://git.code.sourcephile.fr/~julm/symantic-base?ref=main";
 inputs.symantic-base.inputs.nixpkgs.follows = "nixpkgs";
+inputs.symantic-base.inputs.flake-utils.follows = "flake-utils";
 outputs = inputs:
   inputs.flake-utils.lib.eachDefaultSystem (system: let
     pkgs = inputs.nixpkgs.legacyPackages.${system};
index 81363ed9185c532f10d5f0cd1f2004a7cb9a6724..5f8e9aedf5881ec0aca5f4d09e837186314c10cf 100644 (file)
@@ -17,8 +17,8 @@ import Data.String (String)
 import qualified Data.Set as Set
 import qualified Data.Text as Text
 
+import qualified Symantic.Class as Prod
 import qualified Symantic.Parser as P
-import qualified Symantic.Lang as Prod
 
 type Parser a = P.Parser Text.Text a
 
index f284c2ef34c1e8e36b9cd39be62c4513d4eb5f10..ba6170b6d7eb89e0d1de4f869144feeec7878350 100644 (file)
@@ -3,7 +3,7 @@
 module Parsers.Playground where
 
 import Symantic.Parser
-import qualified Symantic.Lang as Prod
+import qualified Symantic.Class as Prod
 
 boom :: CombApplicable repr => repr ()
 boom =
index 2a03b2f2fbc4a735aa2297370f67a395e787d181..9cc74fb888c96b9eed0a33278fb453a2cfd3b465 100644 (file)
@@ -44,7 +44,7 @@ import qualified Language.Haskell.TH as TH
 import qualified Language.Haskell.TH.Syntax as TH
 
 import Symantic.Derive
-import qualified Symantic.Lang as Prod
+import qualified Symantic.Class as Prod
 import Symantic.Parser.Grammar.Production
 
 -- * Type 'ReprComb'
index 9eb5c67987bd80882ee4b2d00e8b8835b628a54f..cb6ee76524d4e67651eea7105b6bd06923f3de17 100644 (file)
@@ -27,10 +27,10 @@ import qualified Language.Haskell.TH as TH
 
 import Symantic.Parser.Grammar.Combinators
 import Symantic.Parser.Grammar.Production
-import Symantic.Parser.Grammar.ObserveSharing hiding (def)
+import Symantic.Parser.Grammar.ObserveSharing
 import Symantic.Derive
+import qualified Symantic.Class as Prod
 import qualified Symantic.Data as Prod
-import qualified Symantic.Lang as Prod
 
 {-
 import Data.Function (($), flip)
index a0239aab1832eb53621cf710cdda9463b40d7dc7..2fb421bbf954b46154f205f2e08a94d1d48d4417 100644 (file)
@@ -21,8 +21,8 @@ import qualified Language.Haskell.TH as TH
 import qualified Language.Haskell.TH.Syntax as TH
 import qualified Language.Haskell.TH.Show as TH
 
+import Symantic.Class
 import Symantic.Data
-import Symantic.Lang
 import Symantic.Derive
 
 type Production = Product
@@ -88,11 +88,12 @@ instance (Abstractable f, Abstractable g) => Abstractable (Product f g) where
   lam1 f = Pair
     (lam1 (\x -> let Pair fx _ = f (Pair x undefined) in fx))
     (lam1 (\y -> let Pair _ fy = f (Pair undefined y) in fy))
-  const = Pair const const
+  Pair f1 f2 .@ Pair x1 x2 = Pair (f1 .@x1) (f2 .@x2)
   var = Fun.id
+instance (Callable f, Callable g) => Callable (Product f g) where
+  const = Pair const const
   id = Pair id id
   flip = Pair flip flip
-  Pair f1 f2 .@ Pair x1 x2 = Pair (f1 .@x1) (f2 .@x2)
   (.) = Pair (.) (.)
   ($) = Pair ($) ($)
 instance (Num (f a), Num (g a)) => Num (Product f g a) where
@@ -124,6 +125,7 @@ instance Abstractable Identity where
   lam f = Identity (runIdentity Fun.. f Fun.. Identity)
   lam1 = lam
   var = Fun.id
+instance Callable Identity where
   const = Identity Fun.const
   flip = Identity Fun.flip
   id = Identity Fun.id
@@ -155,6 +157,7 @@ instance Abstractable TH.CodeQ where
   lam f = [|| \x -> $$(f [||x||]) ||]
   lam1 = lam
   var = Fun.id
+instance Callable TH.CodeQ where
   id = [|| \x -> x ||]
   const = [|| Fun.const ||]
   flip = [|| \f x y -> f y x ||]
index d81487131551b497a2db136d52c7a550f347b95f..4f686a37c66e60185cec50c3d33d0e0047a970bf 100644 (file)
@@ -65,7 +65,7 @@ import Symantic.Parser.Grammar.Combinators
 import Symantic.Parser.Machine.Input
 import Symantic.Parser.Machine.Instructions
 import qualified Language.Haskell.TH.HideName as TH
-import qualified Symantic.Lang as Prod
+import qualified Symantic.Class as Prod
 import qualified Symantic.Optimize as Prod
 
 --import Debug.Trace
index 8c29d60bfab6281dc1773b97af5019a09d1c776e..e8dcf35e07cd757f7bf259062bb6774fe7e0586c 100644 (file)
@@ -18,7 +18,7 @@ import qualified Language.Haskell.TH as TH
 
 import Symantic.Parser.Grammar
 import Symantic.Parser.Machine.Input
-import qualified Symantic.Lang as Prod
+import qualified Symantic.Class as Prod
 import qualified Symantic.Data as Sym
 
 -- * Type 'Splice'
index 00bbbac100126835ceb0f4e9e471f2d5861d6ff7..5e3ca80a518bf2166daa83007306891d03fac762 100644 (file)
@@ -25,7 +25,7 @@ import qualified Data.Set as Set
 import qualified Data.Traversable as Traversable
 import qualified Language.Haskell.TH as TH
 import qualified Language.Haskell.TH.Syntax as TH
-import qualified Symantic.Lang as Prod
+import qualified Symantic.Class as Prod
 
 import Symantic.Derive
 import Symantic.Parser.Grammar