Add a function embed :: NValueNF m -> m (NValue m) in Normal.hs
This commit is contained in:
parent
c2aaec0e9e
commit
f8ff1c7522
|
@ -4,6 +4,7 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE RankNTypes #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
{-# LANGUAGE TypeFamilies #-}
|
||||
|
||||
module Nix.Normal where
|
||||
|
@ -35,6 +36,19 @@ normalForm :: (MonadThunk (NValue m) (NThunk m) m)
|
|||
=> NValue m -> m (NValueNF m)
|
||||
normalForm = normalFormBy force
|
||||
|
||||
embed :: forall m. (MonadThunk (NValue m) (NThunk m) m)
|
||||
=> NValueNF m -> m (NValue m)
|
||||
embed (Fix x) = case x of
|
||||
NVConstant a -> return $ NVConstant a
|
||||
NVStr t s -> return $ NVStr t s
|
||||
NVList l -> NVList . fmap (value @_ @_ @m)
|
||||
<$> traverse embed l
|
||||
NVSet s p -> flip NVSet p . fmap (value @_ @_ @m)
|
||||
<$> traverse embed s
|
||||
NVClosure p f -> return $ NVClosure p f
|
||||
NVPath fp -> return $ NVPath fp
|
||||
NVBuiltin name f -> return $ NVBuiltin name f
|
||||
|
||||
valueText :: forall e m. (Framed e m, MonadFile m, MonadEffects m)
|
||||
=> Bool -> NValueNF m -> m (Text, DList Text)
|
||||
valueText addPathsToStore = cata phi
|
||||
|
|
Loading…
Reference in a new issue