packages feed

MagicHaskeller 0.9.6.6.1 → 0.9.6.7

raw patch · 16 files changed

+366/−84 lines, 16 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ MagicHaskeller: everyACE :: (ProgramGenerator pg, Typeable a) => pg -> Bool -> [[(CoreExpr, a)]]
+ MagicHaskeller: ftotalIO :: Typeable a => Maybe Int -> (a -> Bool) -> [(e, a)] -> IO [(e, a)]
+ MagicHaskeller: updatePGXOpts :: (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a) -> Maybe [[Primitive]] -> [Dynamic] -> [(Dynamic, Dynamic)] -> [[Dynamic]] -> [[(Dynamic, Dynamic)]] -> Common -> a
+ MagicHaskeller: updatePGXOptsFilt :: Int -> (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a) -> Maybe [[Primitive]] -> [Dynamic] -> [(Dynamic, Dynamic)] -> [[Dynamic]] -> [[(Dynamic, Dynamic)]] -> Common -> a
+ MagicHaskeller.CoreLang: (:$) :: CoreExpr -> CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: B :: CoreExpr
+ MagicHaskeller.CoreLang: B' :: CoreExpr
+ MagicHaskeller.CoreLang: C :: CoreExpr
+ MagicHaskeller.CoreLang: C' :: CoreExpr
+ MagicHaskeller.CoreLang: Case :: CoreExpr -> [(Var, Int8, CoreExpr)] -> CoreExpr
+ MagicHaskeller.CoreLang: Context :: Dictionary -> CoreExpr
+ MagicHaskeller.CoreLang: Dict :: Dynamic -> Dictionary
+ MagicHaskeller.CoreLang: Fix :: CoreExpr -> Int8 -> [Int8] -> CoreExpr
+ MagicHaskeller.CoreLang: FunLambda :: CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: FunX :: Int8 -> CoreExpr
+ MagicHaskeller.CoreLang: HV :: (forall a. a) -> HValue
+ MagicHaskeller.CoreLang: I :: CoreExpr
+ MagicHaskeller.CoreLang: K :: CoreExpr
+ MagicHaskeller.CoreLang: Lambda :: CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: PrimCon :: {-# UNPACK #-} !Var -> CoreExpr
+ MagicHaskeller.CoreLang: Primitive :: {-# UNPACK #-} !Var -> CoreExpr
+ MagicHaskeller.CoreLang: S :: CoreExpr
+ MagicHaskeller.CoreLang: S' :: CoreExpr
+ MagicHaskeller.CoreLang: Tuple :: {-# UNPACK #-} !Int8 -> CoreExpr
+ MagicHaskeller.CoreLang: VarName :: String -> CoreExpr
+ MagicHaskeller.CoreLang: X :: {-# UNPACK #-} !Int8 -> CoreExpr
+ MagicHaskeller.CoreLang: Y :: CoreExpr
+ MagicHaskeller.CoreLang: [primId] :: CoreExpr -> {-# UNPACK #-} !Var
+ MagicHaskeller.CoreLang: [undict] :: Dictionary -> Dynamic
+ MagicHaskeller.CoreLang: actualVarName :: String -> Exp
+ MagicHaskeller.CoreLang: adjustXs :: (Num a, Bits a) => a -> Int8 -> CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: args :: CoreExpr -> [CoreExpr]
+ MagicHaskeller.CoreLang: arityCE :: CoreExpr -> Int
+ MagicHaskeller.CoreLang: bra :: Integral i => i -> CoreExpr -> [CoreExpr]
+ MagicHaskeller.CoreLang: branches :: CoreExpr -> [CoreExpr]
+ MagicHaskeller.CoreLang: ceToPriority :: VarPriorityLib -> CoreExpr -> Int
+ MagicHaskeller.CoreLang: data CoreExpr
+ MagicHaskeller.CoreLang: defaultPrimitives :: [Dynamic]
+ MagicHaskeller.CoreLang: defaultVarLib :: VarLib
+ MagicHaskeller.CoreLang: dynamicsToVL :: [Dynamic] -> VarLib
+ MagicHaskeller.CoreLang: exprToTHExp :: VarLib -> CoreExpr -> Exp
+ MagicHaskeller.CoreLang: exprToTHExp' :: Bool -> Array Var Dynamic -> CoreExpr -> Exp
+ MagicHaskeller.CoreLang: exprToTHExpLite :: VarLib -> CoreExpr -> Exp
+ MagicHaskeller.CoreLang: funOccursIn :: Int8 -> CoreExpr -> Bool
+ MagicHaskeller.CoreLang: headIsX :: CoreExpr -> Bool
+ MagicHaskeller.CoreLang: instance GHC.Classes.Eq MagicHaskeller.CoreLang.CoreExpr
+ MagicHaskeller.CoreLang: instance GHC.Classes.Eq MagicHaskeller.CoreLang.Dictionary
+ MagicHaskeller.CoreLang: instance GHC.Classes.Ord MagicHaskeller.CoreLang.CoreExpr
+ MagicHaskeller.CoreLang: instance GHC.Classes.Ord MagicHaskeller.CoreLang.Dictionary
+ MagicHaskeller.CoreLang: instance GHC.Read.Read Language.Haskell.TH.Syntax.Exp
+ MagicHaskeller.CoreLang: instance GHC.Show.Show MagicHaskeller.CoreLang.CoreExpr
+ MagicHaskeller.CoreLang: instance GHC.Show.Show MagicHaskeller.CoreLang.Dictionary
+ MagicHaskeller.CoreLang: isALeaf :: CoreExpr -> Bool
+ MagicHaskeller.CoreLang: isAPrimitiveCombinator :: CoreExpr -> Bool
+ MagicHaskeller.CoreLang: isAbsent :: Int -> CoreExpr -> Bool
+ MagicHaskeller.CoreLang: isa :: Integer -> CoreExpr -> Integer
+ MagicHaskeller.CoreLang: lenDefaultPrimitives :: Integer
+ MagicHaskeller.CoreLang: liftFun :: Int8 -> CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: lightBeta :: CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: listToArray :: (Integral i, Ix i) => [a] -> Array i a
+ MagicHaskeller.CoreLang: napply :: Integral i => i -> (a -> a) -> a -> a
+ MagicHaskeller.CoreLang: newtype Dictionary
+ MagicHaskeller.CoreLang: newtype HValue
+ MagicHaskeller.CoreLang: nlift :: Int8 -> Int8 -> CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: nliftInt :: Int8 -> Int8 -> Int8 -> Int8
+ MagicHaskeller.CoreLang: parentsOfLeaves :: CoreExpr -> [CoreExpr]
+ MagicHaskeller.CoreLang: pol :: Integral i => i -> CoreExpr -> [CoreExpr]
+ MagicHaskeller.CoreLang: primitiveToDynamic :: TyConLib -> Primitive -> Dynamic
+ MagicHaskeller.CoreLang: primitivesToTCL :: [Primitive] -> TyConLib
+ MagicHaskeller.CoreLang: primitivesToVL :: TyConLib -> [Primitive] -> VarLib
+ MagicHaskeller.CoreLang: prioritiesToVPL :: [Int] -> VarPriorityLib
+ MagicHaskeller.CoreLang: removeAbsents :: CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: replace :: Int8 -> Int8 -> CoreExpr -> CoreExpr
+ MagicHaskeller.CoreLang: stripByd_ :: [Char] -> [Char]
+ MagicHaskeller.CoreLang: sub :: Integral i => i -> CoreExpr -> [CoreExpr]
+ MagicHaskeller.CoreLang: subexprs :: CoreExpr -> [CoreExpr]
+ MagicHaskeller.CoreLang: type Primitive = (HValue, Exp, Type)
+ MagicHaskeller.CoreLang: type Var = Int16
+ MagicHaskeller.CoreLang: type VarLib = Array Var Dynamic
+ MagicHaskeller.CoreLang: type VarPriorityLib = Array Var Int
+ MagicHaskeller.CoreLang: unboundXs :: (Num a, Bits a) => Int8 -> CoreExpr -> a
+ MagicHaskeller.Instantiate: argTypeToRandoms :: TyConLib -> CmpMap -> Maps -> Type -> Maybe [Dynamic]
+ MagicHaskeller.Instantiate: compareRealFloat :: (NearEq a, RealFloat a) => a -> a -> Ordering
+ MagicHaskeller.Instantiate: curryDyn :: Dynamic -> Type -> Dynamic -> Dynamic
+ MagicHaskeller.Instantiate: mkCurry :: TyConLib -> Dynamic
+ MagicHaskeller.Instantiate: mkRandTrie :: [Int] -> TyConLib -> Generator -> RTrie
+ MagicHaskeller.Instantiate: mkUncurry :: TyConLib -> Dynamic
+ MagicHaskeller.Instantiate: type PackedOrd = Dynamic -> Dynamic -> Ordering
+ MagicHaskeller.Instantiate: type RTrie = (CmpMap, Maps, MemoMap, Tries, MapType (Dynamic, Dynamic))
+ MagicHaskeller.Instantiate: typeToArb :: ArbMap -> CoarbMap -> Type -> Maybe Dynamic
+ MagicHaskeller.Instantiate: typeToCompare :: TyConLib -> CmpMap -> Type -> Maybe (Dynamic -> Dynamic -> Ordering)
+ MagicHaskeller.Instantiate: typeToOrd :: CmpMap -> Type -> Maybe Dynamic
+ MagicHaskeller.Instantiate: typeToRandomsOrd :: TyConLib -> RTrie -> Type -> Order
+ MagicHaskeller.Instantiate: typeToRandomsOrdDM :: [Int] -> TyConLib -> RTrie -> Type -> Maybe ([[Dynamic]], PackedOrd)
+ MagicHaskeller.Instantiate: uncurryDyn :: Dynamic -> Type -> Dynamic -> Dynamic
+ MagicHaskeller.Instantiate: uncurryTy :: TyConLib -> Type -> Type
+ MagicHaskeller.Minimal: simpleEF :: (Filtrable a, Typeable a) => ProgGenSF -> Bool -> [[(CoreExpr, a)]]
+ MagicHaskeller.PolyDynamic: Dynamic :: Type -> (forall a. a) -> Exp -> Dynamic
+ MagicHaskeller.PolyDynamic: [dynExp] :: Dynamic -> Exp
+ MagicHaskeller.PolyDynamic: [dynType] :: Dynamic -> Type
+ MagicHaskeller.PolyDynamic: [unsafeFromDyn] :: Dynamic -> forall a. a
+ MagicHaskeller.PolyDynamic: aLittleSafeFromDyn :: Type -> Dynamic -> a
+ MagicHaskeller.PolyDynamic: data Dynamic
+ MagicHaskeller.PolyDynamic: dynApp :: Dynamic -> Dynamic -> Dynamic
+ MagicHaskeller.PolyDynamic: dynAppErr :: String -> Dynamic -> Dynamic -> Dynamic
+ MagicHaskeller.PolyDynamic: dynApply :: Dynamic -> Dynamic -> Maybe Dynamic
+ MagicHaskeller.PolyDynamic: dynamic :: ExpQ -> ExpQ -> ExpQ
+ MagicHaskeller.PolyDynamic: dynamicH :: ExpQ -> Name -> TypeQ -> ExpQ
+ MagicHaskeller.PolyDynamic: fromDyn :: Typeable a => TyConLib -> Dynamic -> a -> a
+ MagicHaskeller.PolyDynamic: fromDynamic :: MonadPlus m => Type -> Dynamic -> m a
+ MagicHaskeller.PolyDynamic: fromPD :: a -> a
+ MagicHaskeller.PolyDynamic: infixl 9 `dynApp`
+ MagicHaskeller.PolyDynamic: instance GHC.Show.Show MagicHaskeller.PolyDynamic.Dynamic
+ MagicHaskeller.PolyDynamic: unsafeToDyn :: TyConLib -> Type -> a -> Exp -> Dynamic
+ MagicHaskeller.ProgramGenerator: Cmn :: Opt () -> TyConLib -> VarLib -> VarLib -> VarPriorityLib -> RTrie -> Common
+ MagicHaskeller.ProgramGenerator: [opt] :: Common -> Opt ()
+ MagicHaskeller.ProgramGenerator: [pvl] :: Common -> VarLib
+ MagicHaskeller.ProgramGenerator: [rt] :: Common -> RTrie
+ MagicHaskeller.ProgramGenerator: [tcl] :: Common -> TyConLib
+ MagicHaskeller.ProgramGenerator: [vl] :: Common -> VarLib
+ MagicHaskeller.ProgramGenerator: [vpl] :: Common -> VarPriorityLib
+ MagicHaskeller.ProgramGenerator: annotateTCEs :: Typed [CoreExpr] -> Prim
+ MagicHaskeller.ProgramGenerator: anyRec :: Type -> [CoreExpr] -> Bool
+ MagicHaskeller.ProgramGenerator: applyDo :: (Functor m, Monad m) => ([Type] -> Type -> PriorSubsts m a) -> [Type] -> Type -> PriorSubsts m a
+ MagicHaskeller.ProgramGenerator: belowIsUsed :: Int8 -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: ceq :: CoreExpr -> Type -> [CoreExpr] -> Bool
+ MagicHaskeller.ProgramGenerator: class WithCommon a => ProgramGenerator a where mkTrie cmn c t = mkTrieOpt cmn c t t mkTrieOpt cmn c _ t = mkTrie cmn c t matchingPrograms ty memodeb = unifyingPrograms (quantify ty) memodeb matchingProgramsWOAbsents ty memodeb = mapDepth (filter (not . isAbsent (getArity ty) . toCE)) $ matchingPrograms ty memodeb
+ MagicHaskeller.ProgramGenerator: class WithCommon a => ProgramGeneratorIO a where mkTrieIO cmn c t = mkTrieOptIO cmn c t t mkTrieOptIO cmn c _ t = mkTrieIO cmn c t matchingProgramsIO ty memodeb = unifyingProgramsIO (quantify ty) memodeb
+ MagicHaskeller.ProgramGenerator: class WithCommon a
+ MagicHaskeller.ProgramGenerator: combs :: (Num t1, Eq t1) => t1 -> [t] -> [[t]]
+ MagicHaskeller.ProgramGenerator: constEq :: Type -> [CoreExpr] -> Bool
+ MagicHaskeller.ProgramGenerator: constRec :: Int8 -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: data Common
+ MagicHaskeller.ProgramGenerator: extractCommon :: WithCommon a => a -> Common
+ MagicHaskeller.ProgramGenerator: extractRTrie :: WithCommon a => a -> RTrie
+ MagicHaskeller.ProgramGenerator: extractTCL :: WithCommon a => a -> TyConLib
+ MagicHaskeller.ProgramGenerator: extractVL :: WithCommon a => a -> VarLib
+ MagicHaskeller.ProgramGenerator: fap :: (Expression r, Monad m, Monad m1, Foldable t) => (t1 -> m1 (m r)) -> t t1 -> m r -> m1 (m r)
+ MagicHaskeller.ProgramGenerator: filtExprs :: Expression e => Bool -> Type -> Type -> [e] -> [e]
+ MagicHaskeller.ProgramGenerator: filterExprs :: Expression e => Type -> Type -> [e] -> [e]
+ MagicHaskeller.ProgramGenerator: fromAssumptions :: (Search m, Expression e) => Common -> Int -> (Type -> PriorSubsts m [e]) -> (Type -> Type -> PriorSubsts m ()) -> Type -> [Type] -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: fromAvail :: [Type] -> [(Int8, (Int, [Type], Type))]
+ MagicHaskeller.ProgramGenerator: funApSub :: (Search m, Expression e) => (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> Type -> [e] -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: funApSubOp :: (Monad m, Monad m1) => (r -> a2 -> r) -> (Type -> m1 (m a2)) -> (Type -> m1 (m a2)) -> (Type -> m1 (m a2)) -> Type -> m r -> m1 (m r)
+ MagicHaskeller.ProgramGenerator: gae :: CoreExpr -> [CoreExpr] -> [CoreExpr]
+ MagicHaskeller.ProgramGenerator: getArgExprs :: CoreExpr -> [CoreExpr]
+ MagicHaskeller.ProgramGenerator: hit :: Type -> [Type] -> Bool
+ MagicHaskeller.ProgramGenerator: includesStrictArg :: [CoreExpr] -> Bool
+ MagicHaskeller.ProgramGenerator: initCommon :: Options -> [Primitive] -> Common
+ MagicHaskeller.ProgramGenerator: isClosed :: CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: isClosed' :: Int8 -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: isConstrExpr :: CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: isId :: CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: isId' :: Int8 -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: isId'' :: Int8 -> Int8 -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: isUsed :: Int8 -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: mapAndFoldM :: Monad m => (t2 -> t1 -> t2) -> t2 -> (t -> m t1) -> [t] -> m t2
+ MagicHaskeller.ProgramGenerator: mapSum :: (MonadPlus m, Delay m) => (a -> m b) -> [[a]] -> m b
+ MagicHaskeller.ProgramGenerator: mapsub :: Int8 -> CoreExpr -> CoreExpr
+ MagicHaskeller.ProgramGenerator: matchAssumptions :: (Functor m, MonadPlus m, Expression e) => Common -> Int -> Type -> [Type] -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: matchingPrograms, matchingProgramsWOAbsents, unifyingPrograms :: (ProgramGenerator a, Search m) => Type -> a -> m AnnExpr
+ MagicHaskeller.ProgramGenerator: matchingProgramsIO, unifyingProgramsIO :: ProgramGeneratorIO a => Type -> a -> RecompT IO AnnExpr
+ MagicHaskeller.ProgramGenerator: mguAssumptions :: (Functor m, MonadPlus m) => Type -> [Type] -> PriorSubsts m [CoreExpr]
+ MagicHaskeller.ProgramGenerator: mguAssumptions' :: MonadPlus m => [Type] -> Type -> PriorSubsts m [CoreExpr]
+ MagicHaskeller.ProgramGenerator: mguAssumptions_ :: (Functor m, MonadPlus m) => Type -> [Type] -> PriorSubsts m ()
+ MagicHaskeller.ProgramGenerator: mguAssumptions_' :: MonadPlus m => [Type] -> Type -> PriorSubsts m ()
+ MagicHaskeller.ProgramGenerator: mkCommon :: Options -> [Primitive] -> [Primitive] -> [Int] -> Common
+ MagicHaskeller.ProgramGenerator: mkRetty :: Type -> (Type, Type)
+ MagicHaskeller.ProgramGenerator: mkSubst :: Search m => Int -> TyVar -> Type -> PriorSubsts m Int
+ MagicHaskeller.ProgramGenerator: mkSubsts :: Search m => Int -> TyVar -> Type -> PriorSubsts m Int
+ MagicHaskeller.ProgramGenerator: mkTrie :: ProgramGenerator a => Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> a
+ MagicHaskeller.ProgramGenerator: mkTrieIO :: ProgramGeneratorIO a => Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> IO a
+ MagicHaskeller.ProgramGenerator: mkTrieOpt :: ProgramGenerator a => Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a
+ MagicHaskeller.ProgramGenerator: mkTrieOptIO :: ProgramGeneratorIO a => Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> IO a
+ MagicHaskeller.ProgramGenerator: orderedAndUsedArgs :: Type -> Bool
+ MagicHaskeller.ProgramGenerator: recHead :: Type -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: recursive :: Type -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: reducer :: Common -> CoreExpr -> Dynamic
+ MagicHaskeller.ProgramGenerator: reorganizer_ :: ([Type] -> a) -> [Type] -> a
+ MagicHaskeller.ProgramGenerator: retGen :: (Search m, Expression e) => Common -> Int -> (Type -> Type -> [e] -> [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> Type -> Prim -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: retGen' :: (Integral i, Expression e, Search n) => (Type -> t1 -> PriorSubsts n b) -> Common -> i -> (Type -> Type -> [e] -> t1) -> (Type -> PriorSubsts n [e]) -> (Type -> PriorSubsts n [e]) -> (Type -> PriorSubsts n [e]) -> Type -> (Int, Int, t, TyVar, Typed [CoreExpr]) -> PriorSubsts n b
+ MagicHaskeller.ProgramGenerator: retGenOrd :: (Search m, Expression e) => Common -> Int -> (Type -> Type -> [e] -> [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> Type -> Prim -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: retGenTV0 :: (Integral i, Integral j, Expression e, Search n) => Common -> i -> (Type -> Type -> [e] -> b) -> (Type -> PriorSubsts n [e]) -> (Type -> PriorSubsts n [e]) -> (Type -> PriorSubsts n [e]) -> Type -> (j, j, t, TyVar, Typed [CoreExpr]) -> PriorSubsts n b
+ MagicHaskeller.ProgramGenerator: retGenTV1 :: (Search m, Expression e) => Common -> Int -> (Type -> Type -> [e] -> [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> Type -> Prim -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: retMono :: (Search m, Expression e) => Common -> Int -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m ()) -> (Int8, (Int, [Type], Type)) -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: retPrimMono :: (Search m, Expression e) => Common -> Int -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> PriorSubsts m [e]) -> (Type -> Type -> PriorSubsts m ()) -> Type -> Prim -> PriorSubsts m [e]
+ MagicHaskeller.ProgramGenerator: retSameVal :: Type -> [CoreExpr] -> Bool
+ MagicHaskeller.ProgramGenerator: retVal :: Type -> CoreExpr -> CoreExpr
+ MagicHaskeller.ProgramGenerator: retsTVar :: (t3, t2, Type, t1, t) -> Bool
+ MagicHaskeller.ProgramGenerator: returnsAtoA :: Type -> Bool
+ MagicHaskeller.ProgramGenerator: returnsId :: Type -> CoreExpr -> Bool
+ MagicHaskeller.ProgramGenerator: rsv :: Type -> [CoreExpr] -> Bool
+ MagicHaskeller.ProgramGenerator: rsv' :: CoreExpr -> Type -> [CoreExpr] -> Bool
+ MagicHaskeller.ProgramGenerator: rv :: Type -> Int8 -> CoreExpr -> CoreExpr
+ MagicHaskeller.ProgramGenerator: splitPrims :: [Typed [CoreExpr]] -> ([Prim], [Prim])
+ MagicHaskeller.ProgramGenerator: splitPrimss :: [[Typed [CoreExpr]]] -> ([[Prim]], [[Prim]])
+ MagicHaskeller.ProgramGenerator: tails :: [t] -> [[t]]
+ MagicHaskeller.ProgramGenerator: type Options = Opt [[Primitive]]
+ MagicHaskeller.ProgramGenerator: type Prim = (Int, Int, Type, TyVar, Typed [CoreExpr])
+ MagicHaskeller.ProgramGenerator: updateCommon :: [Dynamic] -> [Dynamic] -> [Int] -> Common -> Common
+ MagicHaskeller.ProgramGenerator: usedArg :: TyVar -> Type -> Bool
+ MagicHaskeller.ProgramGenerator: wind :: (a -> a) -> ([Type] -> Type -> a) -> [Type] -> Type -> a
+ MagicHaskeller.ProgramGenerator: wind_ :: ([Type] -> Type -> a) -> [Type] -> Type -> a
+ MagicHaskeller.TICE: ceToDynamic :: TyConLib -> VarLib -> CoreExpr -> Dynamic
+ MagicHaskeller.TICE: tiCE :: (Functor m, MonadPlus m) => TyConLib -> VarLib -> CoreExpr -> m Type
+ MagicHaskeller.TICE: tiEx :: (MonadPlus m, IArray a Dynamic) => t -> a Var Dynamic -> CoreExpr -> PriorSubsts m Type
+ MagicHaskeller.TICE: type TI = PriorSubsts Maybe
- MagicHaskeller: everyF :: (Typeable a, Filtrable a) => Opt b -> Every a -> Every a
+ MagicHaskeller: everyF :: (Typeable a, Filtrable a) => Opt b -> [[(e, a)]] -> [[(e, a)]]
- MagicHaskeller: filterThenF :: (Filtrable a, Typeable * a) => (a -> Bool) -> Every a -> IO (Every a)
+ MagicHaskeller: filterThenF :: (Filtrable a, Typeable * a) => (a -> Bool) -> Every a -> IO [[(Exp, a)]]
- MagicHaskeller: fpartialIO :: Typeable a => Maybe Int -> (a -> Bool) -> [((Exp, a), (Exp, a))] -> IO [(Exp, a)]
+ MagicHaskeller: fpartialIO :: Typeable a => Maybe Int -> (a -> Bool) -> [((e, a), (e, a))] -> IO [(e, a)]
- MagicHaskeller: mkPGXOpts :: (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> t) -> Options -> [Primitive] -> [(Primitive, Primitive)] -> [[Primitive]] -> [[(Primitive, Primitive)]] -> t
+ MagicHaskeller: mkPGXOpts :: (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a) -> Options -> [Primitive] -> [(Primitive, Primitive)] -> [[Primitive]] -> [[(Primitive, Primitive)]] -> a

Files

LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2004-2012, Susumu Katayama. +Copyright (c) 2004-, Susumu Katayama. All rights reserved.  Redistribution and use in source and binary forms, with or without 
MagicHaskeller.cabal view
@@ -1,5 +1,5 @@ Name:            MagicHaskeller-Version:         0.9.6.6.1+Version:         0.9.6.7 Cabal-Version:   >= 1.8 License:         BSD3 License-file:	 LICENSE @@ -45,16 +45,16 @@  Library   Build-depends:   time, template-haskell, base >= 4 && < 5, syb, containers, array, random, directory, bytestring, mtl, html, pretty, hashable-  Exposed-modules: MagicHaskeller, Control.Monad.Search.Combinatorial, Control.Monad.Search.Best, MagicHaskeller.ProgGen, MagicHaskeller.ProgGenSF,-                   MagicHaskeller.ProgGenSFIORef, MagicHaskeller.Expression, MagicHaskeller.LibTH, MagicHaskeller.Analytical, MagicHaskeller.Options, MagicHaskeller.Classification, MagicHaskeller.GetTime, MagicHaskeller.Minimal, MagicHaskeller.IOGenerator, MagicHaskeller.FastRatio, MagicHaskeller.LibExcel, MagicHaskeller.Individual+  Exposed-modules: MagicHaskeller, Control.Monad.Search.Combinatorial, Control.Monad.Search.Best, MagicHaskeller.ProgramGenerator, MagicHaskeller.ProgGen, MagicHaskeller.ProgGenSF,+                   MagicHaskeller.ProgGenSFIORef, MagicHaskeller.Expression, MagicHaskeller.LibTH, MagicHaskeller.Analytical, MagicHaskeller.Options, MagicHaskeller.Classification, MagicHaskeller.GetTime, MagicHaskeller.Minimal, MagicHaskeller.IOGenerator, MagicHaskeller.FastRatio, MagicHaskeller.LibExcel, MagicHaskeller.CoreLang, MagicHaskeller.Individual, MagicHaskeller.PolyDynamic, MagicHaskeller.Instantiate, MagicHaskeller.TICE   Other-modules:   MagicHaskeller.MemoToFiles, MagicHaskeller.ShortString,                     MagicHaskeller.Types, MagicHaskeller.PriorSubsts, Data.Memo, MagicHaskeller.ClassifyTr,-                   MagicHaskeller.CoreLang, MagicHaskeller.DebMT, MagicHaskeller.TyConLib,-                   MagicHaskeller.FakeDynamic, MagicHaskeller.PolyDynamic, MagicHaskeller.ReadTypeRep,+                   MagicHaskeller.DebMT, MagicHaskeller.TyConLib,+                   MagicHaskeller.FakeDynamic, MagicHaskeller.ReadTypeRep,                    MagicHaskeller.ReadTHType, MagicHaskeller.TimeOut, MagicHaskeller.Execute, MagicHaskeller.T10,-                   MagicHaskeller.Instantiate, MagicHaskeller.Classify, MagicHaskeller.MHTH, MagicHaskeller.MyCheck,+                   MagicHaskeller.Classify, MagicHaskeller.MHTH, MagicHaskeller.MyCheck,                    MagicHaskeller.ExprStaged, MagicHaskeller.Combinators, MagicHaskeller.ReadDynamic,-                   MagicHaskeller.MyDynamic, MagicHaskeller.ClassifyDM, MagicHaskeller.ProgramGenerator, MagicHaskeller.Analytical.FMExpr,+                   MagicHaskeller.MyDynamic, MagicHaskeller.ClassifyDM, MagicHaskeller.Analytical.FMExpr,                    MagicHaskeller.Analytical.Parser, MagicHaskeller.Analytical.Syntax, MagicHaskeller.Analytical.UniT, MagicHaskeller.Analytical.Synthesize,                    MagicHaskeller.ExpToHtml, MagicHaskeller.FMType, MagicHaskeller.NearEq, MagicHaskeller.ClassLib, MagicHaskeller.LibExcelStaged,                    Paths_MagicHaskeller, MagicHaskeller.VersionInfo
MagicHaskeller.lhs view
@@ -34,7 +34,6 @@        --   you may write @'setPrimitives' $('p' [| \'A\' |])@,        --   while you have to write @'setPrimitives' $('p' [| [] :: [a] |])@ instead of @'setPrimitives' $('p' [| [] |])@.        p, setPrimitives, mkPG, mkPGSF, setPG,-       --   'mkPG' and 'setPG' used to be called @mkMemo@ and @setMemo@ respectively (because the main ingredient of a program generator is a memoization table). というコメントはそぐわなくなってきたので止める.         -- | Older versions prohibited data types holding functions such as @[a->b]@, @(Int->Char, Bool)@, etc. just for efficiency reasons.        --   They are still available if you use 'mkMemo' and 'mkMemoSF' instead of 'mkPG' and 'mkPGSF' respectively, though actually this limitation does not affect the efficiency a lot.@@ -55,7 +54,7 @@        --   second element the second greatest priority, and so on.        mkPGX, mkPGXOpt,        -       mkPGXOpts,+       mkPGXOpts, updatePGXOpts, updatePGXOptsFilt,        Options, Opt(..), options, MemoType(..),         -- | These are versions for 'ProgramGeneratorIO'.@@ -106,7 +105,7 @@         -- ** Expression generators        -- | These functions generate all the expressions that have the type you provide.-       getEverything, everything, everythingM, everythingIO, unifyable, matching, getEverythingF, everythingF, unifyableF, matchingF,+       getEverything, everything, everythingM, everythingIO, unifyable, matching, getEverythingF, everythingF, unifyableF, matchingF, everyACE,         -- ** Utility to filter out equivalent expressions        everyF,@@ -125,7 +124,7 @@        fpartialParIO, mapParIO, #endif        -- other stuff which will not be documented by Haddock-       unsafeCoerce#, {- unifyablePos, -} exprToTHExp, trToTHType, printAny, p1, Filtrable, zipAppend, mapIO, fpIO, fIO, fpartial, fpartialIO, etup, mkCurriedDecls+       unsafeCoerce#, {- unifyablePos, -} exprToTHExp, trToTHType, printAny, p1, Filtrable, zipAppend, mapIO, fpIO, fIO, fpartial, fpartialIO, ftotalIO, etup, mkCurriedDecls       ) where  import Data.Generics(everywhere, mkT, Data)@@ -139,7 +138,9 @@ import MagicHaskeller.TyConLib import qualified Data.Map as Map import Data.Char+import Control.Monad(mplus) + import MagicHaskeller.Types as Types  import MagicHaskeller.T10(mergesortWithBy)@@ -172,11 +173,12 @@ import qualified MagicHaskeller.PolyDynamic as PD import MagicHaskeller.Expression import MagicHaskeller.Classify+import MagicHaskeller.ClassifyDM(filterDM) import MagicHaskeller.Classification(unsafeRandomTestFilter, Filtrable) import MagicHaskeller.Instantiate(mkRandTrie) import MagicHaskeller.MemoToFiles(MemoType(..)) -import Data.List(genericLength)+import Data.List(genericLength, transpose)  -- import Control.Concurrent.ParallelIO(parallelInterleaved) import MagicHaskeller.DebMT(interleaveActions)@@ -189,6 +191,7 @@ import Control.Concurrent.MVar import Control.Concurrent +import Debug.Trace \end{code}  \begin{code}@@ -343,18 +346,46 @@ -}  primitivesp :: TyConLib -> [[Primitive]] -> [[Typed [CoreExpr]]]-primitivesp tcl pss+primitivesp tcl pss = dynamicsp (map (map (primitiveToDynamic tcl)) pss)+dynamicsp :: [[PD.Dynamic]] -> [[Typed [CoreExpr]]]+dynamicsp pss     = let ixs = scanl (+) 0 $ map genericLength pss       in zipWith (\ix -> mergesortWithBy (\(x:::t) (y:::_) -> (x++y):::t) (\(_:::t) (_:::u) -> compare t u) .-                         zipWith (\ n (_,e,ty) -> [if expIsAConstr e then PrimCon n else Primitive n] ::: toCxt (numCxts e) (thTypeToType tcl ty)) [ix..]) ixs pss+                         zipWith (\ n d -> [if expIsAConstr $ PD.dynExp d then PrimCon n else Primitive n] ::: toCxt (numCxts $ PD.dynExp d) (PD.dynType d)) [ix..]) ixs pss ++++++-- うまくいかん場合は map (filtTMxAEs cmn) . の部分を取り除いてやってみるべし.+++filtTCEsss :: Common -> Int -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]]+filtTCEsss cmn depth = tMxAEsToTCEsss depth . map (filtTMxAEs cmn) . tMxCEsToTMxAEs (reducer cmn) . tCEsssToTMxCEs  -- ProgramGenerator.reducer :: Common -> CoreExpr -> Dynamic はVarLibの情報をCommonから抽出する.+-- filtTCEsss cmn depth = tMxAEsToTCEsss depth . {- map (filtTMxAEs cmn) . -} tMxCEsToTMxAEs (reducer cmn) . tCEsssToTMxCEs  -- ProgramGenerator.reducer :: Common -> CoreExpr -> Dynamic はVarLibの情報をCommonから抽出する.+-- filtTCEsss cmn depth = id -- これはさすがにうまく行く.+-- filtTCEsss cmn depth = tMxAEsToTCEsss depth . tCEsssToTMxCEs -- depthが十分ならうまく行く.+tCEsssToTMxCEs :: [[Typed [CoreExpr]]] -> [Typed (Matrix CoreExpr)]+tCEsssToTMxCEs = mergesortWithBy (\(x:::t) (y:::_) -> (x `mplus` y):::t) (\(_:::t) (_:::u) -> compare t u) . -- dynamicspにも同じ部分があるので名前をつけるべき.+                 concat .+                 zipWith (\d ts -> map (fmap (\ces -> Mx $ replicate d [] ++ ces : repeat [])) ts) [0..]+tMxCEsToTMxAEs :: (CoreExpr->Dynamic) -> [Typed (Matrix CoreExpr)] -> [Typed (Matrix AnnExpr)]+tMxCEsToTMxAEs reduce = map (fmap (fmap (toAnnExpr reduce)))+filtTMxAEs :: Common -> Typed (Matrix AnnExpr) -> Typed (Matrix AnnExpr)+filtTMxAEs cmn (m ::: ty) = fromDB (MagicHaskeller.ClassifyDM.filterDM cmn ty (fromMx m)) ::: ty+tMxAEsToTCEsss :: Expression e => Int -> [Typed (Matrix e)] -> [[Typed [CoreExpr]]]+tMxAEsToTCEsss dep tmxaes = map (filter (not . null . typee)) $ transpose [ [ map toCE aes ::: ty | aes <- take dep aess ] | Mx aess ::: ty <- tmxaes ]+++ -- See if the argument is a constructor expression. expIsAConstr (ConE _)  = True expIsAConstr (LitE _)  = True expIsAConstr (ListE _) = True expIsAConstr (TupE  _) = True expIsAConstr (AppE e _) = expIsAConstr e-expIsAConstr (InfixE (Just _) (ConE _) (Just _)) = True+expIsAConstr (InfixE _ (ConE _) _) = True expIsAConstr _ = False  numCxts (VarE nm) = case nameBase nm of 'b':'y':d:'_':_    | isDigit d -> digitToInt d@@ -365,9 +396,10 @@ toCxt n (t :-> u) = t :=> toCxt (n-1) u  primitivesc :: TyConLib -> [Primitive] -> [Typed [CoreExpr]]-primitivesc tcl ps = mergesortWithBy (\(x:::t) (y:::_) -> (x++y):::t) (\(_:::t) (_:::u) -> compare t u) $-                           map (\ (HV x,e,thty) -> let ty = thTypeToType tcl thty-                                                 in [Context $ Dict $ PD.unsafeToDyn tcl ty x e] ::: {- toCxt (numCxts e) -} ty) ps+primitivesc tcl ps = dynamicsc (map (primitiveToDynamic tcl) ps)+dynamicsc :: [PD.Dynamic] -> [Typed [CoreExpr]]+dynamicsc ps = mergesortWithBy (\(x:::t) (y:::_) -> (x++y):::t) (\(_:::t) (_:::u) -> compare t u) $+                           map (\ dyn -> [Context $ Dict dyn] ::: {- toCxt (numCxts e) -} PD.dynType dyn) ps  mkPG :: ProgramGenerator pg => [Primitive] -> pg mkPG   = mkPGX [] . (:[])@@ -380,8 +412,9 @@ mkMemo :: ProgramGenerator pg => [Primitive] -> pg mkMemo = mkPG' False [] . (:[]) mkPG' :: ProgramGenerator pg => Bool -> [Primitive] -> [[Primitive]] -> pg-mkPG' cont classes tups = case mkCommon options{contain=cont} totals totals of cmn -> mkTrie cmn (primitivesc (tcl cmn) classes) (primitivesp (tcl cmn) tups)+mkPG' cont classes tups = case mkCommon options{contain=cont} totals totals depths of cmn -> mkTrie cmn (primitivesc (tcl cmn) classes) (primitivesp (tcl cmn) tups)         where totals = concat tups ++ classes+              depths = mkDepths tups ++ map (const 0) classes  -- | 'mkPGSF' and 'mkMemoSF' are provided mainly for backward compatibility. These functions are defined only for the 'ProgramGenerator's whose names end with @SF@ (i.e., generators with synergetic filtration). --   For such generators, they are defined as:@@ -418,7 +451,19 @@ mkPGXOptIO :: ProgramGeneratorIO pg => Options -> [Primitive] -> [(Primitive,Primitive)] -> [[Primitive]] -> [[(Primitive,Primitive)]] -> IO pg mkPGXOptIO = mkPGXOpts mkTrieOptIO -mkPGXOpts mkt opt classes partclasses prims partprims = case mkCommon opt (concat totalss ++ totalclss) (concat partialss ++ partialclss) of cmn -> mkt cmn (primitivesc (tcl cmn) totalclss) (primitivesp (tcl cmn) primsOpt) (primitivesp (tcl cmn) totalss)+mkPGXOpts :: (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a)+          -> Options -> [Primitive] -> [(Primitive,Primitive)] -> [[Primitive]] -> [[(Primitive,Primitive)]] -> a+mkPGXOpts mkt opt classes partclasses prims partprims+    = let cmn = initCommon opt (classes ++ concat prims ++ map fst (partclasses ++ concat partprims))+          ptd = primitiveToDynamic (tcl cmn)+      in updatePGXOpts mkt (primopt opt)+                           [ ptd cl | cl <- classes ]+                           [ (ptd tot, ptd part) | (tot, part) <- partclasses ]+                           [ [ ptd p | p <- ps ] | ps <- prims ]+                           [ [ (ptd tot, ptd part) | (tot, part) <- pps ] | pps <- partprims ]+                           cmn+{-+mkPGXOpts mkt opt classes partclasses prims partprims = case mkCommon opt (concat totalss ++ totalclss) (concat partialss ++ partialclss) (mkDepths totalss ++ map (const 0) totalclss) of cmn -> mkt cmn (primitivesc (tcl cmn) totalclss) (primitivesp (tcl cmn) primsOpt) (primitivesp (tcl cmn) totalss)     where primsOpt   = case primopt opt of Nothing -> prims                                            Just po -> po           (tot, part) = unzip $ map unzip partprims@@ -427,7 +472,29 @@           (totc,partc)= unzip partclasses           totalclss   = classes ++ totc           partialclss = classes ++ partc+-}+updatePGXOpts :: (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a)+              -> Maybe [[Primitive]] -> [PD.Dynamic] -> [(PD.Dynamic,PD.Dynamic)] -> [[PD.Dynamic]] -> [[(PD.Dynamic,PD.Dynamic)]] -> Common -> a+updatePGXOpts = uPGXO (const dynamicsp)+updatePGXOptsFilt :: Int -> (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a)+              -> Maybe [[Primitive]] -> [PD.Dynamic] -> [(PD.Dynamic,PD.Dynamic)] -> [[PD.Dynamic]] -> [[(PD.Dynamic,PD.Dynamic)]] -> Common -> a+updatePGXOptsFilt dep = uPGXO (\cmn dynss -> -- trace ("dynamicsp dynss = "++show (dynamicsp dynss) ++ "\nand the result is "++show (filtTCEsss cmn dep $ dynamicsp dynss)) $+                                             filtTCEsss cmn dep $ dynamicsp dynss)+uPGXO :: (Common -> [[PD.Dynamic]] -> [[Typed [CoreExpr]]]) ->+               (Common -> [Typed [CoreExpr]] -> [[Typed [CoreExpr]]] -> [[Typed [CoreExpr]]] -> a)+              -> Maybe [[Primitive]] -> [PD.Dynamic] -> [(PD.Dynamic,PD.Dynamic)] -> [[PD.Dynamic]] -> [[(PD.Dynamic,PD.Dynamic)]] -> Common -> a+uPGXO dyp mkt mbpo classes partclasses prims partprims c = case updateCommon (concat totalss ++ totalclss) (concat partialss ++ partialclss) (mkDepths totalss ++ map (const 0) totalclss) c of cmn -> mkt cmn (dynamicsc totalclss) (alt cmn) (dyp cmn totalss) -- dyp c? vlをうまく同期させねば.+    where alt cmn = case mbpo of Nothing -> dyp cmn totalss -- dyp c?+                                 Just po -> primitivesp (tcl c) po+          (tot, part) = unzip $ map unzip partprims+          totalss     = zipAppend prims tot+          partialss   = zipAppend prims part+          (totc,partc)= unzip partclasses+          totalclss   = classes ++ totc+          partialclss = classes ++ partc +mkDepths :: [[a]] -> [Int]+mkDepths = concat . zipWith (\i xs -> map (const i) xs) [0..]  setPG :: ProgGen -> IO () setPG = writeIORef refmemodeb@@ -528,12 +595,17 @@                   -> Every a everything  memodeb = et undefined  memodeb (mxExprToEvery   "MagicHaskeller.everything: type mismatch" memodeb) everythingF memodeb = et undefined  memodeb (mxExprFiltEvery "MagicHaskeller.everythingF: type mismatch" memodeb)+everyACE :: (ProgramGenerator pg, Typeable a) =>+                     pg   -- ^ program generator+                  -> Bool -- ^ whether to include functions with unused arguments+                  -> [[(CoreExpr,a)]]+everyACE  memodeb = et undefined  memodeb (mxExprToACE   "MagicHaskeller.everyACE: type mismatch" memodeb) et :: (ProgramGenerator pg, Typeable a) =>                      a    -- ^ dummy argument                   -> pg   -- ^ program generator-                  -> (Types.Type -> Matrix AnnExpr -> Matrix (Exp, a))+                  -> (Types.Type -> Matrix AnnExpr -> Matrix (e,a))                   -> Bool -- ^ whether to include functions with unused arguments-                  -> Every a+                  -> [[(e,a)]] et dmy memodeb filt withAbsents = unMx $ filt ty $ matchPs withAbsents ty memodeb     where ty = trToType (extractTCL memodeb) (typeOf dmy) noFilter :: ProgramGenerator pg => pg -> Types.Type -> a -> a@@ -545,12 +617,17 @@ mxExprToEvery :: (Expression e, Search m, WithCommon pg, Typeable a) => String -> pg -> Types.Type -> m e -> m (Exp, a) mxExprToEvery   msg memodeb _  = fmap (unwrapAE (extractVL memodeb) msg memodeb . toAnnExpr (reducer $ extractCommon memodeb)) mxExprFiltEvery :: (Expression e, FiltrableBF m, WithCommon pg, Typeable a) => String -> pg -> Types.Type -> m e -> m (Exp, a)-mxExprFiltEvery msg memodeb ty = fmap (unwrapAE (extractVL memodeb) msg memodeb) . randomTestFilter memodeb ty . fmap (toAnnExpr (reducer $ extractCommon memodeb))+mxExprFiltEvery msg memodeb ty = fmap (unwrapAE (extractVL memodeb) msg memodeb) . randomTestFilter memodeb ty . mxExpr memodeb+mxExpr memodeb = fmap (toAnnExpr (reducer $ extractCommon memodeb))+mxExprToACE :: (Expression e, Search m, WithCommon pg, Typeable a) => String -> pg -> Types.Type -> m e -> m (CoreExpr, a)+mxExprToACE   msg memodeb _  = fmap (unwrapToCE msg memodeb . toAnnExpr (reducer $ extractCommon memodeb))  unwrapAE :: (WithCommon pg, Typeable a) => VarLib -> String -> pg -> AnnExpr -> (Exp, a) unwrapAE vl msg memodeb (AE e dyn) = (exprToTHExp vl e, fromDyn tcl dyn (error msg))     where tcl = extractTCL memodeb-+unwrapToCE :: (WithCommon pg, Typeable a) => String -> pg -> AnnExpr -> (CoreExpr, a)+unwrapToCE msg memodeb ae@(AE e dyn) = (e, fromDyn tcl dyn (error msg))+    where tcl = extractTCL memodeb   etup :: (ProgramGenerator pg, Typeable a) =>@@ -635,10 +712,6 @@            -> (a->Bool) -> TH.Exp findOne withAbsents pred = unsafePerformIO $ findDo (\e _ -> return e) withAbsents pred -{- x 念のためやってみたけど,やっぱダメやね.てゆーか,Recompのままやって各深さで見る手はあるかも.-findAny :: Typeable a => (a->Bool) -> [TH.Exp]-findAny pred = unsafePerformIO $ findDo (\e r -> r >>= \es -> return (e:es)) pred--} -- | 'printOne' prints the expression found first.  printOne :: Typeable a =>              Bool -- ^ whether to include functions with unused arguments@@ -711,7 +784,7 @@ -} everyF :: (Typeable a, Filtrable a) =>           Opt b-              -> Every a -> Every a+              -> [[(e,a)]] -> [[(e,a)]] everyF o = unMx . unsafeRandomTestFilter (timeout o) (fcnrand o) . Mx   -- | 'filterThen' may be used to further filter the results.@@ -750,25 +823,24 @@                                                      Just True  -> ea : fpartial mpto pred ts                                                      _          -> fpartial mpto pred ts -}-fpartialIO :: Typeable a => Maybe Int -> (a->Bool) -> [((Exp, a),(Exp,a))] -> IO [(Exp, a)]-fpartialIO mpto pred ts = do mbs <- interleaveActions {- parallelInterleaved -} $ map (fpartIO mpto pred) ts---fpartialIO mpto pred ts = do mbs <- mapIO (fpartIO mpto pred) ts-                             return [ tup | Just tup <- mbs ]+fpartialIO :: Typeable a => Maybe Int -> (a->Bool) -> [((e, a),(e,a))] -> IO [(e, a)]+fpartialIO mpto pred ts = filterIO (fpartIO mpto pred) ts+filterIO :: Typeable a => (t -> IO (Maybe (e,a))) -> [t] -> IO [(e,a)]+filterIO filt ts = do mbs <- interleaveActions {- parallelInterleaved -} $ map filt ts+--filterIO filt ts = do mbs <- mapIO filt ts+                      return [ tup | Just tup <- mbs ] #ifdef PAR-fpartialParIO :: Typeable a => Maybe Int -> (a->Bool) -> [((Exp, a),(Exp,a))] -> ParIO [(Exp, a)]+fpartialParIO :: Typeable a => Maybe Int -> (a->Bool) -> [((e, a),(e,a))] -> ParIO [(e, a)] fpartialParIO mpto pred ts = do mbs <- mapParIO (liftIO . fpartIO mpto pred) ts                                 return [ tup | Just tup <- mbs ] #endif-fpartIO :: Typeable a => Maybe Int -> (a->Bool) -> ((Exp, a),(Exp,a)) -> IO (Maybe (Exp, a))-fpartIO mpto pred (ea@(_,a),eap@(_,ap))+fpartIO :: Typeable a => Maybe Int -> (a->Bool) -> ((e, a),(e,a)) -> IO (Maybe (e, a))+fpartIO mpto pred (ea, eap@(_,ap))   = do mbb <- maybeWithTO seq mpto $ return $! pred ap         case mbb of          Just True  -> return $ Just eap          Just False -> return Nothing-         Nothing    -> do mbb2 <- maybeWithTO seq mpto $ return $! pred a -                          case mbb2 of-                                                     Just True  -> return $ Just ea-                                                     _          -> return Nothing+         Nothing    -> ftotIO mpto pred ea {- これだとinterleaveできない. fpartialIO _    pred []            = return [] fpartialIO mpto pred ((ea@(_,a),eap@(_,ap)):ts) @@ -782,6 +854,21 @@                                                      _          -> fpartialIO mpto pred ts  -}++++ftotalIO :: Typeable a => Maybe Int -> (a->Bool) -> [(e, a)] -> IO [(e, a)]+ftotalIO mpto pred ts = filterIO (ftotIO mpto pred) ts+ftotIO :: Typeable a => Maybe Int -> (a->Bool) -> (e,a) -> IO (Maybe (e, a))+ftotIO mpto pred (ea@(_,a))+  = do mbb <- maybeWithTO seq mpto $ return $! pred a +       case mbb of+         Just True  -> return $ Just ea+         _          -> return Nothing++++  fpIO :: Typeable a => Maybe Int -> (a->Bool) -> [((Exp, a),(Exp,a))] -> IO [(Exp, a)] fpIO mpto pred ts = do mbs <- {-interleaveActions -}sequence {- parallelInterleaved -} $ {- take 19 $ drop 6550 $ -} zipWith (fIO mpto pred) ts [0..]
MagicHaskeller/CoreLang.lhs view
@@ -45,7 +45,7 @@ data CoreExpr = S | K | I | B | C | S' | B' | C' | Y                 | Lambda CoreExpr | X {-# UNPACK #-} !Int8 -- de Bruijn notation --                | Lambda CoreExpr | X Int8 -- de Bruijn notation-                | FunLambda CoreExpr | FunX Int -- different system of de Bruijn notation for functions, used by IOPairs.hs+                | FunLambda CoreExpr | FunX Int8 -- different system of de Bruijn notation for functions, used by IOPairs.hs                 | Tuple {-# UNPACK #-} !Int8 --                | Tuple Int8 {-                @@ -83,6 +83,10 @@     rnf e                = () #endif +arityCE :: CoreExpr -> Int+arityCE (Lambda e)    = 1 + arityCE e+arityCE (FunLambda e) = 1 + arityCE e+arityCE _             = 0  isAbsent :: Int -> CoreExpr -> Bool isAbsent numArgs expr = isa (2^numArgs - 1) expr /= 0@@ -124,6 +128,7 @@   type VarLib = Array Var PD.Dynamic+type VarPriorityLib = Array Var Int  actualVarName :: String -> Exp actualVarName = VarE . mkName . stripByd_@@ -131,13 +136,110 @@ stripByd_ ('-':'-':'#':name) = dropWhile (=='#') name stripByd_ name = name +headIsX :: CoreExpr -> Bool+headIsX (Lambda e)    = headIsX e+headIsX (FunLambda e) = headIsX e+headIsX (f :$ e)      = headIsX f+headIsX (X _)         = True+headIsX (FunX _)      = True+headIsX _             = False++isAPrimitiveCombinator :: CoreExpr -> Bool+isAPrimitiveCombinator (Lambda e) = isAPrimitiveCombinator e+isAPrimitiveCombinator (FunLambda e) = isAPrimitiveCombinator e+isAPrimitiveCombinator (X _)      = True+isAPrimitiveCombinator (FunX _)   = True+isAPrimitiveCombinator (Primitive _) = False -- The meaning of "primitive" is different!+isAPrimitiveCombinator (PrimCon   _) = False+isAPrimitiveCombinator (Context   _) = False+isAPrimitiveCombinator (f :$ e)      = isAPrimitiveCombinator f && isAPrimitiveCombinator e+isAPrimitiveCombinator (Fix _ _ _)   = True+isAPrimitiveCombinator _             = True -- bothered. Anyway, there is no plan of using this function for analytical synthesis.++-- removeAbsents removes absent arguments.+removeAbsents :: CoreExpr -> CoreExpr+removeAbsents (Lambda e) = removeAbsents e+removeAbsents e+    = let args     = unboundXs 0 e :: Int+          newArity = popCount args+      in napply newArity Lambda $ adjustXs args 0 e+adjustXs args dep (Lambda e) = Lambda $ adjustXs args (dep+1) e+adjustXs args dep (X n) | diff >= 0 = X $ fromIntegral (popCount ((bit (fromIntegral diff) - 1) .&. args)) + dep+                          where diff = n - dep+adjustXs args dep (f :$ x)   = adjustXs args dep f :$ adjustXs args dep x+adjustXs _    _   e          = e++-- This is similar to isAbsent.+unboundXs dep (Lambda e)      = unboundXs (dep+1) e+unboundXs dep (X n) | diff>=0 = bit (fromIntegral diff) where diff = n-dep+unboundXs dep (f :$ e)        = unboundXs dep f .|. unboundXs dep e+unboundXs dep _               = 0+++subexprs :: CoreExpr -> [CoreExpr]+subexprs e = sub 0 e+sub dep (Lambda e) = sub (succ dep) e+sub dep e          = napply dep Lambda e : concatMap (sub dep) (args e)++branches :: CoreExpr -> [CoreExpr]+branches e = bra 0 e+bra dep (Lambda e) = bra (succ dep) e+bra dep e@(_:$_)   = napply dep Lambda e : concatMap (bra dep) (args e)+bra _   _          = []++-- | 'parentsOfLeaves' collects branch nodes whose children are leaf nodes. This can be used for incremental learning.+parentsOfLeaves :: CoreExpr -> [CoreExpr]+parentsOfLeaves e | isALeaf e = []+                  | otherwise = pol 0 e+pol dep (Lambda e) = pol (succ dep) e+pol dep e = case filter (not . isALeaf) $ args e of []       -> [napply dep Lambda e]+                                                    branches -> concatMap (pol dep) branches+args (f :$ e) = e : args f+args _        = []++{-+-- \a b c -> f (\d e -> E) を \a b c -> f ((\a b c d e -> E) a b c)に.+mkRedundant :: CoreExpr -> CoreExpr+mkRedundant = mR 0 0+mR :: Int8 -> Int8 -> CoreExpr -> CoreExpr+mR dep fdep (Lambda e)    = Lambda $ mR (succ dep) fdep e+mR dep fdep (FunLambda e) = FunLambda $ mR dep (succ fdep) e+mR dep fdep (f :$ x)      = mR dep fdep f :$ foldl (:$) (napply dep Lambda $ napply fdep FunLambda $ mR dep fdep x) (map X [dep+fdep-1,dep+fdep-2..fdep] ++ map FunX [fdep-1,fdep-2..0])+--mR dep fdep (f :$ x)      = mR dep fdep f :$ foldl (:$) (napply dep Lambda $ napply fdep FunLambda $ mR dep fdep x) (map X [0..dep-1] ++ map FunX [dep..dep+fdep-1])+mR _   _    e             = e+-}++isALeaf :: CoreExpr -> Bool+isALeaf (Lambda e) = isALeaf e+isALeaf (_ :$ _)   = False+isALeaf _          = True++{-+skipLambdas dep (Lambda e)    = skipLambdas (dep+1) e+skipLambdas dep (FunLambda e) = skipLambdas (dep+1) e+skipLambdas dep e             = (dep,e)+-}+++ceToPriority :: VarPriorityLib -> CoreExpr -> Int+ceToPriority vpl (Lambda e)    = ceToPriority vpl e+ceToPriority vpl (FunLambda e) = ceToPriority vpl e+ceToPriority vpl (f :$ x)      = 1 + ceToPriority vpl f + ceToPriority vpl x+ceToPriority _   (X _)         = 0+ceToPriority _   (FunX _)      = 0+ceToPriority vpl (Primitive i) = vpl ! i+ceToPriority vpl (PrimCon i)   = vpl ! i+ceToPriority vpl (Context dict)= 0+++ -- x 第1引数のplはArray Con Stringなんだけど,もう全部Primitiveを使うことになったので不要. -- exprToTHExp converts CoreLang.CoreExpr into Language.Haskell.TH.Exp exprToTHExp, exprToTHExpLite :: VarLib -> CoreExpr -> Exp exprToTHExp vl e = exprToTHExp' True vl $ lightBeta e exprToTHExpLite vl e = exprToTHExp' False vl $ lightBeta e-exprToTHExp' pretty vl e = x2hsx (fromIntegral $ ord 'a'-1 :: Int8) (ord 'a' -1) e-    where x2hsx :: Int8 -> Int -> CoreExpr -> Exp+exprToTHExp' pretty vl e = x2hsx (fromIntegral $ ord 'a'-1 :: Int8) (fromIntegral $ ord 'a' -1) e+    where x2hsx :: Int8 -> Int8 -> CoreExpr -> Exp           x2hsx dep fdep (Lambda e) =                         case x2hsx (dep+1) fdep e of LamE pvars expr -> LamE (pvar:pvars) expr                                                     expr            -> LamE [pvar] expr@@ -147,7 +249,7 @@           x2hsx dep fdep (FunLambda e) =                         case x2hsx dep (fdep+1) e of LamE pvars expr -> LamE (pvar:pvars) expr                                                     expr            -> LamE [pvar] expr-              where var  = mkName ['f',chr (fdep+1)]+              where var  = mkName ['f', chr $ fromIntegral (fdep+1)]                     pvar | not pretty || 0 `funOccursIn` e = VarP var                          | otherwise                        = WildP           x2hsx dep fdep (X n)            = VarE (mkName [chr $ fromIntegral (dep - n :: Int8)])         -- X nはX 0, X 1, ....@@ -210,7 +312,7 @@               = let hsx0 = x2hsx dep fdep e0                     hsx1 = x2hsx dep fdep e1                     n    = primId p-                in case PD.dynExp (vl!n) of +                in case PD.dynExp (vl ! n) of                                        e@(VarE name) | head base `elem` "!@#$%&*+./<=>?\\^|-~"                                                         -> InfixE (Just hsx0) (actualVarName base) (Just hsx1)                                                     | otherwise -> (actualVarName base `AppE` hsx0) `AppE` hsx1@@ -318,22 +420,6 @@   -isObviouslyBoring :: Exp -> Bool-isObviouslyBoring = iOB []-iOB patss (LamE pats expr) = iOB (reverse pats:patss) expr-iOB _     (VarE _) = False-iOB _     (ConE _) = False-iOB patss (InfixE (Just e1) o (Just e2)) = iOB patss e1 || iOB patss e2-iOB patss (ListE es) = any (iOB patss) es-iOB patss (CaseE e ts) = iOB patss e || any iOBMatch ts-                         where iOBMatch (Match _ (NormalB ce)  _) = iOB patss ce-                               iOBMatch (Match _ (GuardedB ts) _) = any (iOB patss . snd) ts-iOB patss ce@(AppE f e) = any (matchExp ce) patss || iOB patss f || iOB patss e-matchExp (AppE f e) (WildP:pats)     = matchExp f pats-matchExp (AppE f (VarE n1)) (VarP n2:pats) = nameBase n1 == nameBase n2 && matchExp f pats-matchExp (VarE n1) [VarP n2] = nameBase n1 == nameBase n2-matchExp _ _ = False- -- Another 'Primitive' moved from MagicHaskeller.lhs, which should be renamed in some way.... type Primitive = (HValue, Exp, Type) newtype HValue = HV (forall a. a)@@ -343,13 +429,24 @@ -- thTypesToTCL encloses defaultTyCons  primitivesToVL :: TyConLib -> [Primitive] -> VarLib-primitivesToVL tcl ps-    = listArray (0, genericLength ps + (lenDefaultPrimitives-1)) (map (\ (HV x, e, ty) -> PD.unsafeToDyn tcl (thTypeToType tcl ty) x e) ps-                                    ++ defaultPrimitives)+primitivesToVL tcl ps = dynamicsToVL (map (primitiveToDynamic tcl) ps ++ defaultPrimitives) +-- | 'dynamicsToVL' is useful for incremental learning.+dynamicsToVL :: [PD.Dynamic] -> VarLib+dynamicsToVL = listToArray++prioritiesToVPL :: [Int] -> VarPriorityLib+prioritiesToVPL = listToArray++listToArray :: (Integral i, Ix i) => [a] -> Array i a+listToArray ds = listArray (0, genericLength ds - 1) ds++primitiveToDynamic :: TyConLib -> Primitive -> PD.Dynamic+primitiveToDynamic tcl (HV x, e, ty) = PD.unsafeToDyn tcl (thTypeToType tcl ty) x e+ -- | 'defaultVarLib' can be used as a VarLib for testing and debugging. Currently this is used only by the analytical synthesizer. defaultVarLib :: VarLib-defaultVarLib = listArray (0, lenDefaultPrimitives-1) defaultPrimitives+defaultVarLib = primitivesToVL undefined []   --  = listArray (0, lenDefaultPrimitives-1) defaultPrimitives  lenDefaultPrimitives = genericLength defaultPrimitives 
MagicHaskeller/Execute.hs view
@@ -2,7 +2,7 @@ -- (c) Susumu Katayama -- {-# LANGUAGE MagicHash, TemplateHaskell #-}-module MagicHaskeller.Execute(unsafeExecute, unDeBruijn) where+module MagicHaskeller.Execute(unsafeExecute, unDeBruijn, s, sprime, bprime, cprime, fix) where import System.IO.Unsafe(unsafeInterleaveIO) import MagicHaskeller.CoreLang import GHC.Exts(unsafeCoerce#)
MagicHaskeller/ExecuteAPI610.hs view
@@ -374,6 +374,7 @@ rtis (NonRec b e) = NonRec b (removeTInfo e) rtis (Rec    ts)  = Rec [ (b, removeTInfo e) | (b,e) <- ts ] -}+ compileExprHscMain :: HscEnv -> CoreExpr -> IO HValue compileExprHscMain hscEnv ce   =  do let dflags  = hsc_dflags hscEnv
MagicHaskeller/ExpToHtml.hs view
@@ -151,11 +151,8 @@   xlmap :: Data.Map.Map String String--- x #ifdef CABAL--- x xlmap = Data.Map.fromList $ read $(fmap (LitE . StringL) $ runIO $ getDataFileName "xlmap" >>= readFile)--- x #else xlmap = Data.Map.fromList $ read $(fmap (LitE . StringL) $ runIO $ readFile "xlmap")--- x #endif+   
MagicHaskeller/LibTH.hs view
@@ -662,10 +662,9 @@ mkPgTotal = mkPGXOpts mkTrieOptSFIO options{tv1=True,nrands=repeat 20,timeout=Just 20000} (eqs++ords) [] full []  mkDebugPg :: IO ProgGenSF-mkDebugPg = mkPGXOpts mkTrieOptSFIO options{tv1=True,nrands=repeat 20,timeout=Just 20000} [] [] deb [[],[],[]]+mkDebugPg = mkPGXOpts mkTrieOptSFIO options{tv1=True,nrands=repeat 20,timeout=Just 20000} [] [] deb []  deb = [ $(p [| (reverse :: [a] -> [a], enumFromTo :: Int -> Int -> [Int], 1::Int, product :: [Int] -> Int, concatMap :: (a -> [b]) -> [a] -> [b]) |]), [],[]]--- deb = [ $(p [| (show :: Int->[Char]) |]), [],[]] -- x String  o [Char]  pgfullIO :: IO ProgGenSFIORef pgfullIO = mkPGXOptIO options{tv1=True,nrands=repeat 20} (eqs++ords) clspartialss full tupartialssNormal
MagicHaskeller/Minimal.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE CPP #-} -- minimal set of definitions for safer use by a server-module MagicHaskeller.Minimal(e, f1E, f1EF, f1EIO, f1EFIO, ProgGenSF, NearEq((~=)), postprocess, ppExcel) where+module MagicHaskeller.Minimal(e, f1E, f1EF, f1EIO, f1EFIO, simpleEF, ProgGenSF, NearEq((~=)), postprocess, ppExcel) where import MagicHaskeller.LibTH import MagicHaskeller.LibExcel import MagicHaskeller.ProgGenSF@@ -8,6 +8,7 @@ import Data.Typeable import MagicHaskeller.NearEq(NearEq((~=))) import Language.Haskell.TH(Exp)+import MagicHaskeller.CoreLang(CoreExpr)  import MagicHaskeller.DebMT(interleaveActions) #ifdef PAR@@ -41,3 +42,13 @@ f1EFIO postproc pred pgsf withAbsents    = let o = opt $ extractCommon pgsf      in fmap (map (map (postproc . fst)) . everyF o) $ interleaveActions $ map (fpartialIO (timeout o) pred) $ etup undefined pgsf withAbsents++simpleF1EFIO :: (Filtrable a, Typeable a) => (a -> Bool) -> ProgGenSF -> Bool -> IO [[(CoreExpr, a)]]+simpleF1EFIO pred pgsf withAbsents +  = let o = opt $ extractCommon pgsf +    in fmap (everyF o) $ interleaveActions $ map (ftotalIO (timeout o) pred) $ everyACE pgsf withAbsents++simpleEF :: (Filtrable a, Typeable a) => ProgGenSF -> Bool -> [[(CoreExpr,a)]]+simpleEF pgsf withAbsents +  = let o = opt $ extractCommon pgsf +    in everyF o $ everyACE pgsf withAbsents
MagicHaskeller/PolyDynamic.hs view
@@ -46,7 +46,7 @@ -- CoreExprはPrimitiveがDynamicを使っているので,Expの代わりに使うとhibootしないといけなくなる.  unsafeToDyn :: TyConLib -> Type -> a -> Exp -> Dynamic-unsafeToDyn tcl tr a e = Dynamic tr (unsafeCoerce# a) e+unsafeToDyn tcl tr a e = Dynamic (unChin tr) (unsafeCoerce# a) e -- unsafeToDyn tcl tr a e = Dynamic tr (unsafeCoerce# a) (SigE e (typeToTHType tcl tr)) -- こっちはこっちで便利っぽいのだが.  aLittleSafeFromDyn :: Type -> Dynamic -> a
MagicHaskeller/PriorSubsts.lhs view
@@ -157,6 +157,24 @@ newTVar :: Monad m => PriorSubsts m TyVar newTVar = PS (\ s n -> return (n, s, n+1)) +-- I do not remember why this was removed. It has come back with the coming back of Infer.lhs as TICE.hs.+freshInst :: (Functor m, Monad m) => Type -> PriorSubsts m Type+freshInst ty = do tv <- reserveTVars $ maxVarID ty + 1+                  return $ mapTV (tv+) ty+{-+freshInst ty = do let tvs = tyvars ty+		  ntvs <- mapM (const newTVar) tvs+		  let ar = array (0,maxVarID ty) (zip (map tvID tvs) ntvs) +		  return (inst ar ty)+    where inst :: Array Int TyVar -> Type -> Type+	  -- inst ar = mapTV (\tv -> ar ! tvID tv) -- mapTVはType.lhsからexportしない方が良さそうなので.てゆーか単に,Type.unifyFunAp(QTy)でmapTV相当のものを実装すれば良いのか?+	  inst ar (TA l r) = TA (inst ar l) (inst ar r)+	  inst ar (l:->r)  = inst ar l :-> inst ar r+	  inst ar (TV tv)  = TV (ar ! tvID tv)+	  inst _  t@(TC _) = t+-}++  -- 同じ名前の関数がallifdefs/PSList.hsにもあったりする.役割も似たようなもん. psListToPSRecomp :: (Int -> PriorSubsts [] a) -> PriorSubsts Recomp a
MagicHaskeller/ProgramGenerator.lhs view
@@ -30,6 +30,8 @@  import MagicHaskeller.MyDynamic +import qualified MagicHaskeller.PolyDynamic as PD+ import MagicHaskeller.Options  #if __GLASGOW_HASKELL__ >= 710@@ -76,14 +78,20 @@ reducer :: Common -> CoreExpr -> Dynamic reducer cmn = execute (opt cmn) (vl cmn) -data Common = Cmn {opt :: Opt (), tcl :: TyConLib, vl :: VarLib, pvl :: VarLib, rt :: RTrie}+data Common = Cmn {opt :: Opt (), tcl :: TyConLib, vl :: VarLib, pvl :: VarLib, vpl :: VarPriorityLib, rt :: RTrie} -mkCommon :: Options -> [Primitive] -> [Primitive] -> Common-mkCommon opts totals partials = -                      let-                          tyconlib = primitivesToTCL totals-                          optunit  = forget opts-                      in Cmn {opt = optunit, tcl = tyconlib, vl = primitivesToVL tyconlib totals, pvl = primitivesToVL tyconlib partials, rt = mkRandTrie (nrands opts) tyconlib (stdgen opts)}+mkCommon :: Options -> [Primitive] -> [Primitive] -> [Int] -> Common+mkCommon opts totals partials priorities+    = let cmn = initCommon opts totals in+      updateCommon (map (primitiveToDynamic $ tcl cmn) totals) (map (primitiveToDynamic $ tcl cmn) partials) priorities cmn+initCommon :: Options -> [Primitive] -> Common+initCommon opts totals = let+                           tyconlib = primitivesToTCL totals+                           optunit  = forget opts+                         in Cmn {opt = optunit, tcl = tyconlib, rt = mkRandTrie (nrands opts) tyconlib (stdgen opts)}+-- | 'updateCommon' can be used for incremetal learning+updateCommon :: [PD.Dynamic] -> [PD.Dynamic] -> [Int] -> Common -> Common+updateCommon totals partials priorities cmn = cmn{vl = dynamicsToVL totals, pvl = dynamicsToVL partials, vpl = prioritiesToVPL priorities}  -- | options for limiting the hypothesis space. type Options = Opt [[Primitive]]
+ MagicHaskeller/TICE.hs view
@@ -0,0 +1,56 @@+-- This module infers the type of given CoreExpr.+-- This is an updated version of the old Infer.lhs+{-# LANGUAGE TemplateHaskell, FlexibleContexts #-}+module MagicHaskeller.TICE where+import MagicHaskeller.CoreLang+import MagicHaskeller.Types+import MagicHaskeller.TyConLib+import MagicHaskeller.Execute(unsafeExecute, unDeBruijn, s, sprime, bprime, cprime, fix)+import MagicHaskeller.PriorSubsts+import qualified MagicHaskeller.PolyDynamic as PD+import MagicHaskeller.MyDynamic(unsafeFromDyn)+import MagicHaskeller.ReadTHType(thTypeToType)+import Data.Array.IArray+import Control.Monad(MonadPlus)+import Language.Haskell.TH(pprint)++import Debug.Trace++type TI = PriorSubsts Maybe++ceToDynamic :: TyConLib -> VarLib -> CoreExpr -> PD.Dynamic+ceToDynamic tcl vl ce = case tiCE tcl vl ce of+                          Nothing -> error ("ceToDynamic: " ++ pprint (exprToTHExp' False vl ce) ++ " type mismatch.")+                          Just ty -> PD.unsafeToDyn tcl ty (unsafeFromDyn $ unsafeExecute vl ce) $ exprToTHExp vl ce++tiCE :: (Functor m, MonadPlus m) => TyConLib -> VarLib -> CoreExpr -> m Type+tiCE tcl vl ce = do t <- runPS (tiEx tcl vl (unDeBruijn ce) >>= applyPS)+                    return $ normalize t+tiEx tcl vl ex = tie ex+    where+      tie (e :$ f) = do+        te <- tie e+        tf <- tie f+        tv <- newTVar+        let t = TV tv+        (if runPS (unify (tf :-> t) te) == Nothing then trace ("unifying " ++ show (tf :-> t) ++ " and " ++ show te) else id)+                     unify (tf :-> t) te+        t' <- applyPS t -- 勝手にこの行入れちゃったけど,いらないの?+        return t'+      tie prim     = freshInst (PD.dynType $ exe prim)+      -- myTypeOf is a version of exe defined in Execute.hs. +      {-# INLINE exe #-}+      exe :: CoreExpr -> PD.Dynamic+      exe (Primitive n) = vl!n+      exe (PrimCon   n) = vl!n+      exe (Context (Dict pd)) = pd+      exe S = $(PD.dynamic [|defaultTCL|] [| s     :: (b->c->a) -> (b->c) -> b -> a |])+      exe K = $(PD.dynamic [|defaultTCL|] [| const :: a->b->a |])+      exe I = $(PD.dynamic [|defaultTCL|] [| id    :: a->a    |])+      exe B = $(PD.dynamic [|defaultTCL|] [| (.)   :: (c->a) ->    (b->c) -> b -> a |])+      exe C = $(PD.dynamic [|defaultTCL|] [| flip  :: (b->c->a) ->     c  -> b -> a |])+      exe S' = $(PD.dynamic [|defaultTCL|] [| sprime :: (a->b->c)->(d->a)->(d->b)->d->c |])+      exe B' = $(PD.dynamic [|defaultTCL|] [| bprime :: (a->b->c)->    a ->(d->b)->d->c |])+      exe C' = $(PD.dynamic [|defaultTCL|] [| cprime :: (a->b->c)->(d->a)->b->d->c |])+      exe Y  = $(PD.dynamic [|defaultTCL|] [| fix    :: (a->a)->a |])+      exe foo = error ("TICE.tiEx: " ++ show foo ++ " : unknown combinator")
MagicHaskeller/Types.lhs view
@@ -7,7 +7,7 @@  {-# OPTIONS -cpp -funbox-strict-fields #-} module MagicHaskeller.Types(Type(..), Kind, TyCon, TyVar, TypeName, Typed(..), tyvars, Subst, plusSubst, -            emptySubst, apply, mgu, varBind, match, maxVarID, normalizeVarIDs, normalize, +            emptySubst, apply, mgu, varBind, match, maxVarID, normalizeVarIDs, normalize, unChin,             Decoder(..), typer, typee, negateTVIDs, limitType, saferQuantify, quantify, quantify', unquantify, lookupSubst, unifyFunAp,             alltyvars, mapTV, size, unitSubst, applyCheck, assertsubst, substOK, eqType, getRet, getArity, getArities, getAritiesRet, splitArgs, getArgs, pushArgs, popArgs, mguFunAp, revSplitArgs, revGetArgs, module Data.Int            ) where@@ -318,6 +318,11 @@                         s2 <- match (apply s1 r) r'                         return (s2 `plusSubst` s1) +unChin (TA l r)  = TA l $ unChin r+unChin (l :> r)  = unChin l :-> unChin r+unChin (l :-> r) = unChin l :-> unChin r+unChin (l :=> r) =        l :=> unChin r+unChin t         = t  -- mgu t t' = mgu' (toChin t) (toChin t') mgu (l :-> r) (l' :-> r') = mgu2Ap l r l' r'
changelog.txt view
@@ -1,3 +1,6 @@+0.9.6.7:+  * add functions for incremental learning to the library+ 0.9.6.6.1:   * support GHC 8.0 
xlmap view
@@ -1,1 +1,1 @@-[("SUM","SUM-function-043e1c7d-7726-4e80-8f32-07b23e057f89"),("IF","IF-function-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2"),("LOOKUP","LOOKUP-function-446d94af-663b-451d-8251-369d5e3864cb"),("VLOOKUP","VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1"),("MATCH","MATCH-function-e8dffd45-c762-47d6-bf89-533f4a37673a"),("CHOOSE","CHOOSE-function-fc5c184f-cb62-4ec7-a46e-38653b98f5bc"),("DATE","DATE-function-e36c0c8c-4104-49da-ab83-82328b832349"),("DAYS","DAYS-function-57740535-d549-4395-8728-0f07bff0b9df"),("FIND","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("FINDB","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("INDEX","INDEX-function-a5dcf0dd-996d-40a4-a822-b56b061328bd"),("BETADIST","BETADIST-function-49f1b9a9-a5da-470f-8077-5f1730b5fd47"),("BETAINV","BETAINV-function-8b914ade-b902-43c1-ac9c-c05c54f10d6c"),("BINOMDIST","BINOMDIST-function-506a663e-c4ca-428d-b9a8-05583d68789c"),("CHIDIST","CHIDIST-function-c90d0fbc-5b56-4f5f-ab57-34af1bf6897e"),("CHIINV","CHIINV-function-cfbea3f6-6e4f-40c9-a87f-20472e0512af"),("CHITEST","CHITEST-function-981ff871-b694-4134-848e-38ec704577ac"),("CONFIDENCE","CONFIDENCE-function-75ccc007-f77c-4343-bc14-673642091ad6"),("COVAR","COVAR-function-50479552-2c03-4daf-bd71-a5ab88b2db03"),("CRITBINOM","CRITBINOM-function-eb6b871d-796b-4d21-b69b-e4350d5f407b"),("EXPONDIST","EXPONDIST-function-68ab45fd-cd6d-4887-9770-9357eb8ee06a"),("FDIST","FDIST-function-ecf76fba-b3f1-4e7d-a57e-6a5b7460b786"),("FINV","FINV-function-4d46c97c-c368-4852-bc15-41e8e31140b1"),("FLOOR","FLOOR-function-14bb497c-24f2-4e04-b327-b0b4de5a8886"),("FTEST","FTEST-function-4c9e1202-53fe-428c-a737-976f6fc3f9fd"),("GAMMADIST","GAMMADIST-function-7327c94d-0f05-4511-83df-1dd7ed23e19e"),("GAMMAINV","GAMMAINV-function-06393558-37ab-47d0-aa63-432f99e7916d"),("HYPGEOMDIST","HYPGEOMDIST-function-23e37961-2871-4195-9629-d0b2c108a12e"),("LOGINV","LOGINV-function-0bd7631a-2725-482b-afb4-de23df77acfe"),("LOGNORMDIST","LOGNORMDIST-function-f8d194cb-9ee3-4034-8c75-1bdb3884100b"),("MODE","MODE-function-e45192ce-9122-4980-82ed-4bdc34973120"),("NEGBINOMDIST","NEGBINOMDIST-function-f59b0a37-bae2-408d-b115-a315609ba714"),("NORMDIST","NORMDIST-function-126db625-c53e-4591-9a22-c9ff422d6d58"),("NORMINV","NORMINV-function-87981ab8-2de0-4cb0-b1aa-e21d4cb879b8"),("NORMSDIST","NORMSDIST-function-463369ea-0345-445d-802a-4ff0d6ce7cac"),("NORMSINV","NORMSINV-function-8d1bce66-8e4d-4f3b-967c-30eed61f019d"),("PERCENTILE","PERCENTILE-function-91b43a53-543c-4708-93de-d626debdddca"),("PERCENTRANK","PERCENTRANK-function-f1b5836c-9619-4847-9fc9-080ec9024442"),("POISSON","POISSON-function-d81f7294-9d7c-4f75-bc23-80aa8624173a"),("QUARTILE","QUARTILE-function-93cf8f62-60cd-4fdb-8a92-8451041e1a2a"),("RANK","RANK-function-6a2fc49d-1831-4a03-9d8c-c279cf99f723"),("STDEV","STDEV-function-51fecaaa-231e-4bbb-9230-33650a72c9b0"),("STDEVP","STDEVP-function-1f7c1c88-1bec-4422-8242-e9f7dc8bb195"),("TDIST","TDIST-function-630a7695-4021-4853-9468-4a1f9dcdd192"),("TINV","TINV-function-a7c85b9d-90f5-41fe-9ca5-1cd2f3e1ed7c"),("TTEST","TTEST-function-1696ffc1-4811-40fd-9d13-a0eaad83c7ae"),("VAR","VAR-function-1f2b7ab2-954d-4e17-ba2c-9e58b15a7da2"),("VARP","VARP-function-26a541c4-ecee-464d-a731-bd4c575b1a6b"),("WEIBULL","WEIBULL-function-b83dc2c6-260b-4754-bef2-633196f6fdcc"),("ZTEST","ZTEST-function-8f33be8a-6bd6-4ecc-8e3a-d9a4420c4a6a"),("CUBEKPIMEMBER","CUBEKPIMEMBER-function-744608bf-2c62-42cd-b67a-a56109f4b03b"),("CUBEMEMBER","CUBEMEMBER-function-0f6a15b9-2c18-4819-ae89-e1b5c8b398ad"),("CUBEMEMBERPROPERTY","CUBEMEMBERPROPERTY-function-001e57d6-b35a-49e5-abcd-05ff599e8951"),("CUBERANKEDMEMBER","CUBERANKEDMEMBER-function-07efecde-e669-4075-b4bf-6b40df2dc4b3"),("CUBESET","CUBESET-function-5b2146bd-62d6-4d04-9d8f-670e993ee1d9"),("CUBESETCOUNT","CUBESETCOUNT-function-c4c2a438-c1ff-4061-80fe-982f2d705286"),("CUBEVALUE","CUBEVALUE-function-8733da24-26d1-4e34-9b3a-84a8f00dcbe0"),("DAVERAGE","DAVERAGE-function-a6a2d5ac-4b4b-48cd-a1d8-7b37834e5aee"),("DCOUNT","DCOUNT-function-c1fc7b93-fb0d-4d8d-97db-8d5f076eaeb1"),("DCOUNTA","DCOUNTA-function-00232a6d-5a66-4a01-a25b-c1653fda1244"),("DGET","DGET-function-455568bf-4eef-45f7-90f0-ec250d00892e"),("DMAX","DMAX-function-f4e8209d-8958-4c3d-a1ee-6351665d41c2"),("DMIN","DMIN-function-4ae6f1d9-1f26-40f1-a783-6dc3680192a3"),("DPRODUCT","DPRODUCT-function-4f96b13e-d49c-47a7-b769-22f6d017cb31"),("DSTDEV","DSTDEV-function-026b8c73-616d-4b5e-b072-241871c4ab96"),("DSTDEVP","DSTDEVP-function-04b78995-da03-4813-bbd9-d74fd0f5d94b"),("DSUM","DSUM-function-53181285-0c4b-4f5a-aaa3-529a322be41b"),("DVAR","DVAR-function-d6747ca9-99c7-48bb-996e-9d7af00f3ed1"),("DVARP","DVARP-function-eb0ba387-9cb7-45c8-81e9-0394912502fc"),("DATE","DATE-function-e36c0c8c-4104-49da-ab83-82328b832349"),("DATEDIF","DATEDIF-function-25dba1a4-2812-480b-84dd-8b32a451b35c"),("DATEVALUE","DATEVALUE-function-df8b07d4-7761-4a93-bc33-b7471bbff252"),("DAY","DAY-function-8a7d1cbb-6c7d-4ba1-8aea-25c134d03101"),("DAYS","DAYS-function-57740535-d549-4395-8728-0f07bff0b9df"),("DAYS360","DAYS360-function-b9a509fd-49ef-407e-94df-0cbda5718c2a"),("EDATE","EDATE-function-3c920eb2-6e66-44e7-a1f5-753ae47ee4f5"),("EOMONTH","EOMONTH-function-7314ffa1-2bc9-4005-9d66-f49db127d628"),("HOUR","HOUR-function-a3afa879-86cb-4339-b1b5-2dd2d7310ac7"),("ISOWEEKNUM","ISOWEEKNUM-function-1c2d0afe-d25b-4ab1-8894-8d0520e90e0e"),("MINUTE","MINUTE-function-af728df0-05c4-4b07-9eed-a84801a60589"),("MONTH","MONTH-function-579a2881-199b-48b2-ab90-ddba0eba86e8"),("NETWORKDAYS","NETWORKDAYS-function-48e717bf-a7a3-495f-969e-5005e3eb18e7"),("NETWORKDAYS.INTL","NETWORKDAYSINTL-function-a9b26239-4f20-46a1-9ab8-4e925bfd5e28"),("NOW","NOW-function-3337fd29-145a-4347-b2e6-20c904739c46"),("SECOND","SECOND-function-740d1cfc-553c-4099-b668-80eaa24e8af1"),("TIME","TIME-function-9a5aff99-8f7d-4611-845e-747d0b8d5457"),("TIMEVALUE","TIMEVALUE-function-0b615c12-33d8-4431-bf3d-f3eb6d186645"),("TODAY","TODAY-function-5eb3078d-a82c-4736-8930-2f51a028fdd9"),("WEEKDAY","WEEKDAY-function-60e44483-2ed1-439f-8bd0-e404c190949a"),("WEEKNUM","WEEKNUM-function-e5c43a03-b4ab-426c-b411-b18c13c75340"),("WORKDAY","WORKDAY-function-f764a5b7-05fc-4494-9486-60d494efbf33"),("WORKDAY.INTL","WORKDAYINTL-function-a378391c-9ba7-4678-8a39-39611a9bf81d"),("YEAR","YEAR-function-c64f017a-1354-490d-981f-578e8ec8d3b9"),("YEARFRAC","YEARFRAC-function-3844141e-c76d-4143-82b6-208454ddc6a8"),("BESSELI","BESSELI-function-8d33855c-9a8d-444b-98e0-852267b1c0df"),("BESSELJ","BESSELJ-function-839cb181-48de-408b-9d80-bd02982d94f7"),("BESSELK","BESSELK-function-606d11bc-06d3-4d53-9ecb-2803e2b90b70"),("BESSELY","BESSELY-function-f3a356b3-da89-42c3-8974-2da54d6353a2"),("BIN2DEC","BIN2DEC-function-63905b57-b3a0-453d-99f4-647bb519cd6c"),("BIN2HEX","BIN2HEX-function-0375e507-f5e5-4077-9af8-28d84f9f41cc"),("BIN2OCT","BIN2OCT-function-0a4e01ba-ac8d-4158-9b29-16c25c4c23fd"),("BITAND","BITAND-function-8a2be3d7-91c3-4b48-9517-64548008563a"),("BITLSHIFT","BITLSHIFT-function-c55bb27e-cacd-4c7c-b258-d80861a03c9c"),("BITOR","BITOR-function-f6ead5c8-5b98-4c9e-9053-8ad5234919b2"),("BITRSHIFT","BITRSHIFT-function-274d6996-f42c-4743-abdb-4ff95351222c"),("BITXOR","BITXOR-function-c81306a1-03f9-4e89-85ac-b86c3cba10e4"),("COMPLEX","COMPLEX-function-f0b8f3a9-51cc-4d6d-86fb-3a9362fa4128"),("CONVERT","CONVERT-function-d785bef1-808e-4aac-bdcd-666c810f9af2"),("DEC2BIN","DEC2BIN-function-0f63dd0e-5d1a-42d8-b511-5bf5c6d43838"),("DEC2HEX","DEC2HEX-function-6344ee8b-b6b5-4c6a-a672-f64666704619"),("DEC2OCT","DEC2OCT-function-c9d835ca-20b7-40c4-8a9e-d3be351ce00f"),("DELTA","DELTA-function-2f763672-c959-4e07-ac33-fe03220ba432"),("ERF","ERF-function-c53c7e7b-5482-4b6c-883e-56df3c9af349"),("ERF.PRECISE","ERFPRECISE-function-9a349593-705c-4278-9a98-e4122831a8e0"),("ERFC","ERFC-function-736e0318-70ba-4e8b-8d08-461fe68b71b3"),("ERFC.PRECISE","ERFCPRECISE-function-e90e6bab-f45e-45df-b2ac-cd2eb4d4a273"),("GESTEP","GESTEP-function-f37e7d2a-41da-4129-be95-640883fca9df"),("HEX2BIN","HEX2BIN-function-a13aafaa-5737-4920-8424-643e581828c1"),("HEX2DEC","HEX2DEC-function-8c8c3155-9f37-45a5-a3ee-ee5379ef106e"),("HEX2OCT","HEX2OCT-function-54d52808-5d19-4bd0-8a63-1096a5d11912"),("IMABS","IMABS-function-b31e73c6-d90c-4062-90bc-8eb351d765a1"),("IMAGINARY","IMAGINARY-function-dd5952fd-473d-44d9-95a1-9a17b23e428a"),("IMARGUMENT","IMARGUMENT-function-eed37ec1-23b3-4f59-b9f3-d340358a034a"),("IMCONJUGATE","IMCONJUGATE-function-2e2fc1ea-f32b-4f9b-9de6-233853bafd42"),("IMCOS","IMCOS-function-dad75277-f592-4a6b-ad6c-be93a808a53c"),("IMCOSH","IMCOSH-function-053e4ddb-4122-458b-be9a-457c405e90ff"),("IMCOT","IMCOT-function-dc6a3607-d26a-4d06-8b41-8931da36442c"),("IMCSC","IMCSC-function-9e158d8f-2ddf-46cd-9b1d-98e29904a323"),("IMCSCH","IMCSCH-function-c0ae4f54-5f09-4fef-8da0-dc33ea2c5ca9"),("IMDIV","IMDIV-function-a505aff7-af8a-4451-8142-77ec3d74d83f"),("IMEXP","IMEXP-function-c6f8da1f-e024-4c0c-b802-a60e7147a95f"),("IMLN","IMLN-function-32b98bcf-8b81-437c-a636-6fb3aad509d8"),("IMLOG10","IMLOG10-function-58200fca-e2a2-4271-8a98-ccd4360213a5"),("IMLOG2","IMLOG2-function-152e13b4-bc79-486c-a243-e6a676878c51"),("IMPOWER","IMPOWER-function-210fd2f5-f8ff-4c6a-9d60-30e34fbdef39"),("IMPRODUCT","IMPRODUCT-function-2fb8651a-a4f2-444f-975e-8ba7aab3a5ba"),("IMREAL","IMREAL-function-d12bc4c0-25d0-4bb3-a25f-ece1938bf366"),("IMSEC","IMSEC-function-6df11132-4411-4df4-a3dc-1f17372459e0"),("IMSECH","IMSECH-function-f250304f-788b-4505-954e-eb01fa50903b"),("IMSIN","IMSIN-function-1ab02a39-a721-48de-82ef-f52bf37859f6"),("IMSINH","IMSINH-function-dfb9ec9e-8783-4985-8c42-b028e9e8da3d"),("IMSQRT","IMSQRT-function-e1753f80-ba11-4664-a10e-e17368396b70"),("IMSUB","IMSUB-function-2e404b4d-4935-4e85-9f52-cb08b9a45054"),("IMSUM","IMSUM-function-81542999-5f1c-4da6-9ffe-f1d7aaa9457f"),("IMTAN","IMTAN-function-8478f45d-610a-43cf-8544-9fc0b553a132"),("OCT2BIN","OCT2BIN-function-55383471-3c56-4d27-9522-1a8ec646c589"),("OCT2DEC","OCT2DEC-function-87606014-cb98-44b2-8dbb-e48f8ced1554"),("OCT2HEX","OCT2HEX-function-912175b4-d497-41b4-a029-221f051b858f"),("ACCRINT","ACCRINT-function-fe45d089-6722-4fb3-9379-e1f911d8dc74"),("ACCRINTM","ACCRINTM-function-f62f01f9-5754-4cc4-805b-0e70199328a7"),("AMORDEGRC","AMORDEGRC-function-a14d0ca1-64a4-42eb-9b3d-b0dededf9e51"),("AMORLINC","AMORLINC-function-7d417b45-f7f5-4dba-a0a5-3451a81079a8"),("COUPDAYBS","COUPDAYBS-function-eb9a8dfb-2fb2-4c61-8e5d-690b320cf872"),("COUPDAYS","COUPDAYS-function-cc64380b-315b-4e7b-950c-b30b0a76f671"),("COUPDAYSNC","COUPDAYSNC-function-5ab3f0b2-029f-4a8b-bb65-47d525eea547"),("COUPNCD","COUPNCD-function-fd962fef-506b-4d9d-8590-16df5393691f"),("COUPNUM","COUPNUM-function-a90af57b-de53-4969-9c99-dd6139db2522"),("COUPPCD","COUPPCD-function-2eb50473-6ee9-4052-a206-77a9a385d5b3"),("CUMIPMT","CUMIPMT-function-61067bb0-9016-427d-b95b-1a752af0e606"),("CUMPRINC","CUMPRINC-function-94a4516d-bd65-41a1-bc16-053a6af4c04d"),("DB","DB-function-354e7d28-5f93-4ff1-8a52-eb4ee549d9d7"),("DDB","DDB-function-519a7a37-8772-4c96-85c0-ed2c209717a5"),("DISC","DISC-function-71fce9f3-3f05-4acf-a5a3-eac6ef4daa53"),("DOLLARDE","DOLLARDE-function-db85aab0-1677-428a-9dfd-a38476693427"),("DOLLARFR","DOLLARFR-function-0835d163-3023-4a33-9824-3042c5d4f495"),("DURATION","DURATION-function-b254ea57-eadc-4602-a86a-c8e369334038"),("EFFECT","EFFECT-function-910d4e4c-79e2-4009-95e6-507e04f11bc4"),("FV","FV-function-2eef9f44-a084-4c61-bdd8-4fe4bb1b71b3"),("FVSCHEDULE","FVSCHEDULE-function-bec29522-bd87-4082-bab9-a241f3fb251d"),("INTRATE","INTRATE-function-5cb34dde-a221-4cb6-b3eb-0b9e55e1316f"),("IPMT","IPMT-function-5cce0ad6-8402-4a41-8d29-61a0b054cb6f"),("IRR","IRR-function-64925eaa-9988-495b-b290-3ad0c163c1bc"),("ISPMT","ISPMT-function-fa58adb6-9d39-4ce0-8f43-75399cea56cc"),("MDURATION","MDURATION-function-b3786a69-4f20-469a-94ad-33e5b90a763c"),("MIRR","MIRR-function-b020f038-7492-4fb4-93c1-35c345b53524"),("NOMINAL","NOMINAL-function-7f1ae29b-6b92-435e-b950-ad8b190ddd2b"),("NPER","NPER-function-240535b5-6653-4d2d-bfcf-b6a38151d815"),("NPV","NPV-function-8672cb67-2576-4d07-b67b-ac28acf2a568"),("ODDFPRICE","ODDFPRICE-function-d7d664a8-34df-4233-8d2b-922bcf6a69e1"),("ODDFYIELD","ODDFYIELD-function-66bc8b7b-6501-4c93-9ce3-2fd16220fe37"),("ODDLPRICE","ODDLPRICE-function-fb657749-d200-4902-afaf-ed5445027fc4"),("ODDLYIELD","ODDLYIELD-function-c873d088-cf40-435f-8d41-c8232fee9238"),("PDURATION","PDURATION-function-44f33460-5be5-4c90-b857-22308892adaf"),("PMT","PMT-function-0214da64-9a63-4996-bc20-214433fa6441"),("PPMT","PPMT-function-c370d9e3-7749-4ca4-beea-b06c6ac95e1b"),("PRICE","PRICE-function-3ea9deac-8dfa-436f-a7c8-17ea02c21b0a"),("PRICEDISC","PRICEDISC-function-d06ad7c1-380e-4be7-9fd9-75e3079acfd3"),("PRICEMAT","PRICEMAT-function-52c3b4da-bc7e-476a-989f-a95f675cae77"),("PV","PV-function-23879d31-0e02-4321-be01-da16e8168cbd"),("RATE","RATE-function-9f665657-4a7e-4bb7-a030-83fc59e748ce"),("RECEIVED","RECEIVED-function-7a3f8b93-6611-4f81-8576-828312c9b5e5"),("RRI","RRI-function-6f5822d8-7ef1-4233-944c-79e8172930f4"),("SLN","SLN-function-cdb666e5-c1c6-40a7-806a-e695edc2f1c8"),("SYD","SYD-function-069f8106-b60b-4ca2-98e0-2a0f206bdb27"),("TBILLEQ","TBILLEQ-function-2ab72d90-9b4d-4efe-9fc2-0f81f2c19c8c"),("TBILLPRICE","TBILLPRICE-function-eacca992-c29d-425a-9eb8-0513fe6035a2"),("TBILLYIELD","TBILLYIELD-function-6d381232-f4b0-4cd5-8e97-45b9c03468ba"),("VDB","VDB-function-dde4e207-f3fa-488d-91d2-66d55e861d73"),("XIRR","XIRR-function-de1242ec-6477-445b-b11b-a303ad9adc9d"),("XNPV","XNPV-function-1b42bbf6-370f-4532-a0eb-d67c16b664b7"),("YIELD","YIELD-function-f5f5ca43-c4bd-434f-8bd2-ed3c9727a4fe"),("YIELDDISC","YIELDDISC-function-a9dbdbae-7dae-46de-b995-615faffaaed7"),("YIELDMAT","YIELDMAT-function-ba7d1809-0d33-4bcb-96c7-6c56ec62ef6f"),("CELL","CELL-function-51bd39a5-f338-4dbe-a33f-955d67c2b2cf"),("ERROR.TYPE","ERRORTYPE-function-10958677-7c8d-44f7-ae77-b9a9ee6eefaa"),("INFO","INFO-function-725f259a-0e4b-49b3-8b52-58815c69acae"),("ISBLANK","ISBLANK-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISERR","ISERR-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISERROR","ISERROR-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISEVEN","ISEVEN-function-aa15929a-d77b-4fbb-92f4-2f479af55356"),("ISFORMULA","ISFORMULA-function-e4d1355f-7121-4ef2-801e-3839bfd6b1e5"),("ISLOGICAL","ISLOGICAL-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISNA","ISNA-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISNONTEXT","ISNONTEXT-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISNUMBER","ISNUMBER-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISODD","ISODD-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISREF","ISREF-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISTEXT","ISTEXT-function-0f2d7971-6019-40a0-a171-f2d869135665"),("N","N-function-a624cad1-3635-4208-b54a-29733d1278c9"),("NA","NA-function-5469c2d1-a90c-4fb5-9bbc-64bd9bb6b47c"),("SHEET","SHEET-function-44718b6f-8b87-47a1-a9d6-b701c06cff24"),("SHEETS","SHEETS-function-770515eb-e1e8-45ce-8066-b557e5e4b80b"),("TYPE","TYPE-function-45b4e688-4bc3-48b3-a105-ffa892995899"),("AND","AND-function-5f19b2e8-e1df-4408-897a-ce285a19e9d9"),("FALSE","FALSE-function-2d58dfa5-9c03-4259-bf8f-f0ae14346904"),("IF","IF-function-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2"),("IFERROR","IFERROR-function-c526fd07-caeb-47b8-8bb6-63f3e417f611"),("IFNA","IFNA-function-6626c961-a569-42fc-a49d-79b4951fd461"),("NOT","NOT-function-9cfc6011-a054-40c7-a140-cd4ba2d87d77"),("OR","OR-function-7d17ad14-8700-4281-b308-00b131e22af0"),("TRUE","TRUE-function-7652c6e3-8987-48d0-97cd-ef223246b3fb"),("XOR","XOR-function-1548d4c2-5e47-4f77-9a92-0533bba14f37"),("ADDRESS","ADDRESS-function-d0c26c0d-3991-446b-8de4-ab46431d4f89"),("AREAS","AREAS-function-8392ba32-7a41-43b3-96b0-3695d2ec6152"),("CHOOSE","CHOOSE-function-fc5c184f-cb62-4ec7-a46e-38653b98f5bc"),("COLUMN","COLUMN-function-44e8c754-711c-4df3-9da4-47a55042554b"),("COLUMNS","COLUMNS-function-4e8e7b4e-e603-43e8-b177-956088fa48ca"),("FORMULATEXT","FORMULATEXT-function-0a786771-54fd-4ae2-96ee-09cda35439c8"),("GETPIVOTDATA","GETPIVOTDATA-function-8c083b99-a922-4ca0-af5e-3af55960761f"),("HLOOKUP","HLOOKUP-function-a3034eec-b719-4ba3-bb65-e1ad662ed95f"),("HYPERLINK","HYPERLINK-function-333c7ce6-c5ae-4164-9c47-7de9b76f577f"),("INDEX","INDEX-function-a5dcf0dd-996d-40a4-a822-b56b061328bd"),("INDIRECT","INDIRECT-function-474b3a3a-8a26-4f44-b491-92b6306fa261"),("LOOKUP","LOOKUP-function-446d94af-663b-451d-8251-369d5e3864cb"),("MATCH","MATCH-function-e8dffd45-c762-47d6-bf89-533f4a37673a"),("OFFSET","OFFSET-function-c8de19ae-dd79-4b9b-a14e-b4d906d11b66"),("ROW","ROW-function-3a63b74a-c4d0-4093-b49a-e76eb49a6d8d"),("ROWS","ROWS-function-b592593e-3fc2-47f2-bec1-bda493811597"),("RTD","RTD-function-e0cc001a-56f0-470a-9b19-9455dc0eb593"),("TRANSPOSE","TRANSPOSE-function-ed039415-ed8a-4a81-93e9-4b6dfac76027"),("VLOOKUP","VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1"),("ABS","ABS-function-3420200f-5628-4e8c-99da-c99d7c87713c"),("ACOS","ACOS-function-cb73173f-d089-4582-afa1-76e5524b5d5b"),("ACOSH","ACOSH-function-e3992cc1-103f-4e72-9f04-624b9ef5ebfe"),("ACOT","ACOT-function-dc7e5008-fe6b-402e-bdd6-2eea8383d905"),("ACOTH","ACOTH-function-cc49480f-f684-4171-9fc5-73e4e852300f"),("AGGREGATE","AGGREGATE-function-43b9278e-6aa7-4f17-92b6-e19993fa26df"),("ARABIC","ARABIC-function-9a8da418-c17b-4ef9-a657-9370a30a674f"),("ASIN","ASIN-function-81fb95e5-6d6f-48c4-bc45-58f955c6d347"),("ASINH","ASINH-function-4e00475a-067a-43cf-926a-765b0249717c"),("ATAN","ATAN-function-50746fa8-630a-406b-81d0-4a2aed395543"),("ATAN2","ATAN2-function-c04592ab-b9e3-4908-b428-c96b3a565033"),("ATANH","ATANH-function-3cd65768-0de7-4f1d-b312-d01c8c930d90"),("BASE","BASE-function-2ef61411-aee9-4f29-a811-1c42456c6342"),("CEILING","CEILING-function-0a5cd7c8-0720-4f0a-bd2c-c943e510899f"),("CEILING.MATH","CEILINGMATH-function-80f95d2f-b499-4eee-9f16-f795a8e306c8"),("CEILING.PRECISE","CEILINGPRECISE-function-f366a774-527a-4c92-ba49-af0a196e66cb"),("COMBIN","COMBIN-function-12a3f276-0a21-423a-8de6-06990aaf638a"),("COMBINA","COMBINA-function-efb49eaa-4f4c-4cd2-8179-0ddfcf9d035d"),("COS","COS-function-0fb808a5-95d6-4553-8148-22aebdce5f05"),("COSH","COSH-function-e460d426-c471-43e8-9540-a57ff3b70555"),("COT","COT-function-c446f34d-6fe4-40dc-84f8-cf59e5f5e31a"),("COTH","COTH-function-2e0b4cb6-0ba0-403e-aed4-deaa71b49df5"),("CSC","CSC-function-07379361-219a-4398-8675-07ddc4f135c1"),("CSCH","CSCH-function-f58f2c22-eb75-4dd6-84f4-a503527f8eeb"),("DECIMAL","DECIMAL-function-ee554665-6176-46ef-82de-0a283658da2e"),("DEGREES","DEGREES-function-4d6ec4db-e694-4b94-ace0-1cc3f61f9ba1"),("EVEN","EVEN-function-197b5f06-c795-4c1e-8696-3c3b8a646cf9"),("EXP","EXP-function-c578f034-2c45-4c37-bc8c-329660a63abe"),("FACT","FACT-function-ca8588c2-15f2-41c0-8e8c-c11bd471a4f3"),("FACTDOUBLE","FACTDOUBLE-function-e67697ac-d214-48eb-b7b7-cce2589ecac8"),("FLOOR","FLOOR-function-14bb497c-24f2-4e04-b327-b0b4de5a8886"),("FLOOR.MATH","FLOORMATH-function-c302b599-fbdb-4177-ba19-2c2b1249a2f5"),("FLOOR.PRECISE","FLOORPRECISE-function-f769b468-1452-4617-8dc3-02f842a0702e"),("GCD","GCD-function-d5107a51-69e3-461f-8e4c-ddfc21b5073a"),("INT","INT-function-a6c4af9e-356d-4369-ab6a-cb1fd9d343ef"),("ISO.CEILING","ISOCEILING-function-e587bb73-6cc2-4113-b664-ff5b09859a83"),("LCM","LCM-function-7152b67a-8bb5-4075-ae5c-06ede5563c94"),("LN","LN-function-81fe1ed7-dac9-4acd-ba1d-07a142c6118f"),("LOG","LOG-function-4e82f196-1ca9-4747-8fb0-6c4a3abb3280"),("LOG10","LOG10-function-c75b881b-49dd-44fb-b6f4-37e3486a0211"),("MDETERM","MDETERM-function-e7bfa857-3834-422b-b871-0ffd03717020"),("MINVERSE","MINVERSE-function-11f55086-adde-4c9f-8eb9-59da2d72efc6"),("MMULT","MMULT-function-40593ed7-a3cd-4b6b-b9a3-e4ad3c7245eb"),("MOD","MOD-function-9b6cd169-b6ee-406a-a97b-edf2a9dc24f3"),("MROUND","MROUND-function-c299c3b0-15a5-426d-aa4b-d2d5b3baf427"),("MULTINOMIAL","MULTINOMIAL-function-6fa6373c-6533-41a2-a45e-a56db1db1bf6"),("MUNIT","MUNIT-function-c9fe916a-dc26-4105-997d-ba22799853a3"),("ODD","ODD-function-deae64eb-e08a-4c88-8b40-6d0b42575c98"),("PI","PI-function-264199d0-a3ba-46b8-975a-c4a04608989b"),("POWER","POWER-function-d3f2908b-56f4-4c3f-895a-07fb519c362a"),("PRODUCT","PRODUCT-function-8e6b5b24-90ee-4650-aeec-80982a0512ce"),("QUOTIENT","QUOTIENT-function-9f7bf099-2a18-4282-8fa4-65290cc99dee"),("RADIANS","RADIANS-function-ac409508-3d48-45f5-ac02-1497c92de5bf"),("RAND","RAND-function-4cbfa695-8869-4788-8d90-021ea9f5be73"),("RANDBETWEEN","RANDBETWEEN-function-4cc7f0d1-87dc-4eb7-987f-a469ab381685"),("ROMAN","ROMAN-function-d6b0b99e-de46-4704-a518-b45a0f8b56f5"),("ROUND","ROUND-function-c018c5d8-40fb-4053-90b1-b3e7f61a213c"),("ROUNDDOWN","ROUNDDOWN-function-2ec94c73-241f-4b01-8c6f-17e6d7968f53"),("ROUNDUP","ROUNDUP-function-f8bc9b23-e795-47db-8703-db171d0c42a7"),("SEC","SEC-function-ff224717-9c87-4170-9b58-d069ced6d5f7"),("SECH","SECH-function-e05a789f-5ff7-4d7f-984a-5edb9b09556f"),("SERIESSUM","SERIESSUM-function-a3ab25b5-1093-4f5b-b084-96c49087f637"),("SIGN","SIGN-function-109c932d-fcdc-4023-91f1-2dd0e916a1d8"),("SIN","SIN-function-cf0e3432-8b9e-483c-bc55-a76651c95602"),("SINH","SINH-function-1e4e8b9f-2b65-43fc-ab8a-0a37f4081fa7"),("SQRT","SQRT-function-654975c2-05c4-4831-9a24-2c65e4040fdf"),("SQRTPI","SQRTPI-function-1fb4e63f-9b51-46d6-ad68-b3e7a8b519b4"),("SUBTOTAL","SUBTOTAL-function-7b027003-f060-4ade-9040-e478765b9939"),("SUM","SUM-function-043e1c7d-7726-4e80-8f32-07b23e057f89"),("SUMIF","SUMIF-function-169b8c99-c05c-4483-a712-1697a653039b"),("SUMIFS","SUMIFS-function-c9e748f5-7ea7-455d-9406-611cebce642b"),("SUMPRODUCT","SUMPRODUCT-function-16753e75-9f68-4874-94ac-4d2145a2fd2e"),("SUMSQ","SUMSQ-function-e3313c02-51cc-4963-aae6-31442d9ec307"),("SUMX2MY2","SUMX2MY2-function-9e599cc5-5399-48e9-a5e0-e37812dfa3e9"),("SUMX2PY2","SUMX2PY2-function-826b60b4-0aa2-4e5e-81d2-be704d3d786f"),("SUMXMY2","SUMXMY2-function-9d144ac1-4d79-43de-b524-e2ecee23b299"),("TAN","TAN-function-08851a40-179f-4052-b789-d7f699447401"),("TANH","TANH-function-017222f0-a0c3-4f69-9787-b3202295dc6c"),("TRUNC","TRUNC-function-8b86a64c-3127-43db-ba14-aa5ceb292721"),("AVEDEV","AVEDEV-function-58fe8d65-2a84-4dc7-8052-f3f87b5c6639"),("AVERAGE","AVERAGE-function-047bac88-d466-426c-a32b-8f33eb960cf6"),("AVERAGEA","AVERAGEA-function-f5f84098-d453-4f4c-bbba-3d2c66356091"),("AVERAGEIF","AVERAGEIF-function-faec8e2e-0dec-4308-af69-f5576d8ac642"),("AVERAGEIFS","AVERAGEIFS-function-48910c45-1fc0-4389-a028-f7c5c3001690"),("BETA.DIST","BETADIST-function-11188c9c-780a-42c7-ba43-9ecb5a878d31"),("BETA.INV","BETAINV-function-e84cb8aa-8df0-4cf6-9892-83a341d252eb"),("BINOM.DIST","BINOMDIST-function-c5ae37b6-f39c-4be2-94c2-509a1480770c"),("BINOM.DIST.RANGE","BINOMDISTRANGE-function-17331329-74c7-4053-bb4c-6653a7421595"),("BINOM.INV","BINOMINV-function-80a0370c-ada6-49b4-83e7-05a91ba77ac9"),("CHISQ.DIST","CHISQDIST-function-8486b05e-5c05-4942-a9ea-f6b341518732"),("CHISQ.DIST.RT","CHISQDISTRT-function-dc4832e8-ed2b-49ae-8d7c-b28d5804c0f2"),("CHISQ.INV","CHISQINV-function-400db556-62b3-472d-80b3-254723e7092f"),("CHISQ.INV.RT","CHISQINVRT-function-435b5ed8-98d5-4da6-823f-293e2cbc94fe"),("CHISQ.TEST","CHISQTEST-function-2e8a7861-b14a-4985-aa93-fb88de3f260f"),("CONFIDENCE.NORM","CONFIDENCENORM-function-7cec58a6-85bb-488d-91c3-63828d4fbfd4"),("CONFIDENCE.T","CONFIDENCET-function-e8eca395-6c3a-4ba9-9003-79ccc61d3c53"),("CORREL","CORREL-function-995dcef7-0c0a-4bed-a3fb-239d7b68ca92"),("COUNT","COUNT-function-a59cd7fc-b623-4d93-87a4-d23bf411294c"),("COUNTA","COUNTA-function-7dc98875-d5c1-46f1-9a82-53f3219e2509"),("COUNTBLANK","COUNTBLANK-function-6a92d772-675c-4bee-b346-24af6bd3ac22"),("COUNTIF","COUNTIF-function-e0de10c6-f885-4e71-abb4-1f464816df34"),("COUNTIFS","COUNTIFS-function-dda3dc6e-f74e-4aee-88bc-aa8c2a866842"),("COVARIANCE.P","COVARIANCEP-function-6f0e1e6d-956d-4e4b-9943-cfef0bf9edfc"),("COVARIANCE.S","COVARIANCES-function-0a539b74-7371-42aa-a18f-1f5320314977"),("DEVSQ","DEVSQ-function-8b739616-8376-4df5-8bd0-cfe0a6caf444"),("EXPON.DIST","EXPONDIST-function-4c12ae24-e563-4155-bf3e-8b78b6ae140e"),("F.DIST","FDIST-function-a887efdc-7c8e-46cb-a74a-f884cd29b25d"),("F.DIST.RT","FDISTRT-function-d74cbb00-6017-4ac9-b7d7-6049badc0520"),("F.INV","FINV-function-0dda0cf9-4ea0-42fd-8c3c-417a1ff30dbe"),("F.INV.RT","FINVRT-function-d371aa8f-b0b1-40ef-9cc2-496f0693ac00"),("F.TEST","FTEST-function-100a59e7-4108-46f8-8443-78ffacb6c0a7"),("FISHER","FISHER-function-d656523c-5076-4f95-b87b-7741bf236c69"),("FISHERINV","FISHERINV-function-62504b39-415a-4284-a285-19c8e82f86bb"),("FORECAST","FORECAST-function-50ca49c9-7b40-4892-94e4-7ad38bbeda99"),("FORECAST.ETS","FORECASTETS-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets"),("FORECAST.ETS.CONFINT","FORECASTETSCONFINT-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets.confint"),("FORECAST.ETS.SEASONALITY","FORECASTETSSEASONALITY-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets.seasonality"),("FORECAST.ETS.STAT","FORECASTETSSTAT-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets.stat"),("FORECAST.LINEAR","FORECASTLINEAR-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.linear"),("FREQUENCY","FREQUENCY-function-44e3be2b-eca0-42cd-a3f7-fd9ea898fdb9"),("GAMMA","GAMMA-function-ce1702b1-cf55-471d-8307-f83be0fc5297"),("GAMMA.DIST","GAMMADIST-function-9b6f1538-d11c-4d5f-8966-21f6a2201def"),("GAMMA.INV","GAMMAINV-function-74991443-c2b0-4be5-aaab-1aa4d71fbb18"),("GAMMALN","GAMMALN-function-b838c48b-c65f-484f-9e1d-141c55470eb9"),("GAMMALN.PRECISE","GAMMALNPRECISE-function-5cdfe601-4e1e-4189-9d74-241ef1caa599"),("GAUSS","GAUSS-function-069f1b4e-7dee-4d6a-a71f-4b69044a6b33"),("GEOMEAN","GEOMEAN-function-db1ac48d-25a5-40a0-ab83-0b38980e40d5"),("GROWTH","GROWTH-function-541a91dc-3d5e-437d-b156-21324e68b80d"),("HARMEAN","HARMEAN-function-5efd9184-fab5-42f9-b1d3-57883a1d3bc6"),("HYPGEOM.DIST","HYPGEOMDIST-function-6dbd547f-1d12-4b1f-8ae5-b0d9e3d22fbf"),("INTERCEPT","INTERCEPT-function-2a9b74e2-9d47-4772-b663-3bca70bf63ef"),("KURT","KURT-function-bc3a265c-5da4-4dcb-b7fd-c237789095ab"),("LARGE","LARGE-function-3af0af19-1190-42bb-bb8b-01672ec00a64"),("LINEST","LINEST-function-84d7d0d9-6e50-4101-977a-fa7abf772b6d"),("LOGEST","LOGEST-function-f27462d8-3657-4030-866b-a272c1d18b4b"),("LOGNORM.DIST","LOGNORMDIST-function-eb60d00b-48a9-4217-be2b-6074aee6b070"),("LOGNORM.INV","LOGNORMINV-function-fe79751a-f1f2-4af8-a0a1-e151b2d4f600"),("MAX","MAX-function-e0012414-9ac8-4b34-9a47-73e662c08098"),("MAXA","MAXA-function-814bda1e-3840-4bff-9365-2f59ac2ee62d"),("MEDIAN","MEDIAN-function-d0916313-4753-414c-8537-ce85bdd967d2"),("MIN","MIN-function-61635d12-920f-4ce2-a70f-96f202dcc152"),("MINA","MINA-function-245a6f46-7ca5-4dc7-ab49-805341bc31d3"),("MODE.MULT","MODEMULT-function-50fd9464-b2ba-4191-b57a-39446689ae8c"),("MODE.SNGL","MODESNGL-function-f1267c16-66c6-4386-959f-8fba5f8bb7f8"),("NEGBINOM.DIST","NEGBINOMDIST-function-c8239f89-c2d0-45bd-b6af-172e570f8599"),("NORM.DIST","NORMDIST-function-edb1cc14-a21c-4e53-839d-8082074c9f8d"),("NORM.INV","NORMINV-function-54b30935-fee7-493c-bedb-2278a9db7e13"),("NORM.S.DIST","NORMSDIST-function-1e787282-3832-4520-a9ae-bd2a8d99ba88"),("NORM.S.INV","NORMSINV-function-d6d556b4-ab7f-49cd-b526-5a20918452b1"),("PEARSON","PEARSON-function-0c3e30fc-e5af-49c4-808a-3ef66e034c18"),("PERCENTILE.EXC","PERCENTILEEXC-function-bbaa7204-e9e1-4010-85bf-c31dc5dce4ba"),("PERCENTILE.INC","PERCENTILEINC-function-680f9539-45eb-410b-9a5e-c1355e5fe2ed"),("PERCENTRANK.EXC","PERCENTRANKEXC-function-d8afee96-b7e2-4a2f-8c01-8fcdedaa6314"),("PERCENTRANK.INC","PERCENTRANKINC-function-149592c9-00c0-49ba-86c1-c1f45b80463a"),("PERMUT","PERMUT-function-3bd1cb9a-2880-41ab-a197-f246a7a602d3"),("PERMUTATIONA","PERMUTATIONA-function-6c7d7fdc-d657-44e6-aa19-2857b25cae4e"),("PHI","PHI-function-23e49bc6-a8e8-402d-98d3-9ded87f6295c"),("POISSON.DIST","POISSONDIST-function-8fe148ff-39a2-46cb-abf3-7772695d9636"),("PROB","PROB-function-9ac30561-c81c-4259-8253-34f0a238fc49"),("QUARTILE.EXC","QUARTILEEXC-function-5a355b7a-840b-4a01-b0f1-f538c2864cad"),("QUARTILE.INC","QUARTILEINC-function-1bbacc80-5075-42f1-aed6-47d735c4819d"),("RANK.AVG","RANKAVG-function-bd406a6f-eb38-4d73-aa8e-6d1c3c72e83a"),("RANK.EQ","RANKEQ-function-284858ce-8ef6-450e-b662-26245be04a40"),("RSQ","RSQ-function-d7161715-250d-4a01-b80d-a8364f2be08f"),("SKEW","SKEW-function-bdf49d86-b1ef-4804-a046-28eaea69c9fa"),("SKEW.P","SKEWP-function-76530a5c-99b9-48a1-8392-26632d542fcb"),("SLOPE","SLOPE-function-11fb8f97-3117-4813-98aa-61d7e01276b9"),("SMALL","SMALL-function-17da8222-7c82-42b2-961b-14c45384df07"),("STANDARDIZE","STANDARDIZE-function-81d66554-2d54-40ec-ba83-6437108ee775"),("STDEV.P","STDEVP-function-6e917c05-31a0-496f-ade7-4f4e7462f285"),("STDEV.S","STDEVS-function-7d69cf97-0c1f-4acf-be27-f3e83904cc23"),("STDEVA","STDEVA-function-5ff38888-7ea5-48de-9a6d-11ed73b29e9d"),("STDEVPA","STDEVPA-function-5578d4d6-455a-4308-9991-d405afe2c28c"),("STEYX","STEYX-function-6ce74b2c-449d-4a6e-b9ac-f9cef5ba48ab"),("T.DIST","TDIST-function-4329459f-ae91-48c2-bba8-1ead1c6c21b2"),("T.DIST.2T","TDIST2T-function-198e9340-e360-4230-bd21-f52f22ff5c28"),("T.DIST.RT","TDISTRT-function-20a30020-86f9-4b35-af1f-7ef6ae683eda"),("T.INV","TINV-function-2908272b-4e61-4942-9df9-a25fec9b0e2e"),("T.INV.2T","TINV2T-function-ce72ea19-ec6c-4be7-bed2-b9baf2264f17"),("T.TEST","TTEST-function-d4e08ec3-c545-485f-962e-276f7cbed055"),("TREND","TREND-function-e2f135f0-8827-4096-9873-9a7cf7b51ef1"),("TRIMMEAN","TRIMMEAN-function-d90c9878-a119-4746-88fa-63d988f511d3"),("VAR.P","VARP-function-73d1285c-108c-4843-ba5d-a51f90656f3a"),("VAR.S","VARS-function-913633de-136b-449d-813e-65a00b2b990b"),("VARA","VARA-function-3de77469-fa3a-47b4-85fd-81758a1e1d07"),("VARPA","VARPA-function-59a62635-4e89-4fad-88ac-ce4dc0513b96"),("WEIBULL.DIST","WEIBULLDIST-function-4e783c39-9325-49be-bbc9-a83ef82b45db"),("Z.TEST","ZTEST-function-d633d5a3-2031-4614-a016-92180ad82bee"),("ASC","ASC-function-0b6abf1c-c663-4004-a964-ebc00b723266"),("BAHTTEXT","BAHTTEXT-function-5ba4d0b4-abd3-4325-8d22-7a92d59aab9c"),("CHAR","CHAR-function-bbd249c8-b36e-4a91-8017-1c133f9b837a"),("CLEAN","CLEAN-function-26f3d7c5-475f-4a9c-90e5-4b8ba987ba41"),("CODE","CODE-function-c32b692b-2ed0-4a04-bdd9-75640144b928"),("CONCATENATE","CONCATENATE-function-8f8ae884-2ca8-4f7a-b093-75d702bea31d"),("DBCS","DBCS-function-a4025e73-63d2-4958-9423-21a24794c9e5"),("DOLLAR","DOLLAR-function-a6cd05d9-9740-4ad3-a469-8109d18ff611"),("EXACT","EXACT-function-d3087698-fc15-4a15-9631-12575cf29926"),("FIND","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("FINDB","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("FIXED","FIXED-function-ffd5723c-324c-45e9-8b96-e41be2a8274a"),("LEFT","LEFT-LEFTB-functions-9203d2d2-7960-479b-84c6-1ea52b99640c"),("LEFTB","LEFT-LEFTB-functions-9203d2d2-7960-479b-84c6-1ea52b99640c"),("LEN","LEN-LENB-functions-29236f94-cedc-429d-affd-b5e33d2c67cb"),("LENB","LEN-LENB-functions-29236f94-cedc-429d-affd-b5e33d2c67cb"),("LOWER","LOWER-function-3f21df02-a80c-44b2-afaf-81358f9fdeb4"),("MID","MID-MIDB-functions-d5f9e25c-d7d6-472e-b568-4ecb12433028"),("MIDB","MID-MIDB-functions-d5f9e25c-d7d6-472e-b568-4ecb12433028"),("NUMBERVALUE","NUMBERVALUE-function-1b05c8cf-2bfa-4437-af70-596c7ea7d879"),("PHONETIC","PHONETIC-function-9a329dac-0c0f-42f8-9a55-639086988554"),("PROPER","PROPER-function-52a5a283-e8b2-49be-8506-b2887b889f94"),("REPLACE","REPLACE-REPLACEB-functions-8d799074-2425-4a8a-84bc-82472868878a"),("REPLACEB","REPLACE-REPLACEB-functions-8d799074-2425-4a8a-84bc-82472868878a"),("REPT","REPT-function-04c4d778-e712-43b4-9c15-d656582bb061"),("RIGHT","RIGHT-RIGHTB-functions-240267ee-9afa-4639-a02b-f19e1786cf2f"),("RIGHTB","RIGHT-RIGHTB-functions-240267ee-9afa-4639-a02b-f19e1786cf2f"),("SEARCH","SEARCH-SEARCHB-functions-9ab04538-0e55-4719-a72e-b6f54513b495"),("SEARCHB","SEARCH-SEARCHB-functions-9ab04538-0e55-4719-a72e-b6f54513b495"),("SUBSTITUTE","SUBSTITUTE-function-6434944e-a904-4336-a9b0-1e58df3bc332"),("T","T-function-fb83aeec-45e7-4924-af95-53e073541228"),("TEXT","TEXT-function-20d5ac4d-7b94-49fd-bb38-93d29371225c"),("TRIM","TRIM-function-410388fa-c5df-49c6-b16c-9e5630b479f9"),("UNICHAR","UNICHAR-function-ffeb64f5-f131-44c6-b332-5cd72f0659b8"),("UNICODE","UNICODE-function-adb74aaa-a2a5-4dde-aff6-966e4e81f16f"),("UPPER","UPPER-function-c11f29b3-d1a3-4537-8df6-04d0049963d6"),("VALUE","VALUE-function-257d0108-07dc-437d-ae1c-bc2d3953d8c2"),("CALL","CALL-function-32d58445-e646-4ffd-8d5e-b45077a5e995"),("EUROCONVERT","EUROCONVERT-function-79c8fd67-c665-450c-bb6c-15fc92f8345c"),("REGISTER.ID","REGISTERID-function-f8f0af0f-fd66-4704-a0f2-87b27b175b50"),("SQL.REQUEST","SQLREQUEST-function-4da47f3a-ff08-46ed-886c-3329aa5df008"),("ENCODEURL","ENCODEURL-function-07c7fb90-7c60-4bff-8687-fac50fe33d0e"),("FILTERXML","FILTERXML-function-4df72efc-11ec-4951-86f5-c1374812f5b7"),("WEBSERVICE","WEBSERVICE-function-0546a35a-ecc6-4739-aed7-c0b7ce1562c4")]+[("SUM","SUM-function-043e1c7d-7726-4e80-8f32-07b23e057f89"),("IF","IF-function-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2"),("LOOKUP","LOOKUP-function-446d94af-663b-451d-8251-369d5e3864cb"),("VLOOKUP","VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1"),("MATCH","MATCH-function-e8dffd45-c762-47d6-bf89-533f4a37673a"),("CHOOSE","CHOOSE-function-fc5c184f-cb62-4ec7-a46e-38653b98f5bc"),("DATE","DATE-function-e36c0c8c-4104-49da-ab83-82328b832349"),("DAYS","DAYS-function-57740535-d549-4395-8728-0f07bff0b9df"),("FIND","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("FINDB","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("INDEX","INDEX-function-a5dcf0dd-996d-40a4-a822-b56b061328bd"),("BETADIST","BETADIST-function-49f1b9a9-a5da-470f-8077-5f1730b5fd47"),("BETAINV","BETAINV-function-8b914ade-b902-43c1-ac9c-c05c54f10d6c"),("BINOMDIST","BINOMDIST-function-506a663e-c4ca-428d-b9a8-05583d68789c"),("CHIDIST","CHIDIST-function-c90d0fbc-5b56-4f5f-ab57-34af1bf6897e"),("CHIINV","CHIINV-function-cfbea3f6-6e4f-40c9-a87f-20472e0512af"),("CHITEST","CHITEST-function-981ff871-b694-4134-848e-38ec704577ac"),("CONCATENATE","CONCATENATE-function-8f8ae884-2ca8-4f7a-b093-75d702bea31d"),("CONFIDENCE","CONFIDENCE-function-75ccc007-f77c-4343-bc14-673642091ad6"),("COVAR","COVAR-function-50479552-2c03-4daf-bd71-a5ab88b2db03"),("CRITBINOM","CRITBINOM-function-eb6b871d-796b-4d21-b69b-e4350d5f407b"),("EXPONDIST","EXPONDIST-function-68ab45fd-cd6d-4887-9770-9357eb8ee06a"),("FDIST","FDIST-function-ecf76fba-b3f1-4e7d-a57e-6a5b7460b786"),("FINV","FINV-function-4d46c97c-c368-4852-bc15-41e8e31140b1"),("FLOOR","FLOOR-function-14bb497c-24f2-4e04-b327-b0b4de5a8886"),("FORECAST","FORECAST-function-50ca49c9-7b40-4892-94e4-7ad38bbeda99"),("FTEST","FTEST-function-4c9e1202-53fe-428c-a737-976f6fc3f9fd"),("GAMMADIST","GAMMADIST-function-7327c94d-0f05-4511-83df-1dd7ed23e19e"),("GAMMAINV","GAMMAINV-function-06393558-37ab-47d0-aa63-432f99e7916d"),("HYPGEOMDIST","HYPGEOMDIST-function-23e37961-2871-4195-9629-d0b2c108a12e"),("LOGINV","LOGINV-function-0bd7631a-2725-482b-afb4-de23df77acfe"),("LOGNORMDIST","LOGNORMDIST-function-f8d194cb-9ee3-4034-8c75-1bdb3884100b"),("MODE","MODE-function-e45192ce-9122-4980-82ed-4bdc34973120"),("NEGBINOMDIST","NEGBINOMDIST-function-f59b0a37-bae2-408d-b115-a315609ba714"),("NORMDIST","NORMDIST-function-126db625-c53e-4591-9a22-c9ff422d6d58"),("NORMINV","NORMINV-function-87981ab8-2de0-4cb0-b1aa-e21d4cb879b8"),("NORMSDIST","NORMSDIST-function-463369ea-0345-445d-802a-4ff0d6ce7cac"),("NORMSINV","NORMSINV-function-8d1bce66-8e4d-4f3b-967c-30eed61f019d"),("PERCENTILE","PERCENTILE-function-91b43a53-543c-4708-93de-d626debdddca"),("PERCENTRANK","PERCENTRANK-function-f1b5836c-9619-4847-9fc9-080ec9024442"),("POISSON","POISSON-function-d81f7294-9d7c-4f75-bc23-80aa8624173a"),("QUARTILE","QUARTILE-function-93cf8f62-60cd-4fdb-8a92-8451041e1a2a"),("RANK","RANK-function-6a2fc49d-1831-4a03-9d8c-c279cf99f723"),("STDEV","STDEV-function-51fecaaa-231e-4bbb-9230-33650a72c9b0"),("STDEVP","STDEVP-function-1f7c1c88-1bec-4422-8242-e9f7dc8bb195"),("TDIST","TDIST-function-630a7695-4021-4853-9468-4a1f9dcdd192"),("TINV","TINV-function-a7c85b9d-90f5-41fe-9ca5-1cd2f3e1ed7c"),("TTEST","TTEST-function-1696ffc1-4811-40fd-9d13-a0eaad83c7ae"),("VAR","VAR-function-1f2b7ab2-954d-4e17-ba2c-9e58b15a7da2"),("VARP","VARP-function-26a541c4-ecee-464d-a731-bd4c575b1a6b"),("WEIBULL","WEIBULL-function-b83dc2c6-260b-4754-bef2-633196f6fdcc"),("ZTEST","ZTEST-function-8f33be8a-6bd6-4ecc-8e3a-d9a4420c4a6a"),("CUBEKPIMEMBER","CUBEKPIMEMBER-function-744608bf-2c62-42cd-b67a-a56109f4b03b"),("CUBEMEMBER","CUBEMEMBER-function-0f6a15b9-2c18-4819-ae89-e1b5c8b398ad"),("CUBEMEMBERPROPERTY","CUBEMEMBERPROPERTY-function-001e57d6-b35a-49e5-abcd-05ff599e8951"),("CUBERANKEDMEMBER","CUBERANKEDMEMBER-function-07efecde-e669-4075-b4bf-6b40df2dc4b3"),("CUBESET","CUBESET-function-5b2146bd-62d6-4d04-9d8f-670e993ee1d9"),("CUBESETCOUNT","CUBESETCOUNT-function-c4c2a438-c1ff-4061-80fe-982f2d705286"),("CUBEVALUE","CUBEVALUE-function-8733da24-26d1-4e34-9b3a-84a8f00dcbe0"),("DAVERAGE","DAVERAGE-function-a6a2d5ac-4b4b-48cd-a1d8-7b37834e5aee"),("DCOUNT","DCOUNT-function-c1fc7b93-fb0d-4d8d-97db-8d5f076eaeb1"),("DCOUNTA","DCOUNTA-function-00232a6d-5a66-4a01-a25b-c1653fda1244"),("DGET","DGET-function-455568bf-4eef-45f7-90f0-ec250d00892e"),("DMAX","DMAX-function-f4e8209d-8958-4c3d-a1ee-6351665d41c2"),("DMIN","DMIN-function-4ae6f1d9-1f26-40f1-a783-6dc3680192a3"),("DPRODUCT","DPRODUCT-function-4f96b13e-d49c-47a7-b769-22f6d017cb31"),("DSTDEV","DSTDEV-function-026b8c73-616d-4b5e-b072-241871c4ab96"),("DSTDEVP","DSTDEVP-function-04b78995-da03-4813-bbd9-d74fd0f5d94b"),("DSUM","DSUM-function-53181285-0c4b-4f5a-aaa3-529a322be41b"),("DVAR","DVAR-function-d6747ca9-99c7-48bb-996e-9d7af00f3ed1"),("DVARP","DVARP-function-eb0ba387-9cb7-45c8-81e9-0394912502fc"),("DATE","DATE-function-e36c0c8c-4104-49da-ab83-82328b832349"),("DATEDIF","DATEDIF-function-25dba1a4-2812-480b-84dd-8b32a451b35c"),("DATEVALUE","DATEVALUE-function-df8b07d4-7761-4a93-bc33-b7471bbff252"),("DAY","DAY-function-8a7d1cbb-6c7d-4ba1-8aea-25c134d03101"),("DAYS","DAYS-function-57740535-d549-4395-8728-0f07bff0b9df"),("DAYS360","DAYS360-function-b9a509fd-49ef-407e-94df-0cbda5718c2a"),("EDATE","EDATE-function-3c920eb2-6e66-44e7-a1f5-753ae47ee4f5"),("EOMONTH","EOMONTH-function-7314ffa1-2bc9-4005-9d66-f49db127d628"),("HOUR","HOUR-function-a3afa879-86cb-4339-b1b5-2dd2d7310ac7"),("ISOWEEKNUM","ISOWEEKNUM-function-1c2d0afe-d25b-4ab1-8894-8d0520e90e0e"),("MINUTE","MINUTE-function-af728df0-05c4-4b07-9eed-a84801a60589"),("MONTH","MONTH-function-579a2881-199b-48b2-ab90-ddba0eba86e8"),("NETWORKDAYS","NETWORKDAYS-function-48e717bf-a7a3-495f-969e-5005e3eb18e7"),("NETWORKDAYS.INTL","NETWORKDAYSINTL-function-a9b26239-4f20-46a1-9ab8-4e925bfd5e28"),("NOW","NOW-function-3337fd29-145a-4347-b2e6-20c904739c46"),("SECOND","SECOND-function-740d1cfc-553c-4099-b668-80eaa24e8af1"),("TIME","TIME-function-9a5aff99-8f7d-4611-845e-747d0b8d5457"),("TIMEVALUE","TIMEVALUE-function-0b615c12-33d8-4431-bf3d-f3eb6d186645"),("TODAY","TODAY-function-5eb3078d-a82c-4736-8930-2f51a028fdd9"),("WEEKDAY","WEEKDAY-function-60e44483-2ed1-439f-8bd0-e404c190949a"),("WEEKNUM","WEEKNUM-function-e5c43a03-b4ab-426c-b411-b18c13c75340"),("WORKDAY","WORKDAY-function-f764a5b7-05fc-4494-9486-60d494efbf33"),("WORKDAY.INTL","WORKDAYINTL-function-a378391c-9ba7-4678-8a39-39611a9bf81d"),("YEAR","YEAR-function-c64f017a-1354-490d-981f-578e8ec8d3b9"),("YEARFRAC","YEARFRAC-function-3844141e-c76d-4143-82b6-208454ddc6a8"),("BESSELI","BESSELI-function-8d33855c-9a8d-444b-98e0-852267b1c0df"),("BESSELJ","BESSELJ-function-839cb181-48de-408b-9d80-bd02982d94f7"),("BESSELK","BESSELK-function-606d11bc-06d3-4d53-9ecb-2803e2b90b70"),("BESSELY","BESSELY-function-f3a356b3-da89-42c3-8974-2da54d6353a2"),("BIN2DEC","BIN2DEC-function-63905b57-b3a0-453d-99f4-647bb519cd6c"),("BIN2HEX","BIN2HEX-function-0375e507-f5e5-4077-9af8-28d84f9f41cc"),("BIN2OCT","BIN2OCT-function-0a4e01ba-ac8d-4158-9b29-16c25c4c23fd"),("BITAND","BITAND-function-8a2be3d7-91c3-4b48-9517-64548008563a"),("BITLSHIFT","BITLSHIFT-function-c55bb27e-cacd-4c7c-b258-d80861a03c9c"),("BITOR","BITOR-function-f6ead5c8-5b98-4c9e-9053-8ad5234919b2"),("BITRSHIFT","BITRSHIFT-function-274d6996-f42c-4743-abdb-4ff95351222c"),("BITXOR","BITXOR-function-c81306a1-03f9-4e89-85ac-b86c3cba10e4"),("COMPLEX","COMPLEX-function-f0b8f3a9-51cc-4d6d-86fb-3a9362fa4128"),("CONVERT","CONVERT-function-d785bef1-808e-4aac-bdcd-666c810f9af2"),("DEC2BIN","DEC2BIN-function-0f63dd0e-5d1a-42d8-b511-5bf5c6d43838"),("DEC2HEX","DEC2HEX-function-6344ee8b-b6b5-4c6a-a672-f64666704619"),("DEC2OCT","DEC2OCT-function-c9d835ca-20b7-40c4-8a9e-d3be351ce00f"),("DELTA","DELTA-function-2f763672-c959-4e07-ac33-fe03220ba432"),("ERF","ERF-function-c53c7e7b-5482-4b6c-883e-56df3c9af349"),("ERF.PRECISE","ERFPRECISE-function-9a349593-705c-4278-9a98-e4122831a8e0"),("ERFC","ERFC-function-736e0318-70ba-4e8b-8d08-461fe68b71b3"),("ERFC.PRECISE","ERFCPRECISE-function-e90e6bab-f45e-45df-b2ac-cd2eb4d4a273"),("GESTEP","GESTEP-function-f37e7d2a-41da-4129-be95-640883fca9df"),("HEX2BIN","HEX2BIN-function-a13aafaa-5737-4920-8424-643e581828c1"),("HEX2DEC","HEX2DEC-function-8c8c3155-9f37-45a5-a3ee-ee5379ef106e"),("HEX2OCT","HEX2OCT-function-54d52808-5d19-4bd0-8a63-1096a5d11912"),("IMABS","IMABS-function-b31e73c6-d90c-4062-90bc-8eb351d765a1"),("IMAGINARY","IMAGINARY-function-dd5952fd-473d-44d9-95a1-9a17b23e428a"),("IMARGUMENT","IMARGUMENT-function-eed37ec1-23b3-4f59-b9f3-d340358a034a"),("IMCONJUGATE","IMCONJUGATE-function-2e2fc1ea-f32b-4f9b-9de6-233853bafd42"),("IMCOS","IMCOS-function-dad75277-f592-4a6b-ad6c-be93a808a53c"),("IMCOSH","IMCOSH-function-053e4ddb-4122-458b-be9a-457c405e90ff"),("IMCOT","IMCOT-function-dc6a3607-d26a-4d06-8b41-8931da36442c"),("IMCSC","IMCSC-function-9e158d8f-2ddf-46cd-9b1d-98e29904a323"),("IMCSCH","IMCSCH-function-c0ae4f54-5f09-4fef-8da0-dc33ea2c5ca9"),("IMDIV","IMDIV-function-a505aff7-af8a-4451-8142-77ec3d74d83f"),("IMEXP","IMEXP-function-c6f8da1f-e024-4c0c-b802-a60e7147a95f"),("IMLN","IMLN-function-32b98bcf-8b81-437c-a636-6fb3aad509d8"),("IMLOG10","IMLOG10-function-58200fca-e2a2-4271-8a98-ccd4360213a5"),("IMLOG2","IMLOG2-function-152e13b4-bc79-486c-a243-e6a676878c51"),("IMPOWER","IMPOWER-function-210fd2f5-f8ff-4c6a-9d60-30e34fbdef39"),("IMPRODUCT","IMPRODUCT-function-2fb8651a-a4f2-444f-975e-8ba7aab3a5ba"),("IMREAL","IMREAL-function-d12bc4c0-25d0-4bb3-a25f-ece1938bf366"),("IMSEC","IMSEC-function-6df11132-4411-4df4-a3dc-1f17372459e0"),("IMSECH","IMSECH-function-f250304f-788b-4505-954e-eb01fa50903b"),("IMSIN","IMSIN-function-1ab02a39-a721-48de-82ef-f52bf37859f6"),("IMSINH","IMSINH-function-dfb9ec9e-8783-4985-8c42-b028e9e8da3d"),("IMSQRT","IMSQRT-function-e1753f80-ba11-4664-a10e-e17368396b70"),("IMSUB","IMSUB-function-2e404b4d-4935-4e85-9f52-cb08b9a45054"),("IMSUM","IMSUM-function-81542999-5f1c-4da6-9ffe-f1d7aaa9457f"),("IMTAN","IMTAN-function-8478f45d-610a-43cf-8544-9fc0b553a132"),("OCT2BIN","OCT2BIN-function-55383471-3c56-4d27-9522-1a8ec646c589"),("OCT2DEC","OCT2DEC-function-87606014-cb98-44b2-8dbb-e48f8ced1554"),("OCT2HEX","OCT2HEX-function-912175b4-d497-41b4-a029-221f051b858f"),("ACCRINT","ACCRINT-function-fe45d089-6722-4fb3-9379-e1f911d8dc74"),("ACCRINTM","ACCRINTM-function-f62f01f9-5754-4cc4-805b-0e70199328a7"),("AMORDEGRC","AMORDEGRC-function-a14d0ca1-64a4-42eb-9b3d-b0dededf9e51"),("AMORLINC","AMORLINC-function-7d417b45-f7f5-4dba-a0a5-3451a81079a8"),("COUPDAYBS","COUPDAYBS-function-eb9a8dfb-2fb2-4c61-8e5d-690b320cf872"),("COUPDAYS","COUPDAYS-function-cc64380b-315b-4e7b-950c-b30b0a76f671"),("COUPDAYSNC","COUPDAYSNC-function-5ab3f0b2-029f-4a8b-bb65-47d525eea547"),("COUPNCD","COUPNCD-function-fd962fef-506b-4d9d-8590-16df5393691f"),("COUPNUM","COUPNUM-function-a90af57b-de53-4969-9c99-dd6139db2522"),("COUPPCD","COUPPCD-function-2eb50473-6ee9-4052-a206-77a9a385d5b3"),("CUMIPMT","CUMIPMT-function-61067bb0-9016-427d-b95b-1a752af0e606"),("CUMPRINC","CUMPRINC-function-94a4516d-bd65-41a1-bc16-053a6af4c04d"),("DB","DB-function-354e7d28-5f93-4ff1-8a52-eb4ee549d9d7"),("DDB","DDB-function-519a7a37-8772-4c96-85c0-ed2c209717a5"),("DISC","DISC-function-71fce9f3-3f05-4acf-a5a3-eac6ef4daa53"),("DOLLARDE","DOLLARDE-function-db85aab0-1677-428a-9dfd-a38476693427"),("DOLLARFR","DOLLARFR-function-0835d163-3023-4a33-9824-3042c5d4f495"),("DURATION","DURATION-function-b254ea57-eadc-4602-a86a-c8e369334038"),("EFFECT","EFFECT-function-910d4e4c-79e2-4009-95e6-507e04f11bc4"),("FV","FV-function-2eef9f44-a084-4c61-bdd8-4fe4bb1b71b3"),("FVSCHEDULE","FVSCHEDULE-function-bec29522-bd87-4082-bab9-a241f3fb251d"),("INTRATE","INTRATE-function-5cb34dde-a221-4cb6-b3eb-0b9e55e1316f"),("IPMT","IPMT-function-5cce0ad6-8402-4a41-8d29-61a0b054cb6f"),("IRR","IRR-function-64925eaa-9988-495b-b290-3ad0c163c1bc"),("ISPMT","ISPMT-function-fa58adb6-9d39-4ce0-8f43-75399cea56cc"),("MDURATION","MDURATION-function-b3786a69-4f20-469a-94ad-33e5b90a763c"),("MIRR","MIRR-function-b020f038-7492-4fb4-93c1-35c345b53524"),("NOMINAL","NOMINAL-function-7f1ae29b-6b92-435e-b950-ad8b190ddd2b"),("NPER","NPER-function-240535b5-6653-4d2d-bfcf-b6a38151d815"),("NPV","NPV-function-8672cb67-2576-4d07-b67b-ac28acf2a568"),("ODDFPRICE","ODDFPRICE-function-d7d664a8-34df-4233-8d2b-922bcf6a69e1"),("ODDFYIELD","ODDFYIELD-function-66bc8b7b-6501-4c93-9ce3-2fd16220fe37"),("ODDLPRICE","ODDLPRICE-function-fb657749-d200-4902-afaf-ed5445027fc4"),("ODDLYIELD","ODDLYIELD-function-c873d088-cf40-435f-8d41-c8232fee9238"),("PDURATION","PDURATION-function-44f33460-5be5-4c90-b857-22308892adaf"),("PMT","PMT-function-0214da64-9a63-4996-bc20-214433fa6441"),("PPMT","PPMT-function-c370d9e3-7749-4ca4-beea-b06c6ac95e1b"),("PRICE","PRICE-function-3ea9deac-8dfa-436f-a7c8-17ea02c21b0a"),("PRICEDISC","PRICEDISC-function-d06ad7c1-380e-4be7-9fd9-75e3079acfd3"),("PRICEMAT","PRICEMAT-function-52c3b4da-bc7e-476a-989f-a95f675cae77"),("PV","PV-function-23879d31-0e02-4321-be01-da16e8168cbd"),("RATE","RATE-function-9f665657-4a7e-4bb7-a030-83fc59e748ce"),("RECEIVED","RECEIVED-function-7a3f8b93-6611-4f81-8576-828312c9b5e5"),("RRI","RRI-function-6f5822d8-7ef1-4233-944c-79e8172930f4"),("SLN","SLN-function-cdb666e5-c1c6-40a7-806a-e695edc2f1c8"),("SYD","SYD-function-069f8106-b60b-4ca2-98e0-2a0f206bdb27"),("TBILLEQ","TBILLEQ-function-2ab72d90-9b4d-4efe-9fc2-0f81f2c19c8c"),("TBILLPRICE","TBILLPRICE-function-eacca992-c29d-425a-9eb8-0513fe6035a2"),("TBILLYIELD","TBILLYIELD-function-6d381232-f4b0-4cd5-8e97-45b9c03468ba"),("VDB","VDB-function-dde4e207-f3fa-488d-91d2-66d55e861d73"),("XIRR","XIRR-function-de1242ec-6477-445b-b11b-a303ad9adc9d"),("XNPV","XNPV-function-1b42bbf6-370f-4532-a0eb-d67c16b664b7"),("YIELD","YIELD-function-f5f5ca43-c4bd-434f-8bd2-ed3c9727a4fe"),("YIELDDISC","YIELDDISC-function-a9dbdbae-7dae-46de-b995-615faffaaed7"),("YIELDMAT","YIELDMAT-function-ba7d1809-0d33-4bcb-96c7-6c56ec62ef6f"),("CELL","CELL-function-51bd39a5-f338-4dbe-a33f-955d67c2b2cf"),("ERROR.TYPE","ERRORTYPE-function-10958677-7c8d-44f7-ae77-b9a9ee6eefaa"),("INFO","INFO-function-725f259a-0e4b-49b3-8b52-58815c69acae"),("ISBLANK","ISBLANK-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISERR","ISERR-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISERROR","ISERROR-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISEVEN","ISEVEN-function-aa15929a-d77b-4fbb-92f4-2f479af55356"),("ISFORMULA","ISFORMULA-function-e4d1355f-7121-4ef2-801e-3839bfd6b1e5"),("ISLOGICAL","ISLOGICAL-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISNA","ISNA-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISNONTEXT","ISNONTEXT-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISNUMBER","ISNUMBER-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISODD","ISODD-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISREF","ISREF-function-0f2d7971-6019-40a0-a171-f2d869135665"),("ISTEXT","ISTEXT-function-0f2d7971-6019-40a0-a171-f2d869135665"),("N","N-function-a624cad1-3635-4208-b54a-29733d1278c9"),("NA","NA-function-5469c2d1-a90c-4fb5-9bbc-64bd9bb6b47c"),("SHEET","SHEET-function-44718b6f-8b87-47a1-a9d6-b701c06cff24"),("SHEETS","SHEETS-function-770515eb-e1e8-45ce-8066-b557e5e4b80b"),("TYPE","TYPE-function-45b4e688-4bc3-48b3-a105-ffa892995899"),("AND","AND-function-5f19b2e8-e1df-4408-897a-ce285a19e9d9"),("FALSE","FALSE-function-2d58dfa5-9c03-4259-bf8f-f0ae14346904"),("IF","IF-function-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2"),("IFERROR","IFERROR-function-c526fd07-caeb-47b8-8bb6-63f3e417f611"),("IFNA","IFNA-function-6626c961-a569-42fc-a49d-79b4951fd461"),("IFS","IFS-function-36329a26-37b2-467c-972b-4a39bd951d45"),("NOT","NOT-function-9cfc6011-a054-40c7-a140-cd4ba2d87d77"),("OR","OR-function-7d17ad14-8700-4281-b308-00b131e22af0"),("SWITCH","SWITCH-function-47ab33c0-28ce-4530-8a45-d532ec4aa25e"),("TRUE","TRUE-function-7652c6e3-8987-48d0-97cd-ef223246b3fb"),("XOR","XOR-function-1548d4c2-5e47-4f77-9a92-0533bba14f37"),("ADDRESS","ADDRESS-function-d0c26c0d-3991-446b-8de4-ab46431d4f89"),("AREAS","AREAS-function-8392ba32-7a41-43b3-96b0-3695d2ec6152"),("CHOOSE","CHOOSE-function-fc5c184f-cb62-4ec7-a46e-38653b98f5bc"),("COLUMN","COLUMN-function-44e8c754-711c-4df3-9da4-47a55042554b"),("COLUMNS","COLUMNS-function-4e8e7b4e-e603-43e8-b177-956088fa48ca"),("FORMULATEXT","FORMULATEXT-function-0a786771-54fd-4ae2-96ee-09cda35439c8"),("GETPIVOTDATA","GETPIVOTDATA-function-8c083b99-a922-4ca0-af5e-3af55960761f"),("HLOOKUP","HLOOKUP-function-a3034eec-b719-4ba3-bb65-e1ad662ed95f"),("HYPERLINK","HYPERLINK-function-333c7ce6-c5ae-4164-9c47-7de9b76f577f"),("INDEX","INDEX-function-a5dcf0dd-996d-40a4-a822-b56b061328bd"),("INDIRECT","INDIRECT-function-474b3a3a-8a26-4f44-b491-92b6306fa261"),("LOOKUP","LOOKUP-function-446d94af-663b-451d-8251-369d5e3864cb"),("MATCH","MATCH-function-e8dffd45-c762-47d6-bf89-533f4a37673a"),("OFFSET","OFFSET-function-c8de19ae-dd79-4b9b-a14e-b4d906d11b66"),("ROW","ROW-function-3a63b74a-c4d0-4093-b49a-e76eb49a6d8d"),("ROWS","ROWS-function-b592593e-3fc2-47f2-bec1-bda493811597"),("RTD","RTD-function-e0cc001a-56f0-470a-9b19-9455dc0eb593"),("TRANSPOSE","TRANSPOSE-function-ed039415-ed8a-4a81-93e9-4b6dfac76027"),("VLOOKUP","VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1"),("ABS","ABS-function-3420200f-5628-4e8c-99da-c99d7c87713c"),("ACOS","ACOS-function-cb73173f-d089-4582-afa1-76e5524b5d5b"),("ACOSH","ACOSH-function-e3992cc1-103f-4e72-9f04-624b9ef5ebfe"),("ACOT","ACOT-function-dc7e5008-fe6b-402e-bdd6-2eea8383d905"),("ACOTH","ACOTH-function-cc49480f-f684-4171-9fc5-73e4e852300f"),("AGGREGATE","AGGREGATE-function-43b9278e-6aa7-4f17-92b6-e19993fa26df"),("ARABIC","ARABIC-function-9a8da418-c17b-4ef9-a657-9370a30a674f"),("ASIN","ASIN-function-81fb95e5-6d6f-48c4-bc45-58f955c6d347"),("ASINH","ASINH-function-4e00475a-067a-43cf-926a-765b0249717c"),("ATAN","ATAN-function-50746fa8-630a-406b-81d0-4a2aed395543"),("ATAN2","ATAN2-function-c04592ab-b9e3-4908-b428-c96b3a565033"),("ATANH","ATANH-function-3cd65768-0de7-4f1d-b312-d01c8c930d90"),("BASE","BASE-function-2ef61411-aee9-4f29-a811-1c42456c6342"),("CEILING","CEILING-function-0a5cd7c8-0720-4f0a-bd2c-c943e510899f"),("CEILING.MATH","CEILINGMATH-function-80f95d2f-b499-4eee-9f16-f795a8e306c8"),("CEILING.PRECISE","CEILINGPRECISE-function-f366a774-527a-4c92-ba49-af0a196e66cb"),("COMBIN","COMBIN-function-12a3f276-0a21-423a-8de6-06990aaf638a"),("COMBINA","COMBINA-function-efb49eaa-4f4c-4cd2-8179-0ddfcf9d035d"),("COS","COS-function-0fb808a5-95d6-4553-8148-22aebdce5f05"),("COSH","COSH-function-e460d426-c471-43e8-9540-a57ff3b70555"),("COT","COT-function-c446f34d-6fe4-40dc-84f8-cf59e5f5e31a"),("COTH","COTH-function-2e0b4cb6-0ba0-403e-aed4-deaa71b49df5"),("CSC","CSC-function-07379361-219a-4398-8675-07ddc4f135c1"),("CSCH","CSCH-function-f58f2c22-eb75-4dd6-84f4-a503527f8eeb"),("DECIMAL","DECIMAL-function-ee554665-6176-46ef-82de-0a283658da2e"),("DEGREES","DEGREES-function-4d6ec4db-e694-4b94-ace0-1cc3f61f9ba1"),("EVEN","EVEN-function-197b5f06-c795-4c1e-8696-3c3b8a646cf9"),("EXP","EXP-function-c578f034-2c45-4c37-bc8c-329660a63abe"),("FACT","FACT-function-ca8588c2-15f2-41c0-8e8c-c11bd471a4f3"),("FACTDOUBLE","FACTDOUBLE-function-e67697ac-d214-48eb-b7b7-cce2589ecac8"),("FLOOR","FLOOR-function-14bb497c-24f2-4e04-b327-b0b4de5a8886"),("FLOOR.MATH","FLOORMATH-function-c302b599-fbdb-4177-ba19-2c2b1249a2f5"),("FLOOR.PRECISE","FLOORPRECISE-function-f769b468-1452-4617-8dc3-02f842a0702e"),("GCD","GCD-function-d5107a51-69e3-461f-8e4c-ddfc21b5073a"),("INT","INT-function-a6c4af9e-356d-4369-ab6a-cb1fd9d343ef"),("ISO.CEILING","ISOCEILING-function-e587bb73-6cc2-4113-b664-ff5b09859a83"),("LCM","LCM-function-7152b67a-8bb5-4075-ae5c-06ede5563c94"),("LN","LN-function-81fe1ed7-dac9-4acd-ba1d-07a142c6118f"),("LOG","LOG-function-4e82f196-1ca9-4747-8fb0-6c4a3abb3280"),("LOG10","LOG10-function-c75b881b-49dd-44fb-b6f4-37e3486a0211"),("MDETERM","MDETERM-function-e7bfa857-3834-422b-b871-0ffd03717020"),("MINVERSE","MINVERSE-function-11f55086-adde-4c9f-8eb9-59da2d72efc6"),("MMULT","MMULT-function-40593ed7-a3cd-4b6b-b9a3-e4ad3c7245eb"),("MOD","MOD-function-9b6cd169-b6ee-406a-a97b-edf2a9dc24f3"),("MROUND","MROUND-function-c299c3b0-15a5-426d-aa4b-d2d5b3baf427"),("MULTINOMIAL","MULTINOMIAL-function-6fa6373c-6533-41a2-a45e-a56db1db1bf6"),("MUNIT","MUNIT-function-c9fe916a-dc26-4105-997d-ba22799853a3"),("ODD","ODD-function-deae64eb-e08a-4c88-8b40-6d0b42575c98"),("PI","PI-function-264199d0-a3ba-46b8-975a-c4a04608989b"),("POWER","POWER-function-d3f2908b-56f4-4c3f-895a-07fb519c362a"),("PRODUCT","PRODUCT-function-8e6b5b24-90ee-4650-aeec-80982a0512ce"),("QUOTIENT","QUOTIENT-function-9f7bf099-2a18-4282-8fa4-65290cc99dee"),("RADIANS","RADIANS-function-ac409508-3d48-45f5-ac02-1497c92de5bf"),("RAND","RAND-function-4cbfa695-8869-4788-8d90-021ea9f5be73"),("RANDBETWEEN","RANDBETWEEN-function-4cc7f0d1-87dc-4eb7-987f-a469ab381685"),("ROMAN","ROMAN-function-d6b0b99e-de46-4704-a518-b45a0f8b56f5"),("ROUND","ROUND-function-c018c5d8-40fb-4053-90b1-b3e7f61a213c"),("ROUNDDOWN","ROUNDDOWN-function-2ec94c73-241f-4b01-8c6f-17e6d7968f53"),("ROUNDUP","ROUNDUP-function-f8bc9b23-e795-47db-8703-db171d0c42a7"),("SEC","SEC-function-ff224717-9c87-4170-9b58-d069ced6d5f7"),("SECH","SECH-function-e05a789f-5ff7-4d7f-984a-5edb9b09556f"),("SERIESSUM","SERIESSUM-function-a3ab25b5-1093-4f5b-b084-96c49087f637"),("SIGN","SIGN-function-109c932d-fcdc-4023-91f1-2dd0e916a1d8"),("SIN","SIN-function-cf0e3432-8b9e-483c-bc55-a76651c95602"),("SINH","SINH-function-1e4e8b9f-2b65-43fc-ab8a-0a37f4081fa7"),("SQRT","SQRT-function-654975c2-05c4-4831-9a24-2c65e4040fdf"),("SQRTPI","SQRTPI-function-1fb4e63f-9b51-46d6-ad68-b3e7a8b519b4"),("SUBTOTAL","SUBTOTAL-function-7b027003-f060-4ade-9040-e478765b9939"),("SUM","SUM-function-043e1c7d-7726-4e80-8f32-07b23e057f89"),("SUMIF","SUMIF-function-169b8c99-c05c-4483-a712-1697a653039b"),("SUMIFS","SUMIFS-function-c9e748f5-7ea7-455d-9406-611cebce642b"),("SUMPRODUCT","SUMPRODUCT-function-16753e75-9f68-4874-94ac-4d2145a2fd2e"),("SUMSQ","SUMSQ-function-e3313c02-51cc-4963-aae6-31442d9ec307"),("SUMX2MY2","SUMX2MY2-function-9e599cc5-5399-48e9-a5e0-e37812dfa3e9"),("SUMX2PY2","SUMX2PY2-function-826b60b4-0aa2-4e5e-81d2-be704d3d786f"),("SUMXMY2","SUMXMY2-function-9d144ac1-4d79-43de-b524-e2ecee23b299"),("TAN","TAN-function-08851a40-179f-4052-b789-d7f699447401"),("TANH","TANH-function-017222f0-a0c3-4f69-9787-b3202295dc6c"),("TRUNC","TRUNC-function-8b86a64c-3127-43db-ba14-aa5ceb292721"),("AVEDEV","AVEDEV-function-58fe8d65-2a84-4dc7-8052-f3f87b5c6639"),("AVERAGE","AVERAGE-function-047bac88-d466-426c-a32b-8f33eb960cf6"),("AVERAGEA","AVERAGEA-function-f5f84098-d453-4f4c-bbba-3d2c66356091"),("AVERAGEIF","AVERAGEIF-function-faec8e2e-0dec-4308-af69-f5576d8ac642"),("AVERAGEIFS","AVERAGEIFS-function-48910c45-1fc0-4389-a028-f7c5c3001690"),("BETA.DIST","BETADIST-function-11188c9c-780a-42c7-ba43-9ecb5a878d31"),("BETA.INV","BETAINV-function-e84cb8aa-8df0-4cf6-9892-83a341d252eb"),("BINOM.DIST","BINOMDIST-function-c5ae37b6-f39c-4be2-94c2-509a1480770c"),("BINOM.DIST.RANGE","BINOMDISTRANGE-function-17331329-74c7-4053-bb4c-6653a7421595"),("BINOM.INV","BINOMINV-function-80a0370c-ada6-49b4-83e7-05a91ba77ac9"),("CHISQ.DIST","CHISQDIST-function-8486b05e-5c05-4942-a9ea-f6b341518732"),("CHISQ.DIST.RT","CHISQDISTRT-function-dc4832e8-ed2b-49ae-8d7c-b28d5804c0f2"),("CHISQ.INV","CHISQINV-function-400db556-62b3-472d-80b3-254723e7092f"),("CHISQ.INV.RT","CHISQINVRT-function-435b5ed8-98d5-4da6-823f-293e2cbc94fe"),("CHISQ.TEST","CHISQTEST-function-2e8a7861-b14a-4985-aa93-fb88de3f260f"),("CONFIDENCE.NORM","CONFIDENCENORM-function-7cec58a6-85bb-488d-91c3-63828d4fbfd4"),("CONFIDENCE.T","CONFIDENCET-function-e8eca395-6c3a-4ba9-9003-79ccc61d3c53"),("CORREL","CORREL-function-995dcef7-0c0a-4bed-a3fb-239d7b68ca92"),("COUNT","COUNT-function-a59cd7fc-b623-4d93-87a4-d23bf411294c"),("COUNTA","COUNTA-function-7dc98875-d5c1-46f1-9a82-53f3219e2509"),("COUNTBLANK","COUNTBLANK-function-6a92d772-675c-4bee-b346-24af6bd3ac22"),("COUNTIF","COUNTIF-function-e0de10c6-f885-4e71-abb4-1f464816df34"),("COUNTIFS","COUNTIFS-function-dda3dc6e-f74e-4aee-88bc-aa8c2a866842"),("COVARIANCE.P","COVARIANCEP-function-6f0e1e6d-956d-4e4b-9943-cfef0bf9edfc"),("COVARIANCE.S","COVARIANCES-function-0a539b74-7371-42aa-a18f-1f5320314977"),("DEVSQ","DEVSQ-function-8b739616-8376-4df5-8bd0-cfe0a6caf444"),("EXPON.DIST","EXPONDIST-function-4c12ae24-e563-4155-bf3e-8b78b6ae140e"),("F.DIST","FDIST-function-a887efdc-7c8e-46cb-a74a-f884cd29b25d"),("F.DIST.RT","FDISTRT-function-d74cbb00-6017-4ac9-b7d7-6049badc0520"),("F.INV","FINV-function-0dda0cf9-4ea0-42fd-8c3c-417a1ff30dbe"),("F.INV.RT","FINVRT-function-d371aa8f-b0b1-40ef-9cc2-496f0693ac00"),("F.TEST","FTEST-function-100a59e7-4108-46f8-8443-78ffacb6c0a7"),("FISHER","FISHER-function-d656523c-5076-4f95-b87b-7741bf236c69"),("FISHERINV","FISHERINV-function-62504b39-415a-4284-a285-19c8e82f86bb"),("FORECAST","FORECAST-function-50ca49c9-7b40-4892-94e4-7ad38bbeda99"),("FORECAST.ETS","FORECASTETS-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets"),("FORECAST.ETS.CONFINT","FORECASTETSCONFINT-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets.confint"),("FORECAST.ETS.SEASONALITY","FORECASTETSSEASONALITY-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets.seasonality"),("FORECAST.ETS.STAT","FORECASTETSSTAT-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.ets.stat"),("FORECAST.LINEAR","FORECASTLINEAR-function-897a2fe9-6595-4680-a0b0-93e0308d5f6e#_forecast.linear"),("FREQUENCY","FREQUENCY-function-44e3be2b-eca0-42cd-a3f7-fd9ea898fdb9"),("GAMMA","GAMMA-function-ce1702b1-cf55-471d-8307-f83be0fc5297"),("GAMMA.DIST","GAMMADIST-function-9b6f1538-d11c-4d5f-8966-21f6a2201def"),("GAMMA.INV","GAMMAINV-function-74991443-c2b0-4be5-aaab-1aa4d71fbb18"),("GAMMALN","GAMMALN-function-b838c48b-c65f-484f-9e1d-141c55470eb9"),("GAMMALN.PRECISE","GAMMALNPRECISE-function-5cdfe601-4e1e-4189-9d74-241ef1caa599"),("GAUSS","GAUSS-function-069f1b4e-7dee-4d6a-a71f-4b69044a6b33"),("GEOMEAN","GEOMEAN-function-db1ac48d-25a5-40a0-ab83-0b38980e40d5"),("GROWTH","GROWTH-function-541a91dc-3d5e-437d-b156-21324e68b80d"),("HARMEAN","HARMEAN-function-5efd9184-fab5-42f9-b1d3-57883a1d3bc6"),("HYPGEOM.DIST","HYPGEOMDIST-function-6dbd547f-1d12-4b1f-8ae5-b0d9e3d22fbf"),("INTERCEPT","INTERCEPT-function-2a9b74e2-9d47-4772-b663-3bca70bf63ef"),("KURT","KURT-function-bc3a265c-5da4-4dcb-b7fd-c237789095ab"),("LARGE","LARGE-function-3af0af19-1190-42bb-bb8b-01672ec00a64"),("LINEST","LINEST-function-84d7d0d9-6e50-4101-977a-fa7abf772b6d"),("LOGEST","LOGEST-function-f27462d8-3657-4030-866b-a272c1d18b4b"),("LOGNORM.DIST","LOGNORMDIST-function-eb60d00b-48a9-4217-be2b-6074aee6b070"),("LOGNORM.INV","LOGNORMINV-function-fe79751a-f1f2-4af8-a0a1-e151b2d4f600"),("MAX","MAX-function-e0012414-9ac8-4b34-9a47-73e662c08098"),("MAXA","MAXA-function-814bda1e-3840-4bff-9365-2f59ac2ee62d"),("MAXIFS","MAXIFS-function-dfd611e6-da2c-488a-919b-9b6376b28883"),("MEDIAN","MEDIAN-function-d0916313-4753-414c-8537-ce85bdd967d2"),("MIN","MIN-function-61635d12-920f-4ce2-a70f-96f202dcc152"),("MINA","MINA-function-245a6f46-7ca5-4dc7-ab49-805341bc31d3"),("MINIFS","MINIFS-function-6ca1ddaa-079b-4e74-80cc-72eef32e6599"),("MODE.MULT","MODEMULT-function-50fd9464-b2ba-4191-b57a-39446689ae8c"),("MODE.SNGL","MODESNGL-function-f1267c16-66c6-4386-959f-8fba5f8bb7f8"),("NEGBINOM.DIST","NEGBINOMDIST-function-c8239f89-c2d0-45bd-b6af-172e570f8599"),("NORM.DIST","NORMDIST-function-edb1cc14-a21c-4e53-839d-8082074c9f8d"),("NORM.INV","NORMINV-function-54b30935-fee7-493c-bedb-2278a9db7e13"),("NORM.S.DIST","NORMSDIST-function-1e787282-3832-4520-a9ae-bd2a8d99ba88"),("NORM.S.INV","NORMSINV-function-d6d556b4-ab7f-49cd-b526-5a20918452b1"),("PEARSON","PEARSON-function-0c3e30fc-e5af-49c4-808a-3ef66e034c18"),("PERCENTILE.EXC","PERCENTILEEXC-function-bbaa7204-e9e1-4010-85bf-c31dc5dce4ba"),("PERCENTILE.INC","PERCENTILEINC-function-680f9539-45eb-410b-9a5e-c1355e5fe2ed"),("PERCENTRANK.EXC","PERCENTRANKEXC-function-d8afee96-b7e2-4a2f-8c01-8fcdedaa6314"),("PERCENTRANK.INC","PERCENTRANKINC-function-149592c9-00c0-49ba-86c1-c1f45b80463a"),("PERMUT","PERMUT-function-3bd1cb9a-2880-41ab-a197-f246a7a602d3"),("PERMUTATIONA","PERMUTATIONA-function-6c7d7fdc-d657-44e6-aa19-2857b25cae4e"),("PHI","PHI-function-23e49bc6-a8e8-402d-98d3-9ded87f6295c"),("POISSON.DIST","POISSONDIST-function-8fe148ff-39a2-46cb-abf3-7772695d9636"),("PROB","PROB-function-9ac30561-c81c-4259-8253-34f0a238fc49"),("QUARTILE.EXC","QUARTILEEXC-function-5a355b7a-840b-4a01-b0f1-f538c2864cad"),("QUARTILE.INC","QUARTILEINC-function-1bbacc80-5075-42f1-aed6-47d735c4819d"),("RANK.AVG","RANKAVG-function-bd406a6f-eb38-4d73-aa8e-6d1c3c72e83a"),("RANK.EQ","RANKEQ-function-284858ce-8ef6-450e-b662-26245be04a40"),("RSQ","RSQ-function-d7161715-250d-4a01-b80d-a8364f2be08f"),("SKEW","SKEW-function-bdf49d86-b1ef-4804-a046-28eaea69c9fa"),("SKEW.P","SKEWP-function-76530a5c-99b9-48a1-8392-26632d542fcb"),("SLOPE","SLOPE-function-11fb8f97-3117-4813-98aa-61d7e01276b9"),("SMALL","SMALL-function-17da8222-7c82-42b2-961b-14c45384df07"),("STANDARDIZE","STANDARDIZE-function-81d66554-2d54-40ec-ba83-6437108ee775"),("STDEV.P","STDEVP-function-6e917c05-31a0-496f-ade7-4f4e7462f285"),("STDEV.S","STDEVS-function-7d69cf97-0c1f-4acf-be27-f3e83904cc23"),("STDEVA","STDEVA-function-5ff38888-7ea5-48de-9a6d-11ed73b29e9d"),("STDEVPA","STDEVPA-function-5578d4d6-455a-4308-9991-d405afe2c28c"),("STEYX","STEYX-function-6ce74b2c-449d-4a6e-b9ac-f9cef5ba48ab"),("T.DIST","TDIST-function-4329459f-ae91-48c2-bba8-1ead1c6c21b2"),("T.DIST.2T","TDIST2T-function-198e9340-e360-4230-bd21-f52f22ff5c28"),("T.DIST.RT","TDISTRT-function-20a30020-86f9-4b35-af1f-7ef6ae683eda"),("T.INV","TINV-function-2908272b-4e61-4942-9df9-a25fec9b0e2e"),("T.INV.2T","TINV2T-function-ce72ea19-ec6c-4be7-bed2-b9baf2264f17"),("T.TEST","TTEST-function-d4e08ec3-c545-485f-962e-276f7cbed055"),("TREND","TREND-function-e2f135f0-8827-4096-9873-9a7cf7b51ef1"),("TRIMMEAN","TRIMMEAN-function-d90c9878-a119-4746-88fa-63d988f511d3"),("VAR.P","VARP-function-73d1285c-108c-4843-ba5d-a51f90656f3a"),("VAR.S","VARS-function-913633de-136b-449d-813e-65a00b2b990b"),("VARA","VARA-function-3de77469-fa3a-47b4-85fd-81758a1e1d07"),("VARPA","VARPA-function-59a62635-4e89-4fad-88ac-ce4dc0513b96"),("WEIBULL.DIST","WEIBULLDIST-function-4e783c39-9325-49be-bbc9-a83ef82b45db"),("Z.TEST","ZTEST-function-d633d5a3-2031-4614-a016-92180ad82bee"),("ASC","ASC-function-0b6abf1c-c663-4004-a964-ebc00b723266"),("BAHTTEXT","BAHTTEXT-function-5ba4d0b4-abd3-4325-8d22-7a92d59aab9c"),("CHAR","CHAR-function-bbd249c8-b36e-4a91-8017-1c133f9b837a"),("CLEAN","CLEAN-function-26f3d7c5-475f-4a9c-90e5-4b8ba987ba41"),("CODE","CODE-function-c32b692b-2ed0-4a04-bdd9-75640144b928"),("CONCAT","CONCAT-function-9b1a9a3f-94ff-41af-9736-694cbd6b4ca2"),("CONCATENATE","CONCATENATE-function-8f8ae884-2ca8-4f7a-b093-75d702bea31d"),("DBCS","DBCS-function-a4025e73-63d2-4958-9423-21a24794c9e5"),("DOLLAR","DOLLAR-function-a6cd05d9-9740-4ad3-a469-8109d18ff611"),("EXACT","EXACT-function-d3087698-fc15-4a15-9631-12575cf29926"),("FIND","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("FINDB","FIND-FINDB-functions-c7912941-af2a-4bdf-a553-d0d89b0a0628"),("FIXED","FIXED-function-ffd5723c-324c-45e9-8b96-e41be2a8274a"),("LEFT","LEFT-LEFTB-functions-9203d2d2-7960-479b-84c6-1ea52b99640c"),("LEFTB","LEFT-LEFTB-functions-9203d2d2-7960-479b-84c6-1ea52b99640c"),("LEN","LEN-LENB-functions-29236f94-cedc-429d-affd-b5e33d2c67cb"),("LENB","LEN-LENB-functions-29236f94-cedc-429d-affd-b5e33d2c67cb"),("LOWER","LOWER-function-3f21df02-a80c-44b2-afaf-81358f9fdeb4"),("MID","MID-MIDB-functions-d5f9e25c-d7d6-472e-b568-4ecb12433028"),("MIDB","MID-MIDB-functions-d5f9e25c-d7d6-472e-b568-4ecb12433028"),("NUMBERVALUE","NUMBERVALUE-function-1b05c8cf-2bfa-4437-af70-596c7ea7d879"),("PHONETIC","PHONETIC-function-9a329dac-0c0f-42f8-9a55-639086988554"),("PROPER","PROPER-function-52a5a283-e8b2-49be-8506-b2887b889f94"),("REPLACE","REPLACE-REPLACEB-functions-8d799074-2425-4a8a-84bc-82472868878a"),("REPLACEB","REPLACE-REPLACEB-functions-8d799074-2425-4a8a-84bc-82472868878a"),("REPT","REPT-function-04c4d778-e712-43b4-9c15-d656582bb061"),("RIGHT","RIGHT-RIGHTB-functions-240267ee-9afa-4639-a02b-f19e1786cf2f"),("RIGHTB","RIGHT-RIGHTB-functions-240267ee-9afa-4639-a02b-f19e1786cf2f"),("SEARCH","SEARCH-SEARCHB-functions-9ab04538-0e55-4719-a72e-b6f54513b495"),("SEARCHB","SEARCH-SEARCHB-functions-9ab04538-0e55-4719-a72e-b6f54513b495"),("SUBSTITUTE","SUBSTITUTE-function-6434944e-a904-4336-a9b0-1e58df3bc332"),("T","T-function-fb83aeec-45e7-4924-af95-53e073541228"),("TEXT","TEXT-function-20d5ac4d-7b94-49fd-bb38-93d29371225c"),("TEXTJOIN","TEXTJOIN-function-357b449a-ec91-49d0-80c3-0e8fc845691c"),("TRIM","TRIM-function-410388fa-c5df-49c6-b16c-9e5630b479f9"),("UNICHAR","UNICHAR-function-ffeb64f5-f131-44c6-b332-5cd72f0659b8"),("UNICODE","UNICODE-function-adb74aaa-a2a5-4dde-aff6-966e4e81f16f"),("UPPER","UPPER-function-c11f29b3-d1a3-4537-8df6-04d0049963d6"),("VALUE","VALUE-function-257d0108-07dc-437d-ae1c-bc2d3953d8c2"),("CALL","CALL-function-32d58445-e646-4ffd-8d5e-b45077a5e995"),("EUROCONVERT","EUROCONVERT-function-79c8fd67-c665-450c-bb6c-15fc92f8345c"),("REGISTER.ID","REGISTERID-function-f8f0af0f-fd66-4704-a0f2-87b27b175b50"),("SQL.REQUEST","SQLREQUEST-function-4da47f3a-ff08-46ed-886c-3329aa5df008"),("ENCODEURL","ENCODEURL-function-07c7fb90-7c60-4bff-8687-fac50fe33d0e"),("FILTERXML","FILTERXML-function-4df72efc-11ec-4951-86f5-c1374812f5b7"),("WEBSERVICE","WEBSERVICE-function-0546a35a-ecc6-4739-aed7-c0b7ce1562c4")]