srtree-2.0.0.0: A general library to work with Symbolic Regression expression trees.
Copyright(c) Fabricio Olivetti 2021 - 2024
LicenseBSD3
Maintainerfabricio.olivetti@gmail.com
Stabilityexperimental
PortabilityFlexibleInstances, DeriveFunctor, ScopedTypeVariables
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.SRTree.Recursion

Description

Recursion schemes

Documentation

data ListF a b #

Constructors

NilF 
ConsF a b 

Instances

Instances details
Functor (ListF a) # 
Instance details

Defined in Data.SRTree.Recursion

Methods

fmap :: (a0 -> b) -> ListF a a0 -> ListF a b #

(<$) :: a0 -> ListF a b -> ListF a a0 #

data NatF a #

Constructors

ZeroF 
SuccF a 

Instances

Instances details
Functor NatF # 
Instance details

Defined in Data.SRTree.Recursion

Methods

fmap :: (a -> b) -> NatF a -> NatF b #

(<$) :: a -> NatF b -> NatF a #

data StreamF a b #

Constructors

StreamF a b 

Instances

Instances details
Functor (StreamF a) # 
Instance details

Defined in Data.SRTree.Recursion

Methods

fmap :: (a0 -> b) -> StreamF a a0 -> StreamF a b #

(<$) :: a0 -> StreamF a b -> StreamF a a0 #

data TreeF a b #

Constructors

LeafF 
NodeF b a b 

Instances

Instances details
Functor (TreeF a) # 
Instance details

Defined in Data.SRTree.Recursion

Methods

fmap :: (a0 -> b) -> TreeF a a0 -> TreeF a b #

(<$) :: a0 -> TreeF a b -> TreeF a a0 #

newtype Fix f #

Constructors

Fix 

Fields

Instances

Instances details
IsString (Fix SRTree) #

the instance of IsString allows us to create a tree using a more practical notation:

>>> :t  "x0" + "t0" * sin("x1" * "t1")
Fix SRTree
Instance details

Defined in Data.SRTree.Internal

Floating (Fix SRTree) # 
Instance details

Defined in Data.SRTree.Internal

Num (Fix SRTree) # 
Instance details

Defined in Data.SRTree.Internal

Fractional (Fix SRTree) # 
Instance details

Defined in Data.SRTree.Internal

type Algebra f a = f a -> a #

type CoAlgebra f a = a -> f a #

data Cofree f a #

Constructors

a :< (f (Cofree f a)) 

data Free f a #

Constructors

Ret a 
Op (f (Free f a)) 

extract :: Cofree f a -> a #

unOp :: Free f a -> f (Free f a) #

cata :: Functor f => (f a -> a) -> Fix f -> a #

cataM :: (Functor f, Monad m) => (forall x. f (m x) -> m (f x)) -> (f a -> m a) -> Fix f -> m a #

ana :: Functor f => (a -> f a) -> a -> Fix f #

hylo :: Functor f => (f b -> b) -> (a -> f a) -> a -> b #

para :: Functor f => (f (Fix f, a) -> a) -> Fix f -> a #

mutu :: Functor f => (f (a, b) -> a) -> (f (a, b) -> b) -> (Fix f -> a, Fix f -> b) #

apo :: Functor f => (a -> f (Either (Fix f) a)) -> a -> Fix f #

accu :: Functor f => (forall x. f x -> p -> f (x, p)) -> (f a -> p -> a) -> Fix f -> p -> a #

histo :: Functor f => (f (Cofree f a) -> a) -> Fix f -> a #

futu :: Functor f => (a -> f (Free f a)) -> a -> Fix f #

chrono :: Functor f => (f (Cofree f b) -> b) -> (a -> f (Free f a)) -> a -> b #

fromList :: [a] -> Fix (ListF a) #

toList :: Fix (ListF a) -> [a] #

stream2list :: StreamF a [a] -> [a] #