The reference implementation of the LinguaPhylo language is written in the Java programming language.

The source code for the reference implementation is available for download at https://github.com/LinguaPhylo/linguaPhylo.

The central concepts are Value<T> and Generator<T>. Value<T> is a concrete class that is a container for a value of type T. Generator<T> is an interface for implementations that can generate a Value<T>. Both are united by implementing the GraphicalModelNode<T> interface:

package lphy.graphicalModel;

import java.util.List;

public interface GraphicalModelNode<T> {

    /**
     * inputs are the arguments of a function or distribution or the function/distribution that produced this model node value/variable.
     * @return
     */
    List<GraphicalModelNode> getInputs();

    /**
     * @return a unique string representing this graphical model node. For named variables it should be the name. 
     */
    String getUniqueId();

    /**
     * @return current value of the Constant, DeterministicFunction (or GenerativeDistribution?)
     */
    T value();
}