Require Class/basicCurve

basicCurve Subclass Curve {
  Var "domain {[basicCurve get domain]}"
  Method <Domain> {domain} {set [var domain] $domain}
  ClassVar "Domain-template {{[basicCurve get domain]}}"

  Var function "param [basicCurve get param]"
  Method <Function> {param script} {
    if {[llength $param] != 1} {Error "Function must be of one variable"}
    set [var param] $param
    set [var function] $script
  }

  ClassVar "Function-template {{t} {\n  let (x,y,z) = (t,t^2,t^3)\n}}"

  ClassVar {script-templates {Domain Function}}

  Method ScriptBegin {} {
    Vars domain param function
    Parent ScriptBegin
    set domain [Parent get domain]
    set function {}
    set param [Parent get param]
  }
}

Curve Register
