colorless 0.0.2 → 0.1.0
raw patch · 6 files changed
+5/−40 lines, 6 files
Files
- README.md +3/−0
- colorless.cabal +1/−1
- library/Colorless/Runtime/Ast.hs +0/−14
- library/Colorless/Runtime/Expr.hs +0/−19
- package.yaml +1/−1
- tests/AstSpec.hs +0/−5
README.md view
@@ -1,1 +1,4 @@ # colorless-haskell++This is the Haskell colorless library which includes the server-side runtime.+It's meant to be used in conjunction with the command line [code generator](github.com/jxv/colorless).
colorless.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: colorless-version: 0.0.2+version: 0.1.0 synopsis: Colorless description: Colorless category: Web
library/Colorless/Runtime/Ast.hs view
@@ -3,7 +3,6 @@ ( Ast(..) , Ref(..) , If(..)- , Set(..) , Get(..) , Define(..) , Lambda(..)@@ -34,7 +33,6 @@ data Ast = Ast'Ref Ref | Ast'If If- | Ast'Set Set | Ast'Get Get | Ast'Define Define | Ast'Lambda Lambda@@ -55,7 +53,6 @@ parseJSON v = (Ast'Ref <$> parseJSON v) <|> (Ast'If <$> parseJSON v)- <|> (Ast'Set <$> parseJSON v) <|> (Ast'Get <$> parseJSON v) <|> (Ast'Define <$> parseJSON v) <|> (Ast'Lambda <$> parseJSON v)@@ -88,17 +85,6 @@ instance FromJSON If where parseJSON (Array arr) = case V.toList arr of ["if", cond, true, false] -> If <$> parseJSON cond <*> parseJSON true <*> parseJSON false- _ -> mzero- parseJSON _ = mzero--data Set = Set- { var :: Symbol- , expr :: Ast- } deriving (Show, Eq)--instance FromJSON Set where- parseJSON (Array arr) = case V.toList arr of- ["set", var, expr] -> Set <$> parseJSON var <*> parseJSON expr _ -> mzero parseJSON _ = mzero
library/Colorless/Runtime/Expr.hs view
@@ -9,7 +9,6 @@ , UnWrap(..) , UnStruct(..) , If(..)- , Set(..) , Get(..) , Define(..) , Lambda(..)@@ -88,7 +87,6 @@ | Expr'UnVal (UnVal m) | Expr'Val Val | Expr'If (If m)- | Expr'Set (Set m) | Expr'Get (Get m) | Expr'Define (Define m) | Expr'Lambda (Lambda m)@@ -129,11 +127,6 @@ , false :: Expr m } deriving (Show, Eq) -data Set m = Set- { var :: Symbol- , expr :: Expr m- } deriving (Show, Eq)- data Get m = Get { path :: [Text] , expr :: Expr m@@ -216,7 +209,6 @@ fromAst = \case Ast'Ref Ast.Ref{symbol} -> Expr'Ref $ Ref symbol Ast'If Ast.If{cond,true,false} -> Expr'If $ If (fromAst cond) (fromAst true) (fromAst false)- Ast'Set Ast.Set{var,expr} -> Expr'Set $ Set var (fromAst expr) Ast'Get Ast.Get{path,val} -> Expr'Get $ Get path (fromAst val) Ast'Define Ast.Define{var,expr} -> Expr'Define $ Define var (fromAst expr) Ast'Lambda Ast.Lambda{args,expr} -> Expr'Lambda $ Lambda args (fromAst expr)@@ -264,7 +256,6 @@ Expr'If if' -> evalIf if' envRef Expr'UnVal unVal -> evalUnVal unVal envRef Expr'Val val -> return $ Expr'Val val- Expr'Set set -> evalSet set envRef Expr'Get get -> evalGet get envRef Expr'Define define -> evalDefine define envRef Expr'Lambda lambda -> evalLambda lambda envRef@@ -313,16 +304,6 @@ envRef'' <- liftIO $ newIORef =<< readIORef envRef eval (if cond' then true else false) envRef'' _ -> runtimeThrow RuntimeError'IncompatibleType--evalSet :: (MonadIO m, RuntimeThrower m) => Set m -> IORef (Env m) -> Eval m (Expr m)-evalSet Set{var = var@(Symbol var'), expr} envRef = do- expr' <- eval expr envRef- env <- liftIO $ readIORef envRef- case Map.lookup var env of- Nothing -> runtimeThrow $ RuntimeError'UnknownVariable var'- Just v -> do- liftIO $ writeIORef v expr'- return expr' evalGet :: (MonadIO m, RuntimeThrower m) => Get m -> IORef (Env m) -> Eval m (Expr m) evalGet Get{path,expr} envRef = getter path =<< eval expr envRef
package.yaml view
@@ -1,5 +1,5 @@ name: colorless-version: '0.0.2'+version: '0.1.0' category: Web synopsis: Colorless description: Colorless
tests/AstSpec.hs view
@@ -49,11 +49,6 @@ (Ast'Const $ Const'String "true") (Ast'Const $ Const'String "false")) - context "Set" $ do- it "simple" $ shouldBe- (parseAst $ Array $ V.fromList ["set", "myVar", Bool False])- (Just $ Ast'Set $ Set "myVar" (Ast'Const $ Const'Bool False))- context "Get" $ do it "simple yet not semantically correct" $ shouldBe (parseAst $ Array $ V.fromList ["get", Array $ V.fromList ["a","b","c"], Bool False])