- data Functoid
- functoidName :: Functoid -> String
- functoidArgNames :: Functoid -> [String]
- functoidHeader :: Functoid -> String
- data FunctoidLayout
- flayout :: Style -> Functoid -> Env -> Maybe [Value] -> FunctoidLayout
- flayoutBBox :: FunctoidLayout -> BBox
- flayoutSize :: FunctoidLayout -> Size
- flayoutWidth :: FunctoidLayout -> Double
- flayoutBottom :: FunctoidLayout -> Double
- flayoutWiden :: FunctoidLayout -> Double -> FunctoidLayout
A Functoid is either a FunctoidParts, representing a partially defined function, or a (completely defined) Function. A FunctoidParts represents an incompletely defined function, which has a function name, argument names, and a list of graph nodes representing the function body which might not yet form a complete expression tree, e.g., nodes might be unconnected.
What is a FunctoidLayout? You can think of it as a tree layout for a Frame, or for a Functoid, or as a Forest of Tree Layouts! For an Edit frame, it must be a forest, since the nodes are not yet necessarily connected into a tree. For a call frame, it will be a single TreeLayout (singleton list).
Graphically lay out the Functoid. mvalues: Nothing implies an uncalled frame, Just values implies a called frame, even with 0 arguments.