Safe Haskell | None |
---|---|
Language | Haskell2010 |
Facade of the Yi library, for use by confguration file. Just re-exports a bunch of modules.
You should therefore: import Yi in your ~.configyi/ scripts
- newtype Proto a = Proto {
- fromProto :: a -> a
- extractValue :: Proto t -> t
- override :: Proto a -> (a -> a -> a) -> Proto a
- (.->) :: forall t a. Proto t -> (t -> a) -> a
- module Yi.Boot
- module Yi.Config
- module Yi.Core
- module Yi.Dired
- module Yi.Eval
- module Yi.File
- module Yi.Config.Default
- module Yi.Search
- module Yi.Style
- module Yi.Style.Library
- module Yi.Misc
- module Yi.Mode.Haskell
- module Yi.Mode.IReader
Documentation
A prototype. Typically the parameter will be a record type. Fields can be defined in terms of others fields, with the idea that some of these definitons can be overridden.
Example:
data O = O {f1, f2, f3 :: Int} deriving Show o1 = Proto $ \self -> O { f1 = 1, f2 = f1 self + 1, -- 'f1 self' refers to the overriden definition of f1 f3 = f1 self + 2 }
Calling
would then produce extractValue
o1O {f1 = 1, f2 = 2, f3 = 3}
.
extractValue :: Proto t -> t Source
Get the value of a prototype. This can return bottom in case some fields are recursively defined in terms of each other.
override :: Proto a -> (a -> a -> a) -> Proto a Source
Override a prototype. Fields can be defined in terms of their definition in the base prototype.
Example:
o2 = o1 `override` \super self -> super { f1 = f1 super + 10, f3 = f3 super + 1 }
module Yi.Boot
module Yi.Config
module Yi.Core
module Yi.Dired
module Yi.Eval
module Yi.File
module Yi.Config.Default
module Yi.Search
module Yi.Style
module Yi.Style.Library
module Yi.Misc
module Yi.Mode.Haskell
module Yi.Mode.IReader