anchor.diff:  
   type DesignParams =
      {targetTm: float<C>;
  -    seamlessTm: float<C>; 
       seamlessOverlapTm: float<C>;
       pp: PrimerParams;
       overlapParams: PrimerParams; 
  
positive.code:         >>= (fun overlapParams -> ok {designParams with overlapParams = overlapParams})
      | "targettm", v::_ -> ok {designParams with targetTm = strToTempC v}
      | "minoverlaplen", v::_ -> ok {designParams with overlapMinLen = int v}
      | "seamlesstm", v::_ -> ok {designParams with seamlessTm = strToTempC v}
      | "seamlessoverlaptm", v::_ -> ok {designParams with seamlessOverlapTm = strToTempC v}
      | "atpenalty", v::_ ->
          ok {designParams with pp = {designParams.pp with ATPenalty = float v * 1.0<C>}}
  
negative.code: let initialDesignParams =
     {pp = defaultParams;
      targetTm = ryseLinkerTargetDefault;
      seamlessOverlapTm = seamlessTargetDefault;
      overlapParams = defaultParams;
      overlapMinLen = overlapMinLenDefault}
  