By default, Keli does not supports default values for function parameters. However, this can be emulated using objects and lambda's shorthand. Not only that, it will be much better than the default values in other languages such as Python and TypeScript in terms of code completion supports.
The following demonstrates how to create a graph library with a plot function that takes default values.
// Defining structure of a pointPoint = $.x(Float) y(Float)// Defining default graph configGraphType = choice.Line.Scatter.BarGraphConfig = $.type(GraphType) xAxisLabel(String) yAxisLabel(String) title(String)// defining default graph configdefaultGraphConfig = GraphConfig.type(GraphType.Line) xAxisLabel("x") yAxisLabel("y")title("title")// defining the plot function(this Array.of(Point)).plot(f Function.in(GraphConfig) out(GraphConfig)) = this._plot(f.apply(defaultGraphConfig)) // the magic happens here// defining the plot function helper(this Array.of(Point))._plot(config GraphConfig) = undefined// usagepoints = [$.x(0) y(0), $.x(1) y(1), $.x(2) y(2)]points.plot(.title("My graph").xAxisLabel(""))