diff --git a/fixme-new/lib/Fixme/Types.hs b/fixme-new/lib/Fixme/Types.hs index 89afc136..1d3361d4 100644 --- a/fixme-new/lib/Fixme/Types.hs +++ b/fixme-new/lib/Fixme/Types.hs @@ -70,20 +70,9 @@ pattern FixmeHashLike e <- (fixmeHashFromSyn -> Just e) pattern TimeStampLike :: forall {c} . FixmeTimestamp -> Syntax c pattern TimeStampLike e <- (tsFromFromSyn -> Just e) -class MkId a where - mkId :: a -> Id - -instance MkId String where - mkId s = fromString s - instance MkId FixmeAttrName where mkId (k :: FixmeAttrName) = Id ("$" <> coerce k) -instance MkId (Text,Int) where - mkId (p, i) = Id (p <> fromString (show i)) - -instance MkId (String,Integer) where - mkId (p, i) = Id (fromString p <> fromString (show i)) fixmeHashFromSyn :: Syntax c -> Maybe Text diff --git a/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs b/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs index 54c748dc..7a05579c 100644 --- a/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs +++ b/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs @@ -624,6 +624,8 @@ eval' dict0 syn' = handle (handleForm syn') $ do -- liiftIO $ print $ show $ "TRACE EXP" <+> pretty syn let importDecls = HS.fromList [ "import", "define", "define-macro" :: Id ] + let isDefine x = x == "define" || x == "local" + case syn' of SymbolVal (Id s) | Text.isPrefixOf ":" s -> do @@ -696,7 +698,7 @@ eval' dict0 syn' = handle (handleForm syn') $ do pure nil - ListVal [SymbolVal "define", SymbolVal what, e] -> do + ListVal [SymbolVal def, SymbolVal what, e] | isDefine def -> do ev <- eval e bind what ev>> pure nil @@ -722,7 +724,7 @@ eval' dict0 syn' = handle (handleForm syn') $ do ListVal [SymbolVal "lambda", arglist, body] -> do pure $ mkForm @c "lambda" [ arglist, body ] - ListVal [SymbolVal "define", LambdaArgs (name : args), e] -> do + ListVal [SymbolVal def, LambdaArgs (name : args), e] | isDefine def -> do bind name ( mkForm @c "lambda" [ mkList [ mkSym s | s <- args], e ] ) pure nil diff --git a/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Syntax.hs b/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Syntax.hs index b60bf50e..ca35789c 100644 --- a/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Syntax.hs +++ b/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Syntax.hs @@ -350,6 +350,12 @@ instance IsContext c => MkSym c String where instance IsContext c => MkSym c Text where mkSym s = Symbol noContext (Id s) +instance MkId (Text,Int) where + mkId (p, i) = Id (p <> Text.pack (show i)) + +instance MkId (String,Integer) where + mkId (p, i) = Id (Text.pack (p <> show i)) + instance IsContext c => MkSym c Id where mkSym = Symbol noContext