builtins: Simplify generating the full builtins list.

This commit is contained in:
Shea Levy 2018-04-28 16:47:33 -07:00
parent ad18b950ac
commit 674601ad39
No known key found for this signature in database
GPG key ID: 5C0BD6957D86FE27

View file

@ -81,23 +81,20 @@ builtins = do
pushScope (M.fromList lst) currentScopes
where
buildMap = M.fromList . map mapping <$> builtinsList
topLevelBuiltins = map mapping . filter isTopLevel <$> fullBuiltinsList
topLevelBuiltins = map mapping <$> fullBuiltinsList
fullBuiltinsList = concatMap go <$> builtinsList
fullBuiltinsList = map go <$> builtinsList
where
go b@(Builtin TopLevel _) = [b]
go b@(Builtin Normal (name, builtin)) =
[ b, Builtin TopLevel ("__" <> name, builtin) ]
go b@(Builtin TopLevel _) = b
go (Builtin Normal (name, builtin)) =
Builtin TopLevel ("__" <> name, builtin)
data BuiltinType = Normal | TopLevel
data Builtin m = Builtin
{ kind :: BuiltinType
{ _kind :: BuiltinType
, mapping :: (Text, NThunk m)
}
isTopLevel :: Builtin m -> Bool
isTopLevel b = case kind b of Normal -> False; TopLevel -> True
valueThunk :: forall e m. MonadNix e m => NValue m -> NThunk m
valueThunk = value @_ @_ @m