packages feed

graph-rewriting-ski 0.5.2 → 0.5.4

raw patch · 3 files changed

+63/−66 lines, 3 files

Files

Direct/Graph.hs view
@@ -3,52 +3,42 @@ import Data.View import GraphRewriting.Graph import GraphRewriting.Graph.Write-import GraphRewriting.Pattern.InteractionNet import qualified Common.Term as Term   -- <chunk: node_type> data SKI-	= S {inp ∷ Port}-	| K {inp ∷ Port}-	| I {inp ∷ Port}-	| Applicator {inp, out1, out2 ∷ Port}-	| Duplicator {inp1, inp2, out ∷ Port}-	| Eraser {inp ∷ Port}-	| Variable {inp ∷ Port, name ∷ String}-	| Root {out ∷ Port}+	=  S           {inp ∷ Port}+	|  K           {inp ∷ Port}+	|  I           {inp ∷ Port}+	|  Applicator  {inp, out1, out2 ∷ Port}+	|  Duplicator  {inp1, inp2, out ∷ Port}+	|  Eraser      {inp ∷ Port}+	|  Variable    {inp ∷ Port, name ∷ String}+	|  Root        {out ∷ Port} -- </chunk: node_type> +-- <chunk: view_ports> instance View [Port] SKI where 	inspect ski = case ski of-		S {inp = i}                                → [i]-		K {inp = i}                                → [i]-		I {inp = i}                                → [i]-		Applicator {inp = i, out1 = o1, out2 = o2} → [i,o1,o2]-		Duplicator {inp1 = i1, inp2 = i2, out = o} → [i1,i2,o]-		Eraser {inp = i}                           → [i]-		Variable {inp = i}                         → [i]-		Root {out = o}                             → [o]+		S           {inp = i}                        → [i]+		K           {inp = i}                        → [i]+		I           {inp = i}                        → [i]+		Applicator  {inp = i, out1 = o1, out2 = o2}  → [i,o1,o2]+		Duplicator  {inp1 = i1, inp2 = i2, out = o}  → [i1,i2,o]+		Eraser      {inp = i}                        → [i]+		Variable    {inp = i}                        → [i]+		Root        {out = o}                        → [o] 	update ports ski = case ski of-		S {} → ski {inp = i}                                 where [i]       = ports-		K {} → ski {inp = i}                                 where [i]       = ports-		I  {} → ski {inp = i}                                where [i]       = ports-		Applicator  {} → ski {inp = i, out1 = o1, out2 = o2} where [i,o1,o2] = ports-		Duplicator  {} → ski {inp1 = i1, inp2 = i2, out = o} where [i1,i2,o] = ports-		Eraser  {} → ski {inp = i}                           where [i]       = ports-		Variable  {} → ski {inp = i}                         where [i]       = ports-		Root  {} → ski {out = o}                             where [o]       = ports--instance INet SKI where-	principalPort ski = case ski of-		Root {out = o}                             → 0-		Applicator {inp = i, out1 = o1, out2 = o2} → 1-		Duplicator {inp1 = i1, inp2 = i2, out = o} → 2-		Eraser {inp = i}                           → 0-		Variable {inp = i}                         → 0-		S {inp = i}                                → 0-		K {inp = i}                                → 0-		I {inp = i}                                → 0+		S           {} → ski {inp = i}                        where [i]        = ports+		K           {} → ski {inp = i}                        where [i]        = ports+		I           {} → ski {inp = i}                        where [i]        = ports+		Applicator  {} → ski {inp = i, out1 = o1, out2 = o2}  where [i,o1,o2]  = ports+		Duplicator  {} → ski {inp1 = i1, inp2 = i2, out = o}  where [i1,i2,o]  = ports+		Eraser      {} → ski {inp = i}                        where [i]        = ports+		Variable    {} → ski {inp = i}                        where [i]        = ports+		Root        {} → ski {out = o}                        where [o]        = ports+-- </chunk: view_ports>  fromTerm ∷ Term.Expr → Graph SKI fromTerm term = flip execGraph emptyGraph $ do
Direct/Rules.hs view
@@ -3,9 +3,9 @@ import Prelude.Unicode import Direct.Graph import GraphRewriting-import GraphRewriting.Pattern.InteractionNet  +-- <chunk: rules> ruleS ∷ (View [Port] n, View SKI n) ⇒ Rule n  ruleS = do 	S {inp = si} ← node@@ -21,6 +21,7 @@ 		 Node $ Applicator {inp = r, out1 = g, out2 = rr}, 		 Node $ Duplicator {inp1 = lr, inp2 = rr, out = x}] +-- <chunk: ruleK> ruleK ∷ (View [Port] n, View SKI n) ⇒ Rule n  ruleK = do 	K {inp = si} ← node@@ -29,10 +30,13 @@ 	Applicator {inp = i2, out1 = o2, out2 = y} ← nodeAt i1 	require (i1 ≡ o2) 	replace0 [Wire x i2, Node $ Eraser {inp = y}]+-- </chunk: ruleK>  ruleI ∷ (View [Port] n, View SKI n) ⇒ Rule n ruleI = do-	I {} :-: Applicator {inp = iA, out2 = o2} ← activePair+	I {inp = iI} ← node+	Applicator {inp = iA, out2 = o2} ← nodeAt iI+	require (iI ≡ iA) 	rewire [[iA,o2]]  combinatorAt ∷ (View [Port] n, View SKI n) ⇒ Edge → Pattern n SKI@@ -77,3 +81,4 @@ 	if iE ≡ i1 		then rewire [[oD,i2]] 		else rewire [[oD,i1]]+-- <chunk: rules>
graph-rewriting-ski.cabal view
@@ -1,5 +1,5 @@ Name:           graph-rewriting-ski-Version:        0.5.2+Version:        0.5.4 Copyright:      (c) 2010, Jan Rochel License:        BSD3 License-File:   LICENSE@@ -13,32 +13,34 @@ Category:       Graphs, Application Cabal-Version:  >= 1.6 Data-Files:     examples/*.ski examples/combinator_birds/*.ski-Build-Depends:-	base >= 4 && < 4.3,-	base-unicode-symbols >= 0.2 && < 0.3,-	graph-rewriting >= 0.4.4 && < 0.5,-	graph-rewriting-layout >= 0.4.2 && < 0.5,-	graph-rewriting-gl >= 0.6 && < 0.7,-	parsec >= 2.1 && < 2.2,-	GLUT >= 2.2 && < 2.3,-	OpenGL >= 2.4 && < 2.5 -Executable:     ski-inet-Main-Is:        INet/Main.hs-GHC-Options:    -fno-warn-duplicate-exports -fwarn-unused-imports-Other-Modules:  Common.GL INet.GL INet.Graph INet.Rules Common.Term-Extensions:-	UnicodeSyntax-	FlexibleInstances-	FlexibleContexts-	MultiParamTypeClasses+Library+  Build-Depends:+    base >= 4 && < 4.3,+    base-unicode-symbols >= 0.2 && < 0.3,+    graph-rewriting >= 0.4.4 && < 0.5,+    graph-rewriting-layout >= 0.4.2 && < 0.5,+    graph-rewriting-gl >= 0.6 && < 0.7,+    parsec >= 2.1 && < 2.2,+    GLUT >= 2.2 && < 2.3,+    OpenGL >= 2.4 && < 2.5 -Executable:     ski-direct-Main-Is:        Direct/Main.hs-GHC-Options:    -fno-warn-duplicate-exports -fwarn-unused-imports-Other-Modules:  Common.GL Direct.GL Direct.Graph Direct.Rules Common.Term-Extensions:-	UnicodeSyntax-	FlexibleInstances-	FlexibleContexts-	MultiParamTypeClasses+Executable ski-inet+  Main-Is:        INet/Main.hs+  GHC-Options:    -fno-warn-duplicate-exports -fwarn-unused-imports+  Other-Modules:  Common.GL INet.GL INet.Graph INet.Rules Common.Term+  Extensions:+    UnicodeSyntax+    FlexibleInstances+    FlexibleContexts+    MultiParamTypeClasses++Executable ski-direct+  Main-Is:        Direct/Main.hs+  GHC-Options:    -fno-warn-duplicate-exports -fwarn-unused-imports+  Other-Modules:  Common.GL Direct.GL Direct.Graph Direct.Rules Common.Term+  Extensions:+    UnicodeSyntax+    FlexibleInstances+    FlexibleContexts+    MultiParamTypeClasses