Portability | portable |
---|---|
Stability | experimental |
Maintainer | amy@nualeargais.ie |
Safe Haskell | None |
A reproduction method for artificial lifeforms where: * Each agent has two strands of genetic information. * Each child has two parents. * Each parent contributes approximately half of its genetic information to the offspring.
Documentation
class Reproductive a whereSource
A species that reproduces, transmitting genetic information to
its offspring. Minimal complete definition: all except mate
.
The basic unit of hereditary information for an agent. The type signature for the agent's genome is ([Base a], [Base a]).
produceGamete :: RandomGen r => a -> Rand r [Base a]Source
From the two strands of the genetic information from this agent, creates a single strand that will contribute to the child's genome. (This is analogous to creating either a single sperm or ova.)
build :: AgentId -> ([Base a], [Base a]) -> Maybe aSource
Builds an agent based on the genome provided, if it is possible to do so.
makeOffspring :: RandomGen r => a -> a -> AgentId -> Rand r (Maybe a)Source