Making the controllers more linear
Basically, the idea of `(oneBranch <> secondBranch)` instead of ``` do x <- foo case x of ... ```
This commit is contained in:
1 parent
617bd255ff
commit
15e50322c4
4 files changed
+51
-17
No files matched your search
+12
-7
@@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module AFRP.Diagram where
|
||||
import Data.Text (Text)
|
||||
import qualified Text.Printf as Text
|
||||
@@ -23,22 +24,26 @@ emptyDiagram :: DiagramC
|
||||
emptyDiagram r = r Empty
|
||||
|
||||
|
||||
renderF :: DiagramF (Maybe String) -> Maybe String
|
||||
renderF :: DiagramF (Maybe T.Text) -> Maybe T.Text
|
||||
renderF = \case
|
||||
Empty -> Nothing
|
||||
Step n x -> Just $ T.unpack n <> maybe "" (Text.printf "( %s )") x
|
||||
Step n x -> Just $ n <> T.pack (maybe "" (Text.printf "( %s )") x)
|
||||
Then (Just a) (Just b) -> Just $ a <> " -> " <> b
|
||||
Then (Just a) _ -> Just a
|
||||
Then _ b -> b
|
||||
Both (Just a) (Just b) -> Just $ Text.printf "(%s, %s)" a b
|
||||
Both (Just a) (Just b) -> Just $ T.pack $ Text.printf "(%s, %s)" a b
|
||||
Both (Just a) _ -> Just a
|
||||
Both _ b -> b
|
||||
Branch (Just a) (Just b) -> Just $ Text.printf "(%s || %s)" a b
|
||||
Branch (Just a) Nothing -> Just $ Text.printf "(%s || <skip>)" a
|
||||
Branch (Just a) (Just b) -> Just $ T.pack $ Text.printf "(%s || %s)" a b
|
||||
-- I'm leaving this here. This would be technically more correct (showing
|
||||
-- the empty branch, ie. the full if-then-else, but often we care about a
|
||||
-- more simplistic `when` style structure
|
||||
-- Branch (Just a) Nothing -> Just $ T.pack $ Text.printf "(%s || <skip>)" a
|
||||
Branch (Just a) Nothing -> Just $ T.pack $ Text.printf "%s" a
|
||||
Branch _ b -> b
|
||||
Merge (Just a) (Just b) -> Just $ Text.printf "(%s, %s)" a b
|
||||
Merge (Just a) (Just b) -> Just $ T.pack $ Text.printf "(%s, %s)" a b
|
||||
Merge (Just a) _ -> Just a
|
||||
Merge _ b -> b
|
||||
Compose (Just a) (Just b) -> Just $ Text.printf "(%s, %s)" a b
|
||||
Compose (Just a) (Just b) -> Just $ T.pack $ Text.printf "(%s, %s)" a b
|
||||
Compose (Just a) _ -> Just a
|
||||
Compose _ b -> b
|
||||
Reference in new issue
Block a user