コラッツ予想がとけたらいいな2

自分の考察を書いていきます。

F#と戯れよう その5(F#からC#にレコードを渡して、C#側で変更する)

元ネタは私のGitHub




やり方

1. C#側の引数にrefをつける

    public static LibFS.TpReduceRet Reduce(
      ref LibFS.TpReducePack1 rP1, ref LibFS.TpReducePack2 rP2, LibFS.TpAxle axles)
    {


2. F#側の、渡す変数をmutableにする

    let mutable redpk1 : LibFS.TpReducePack1 = {axle = axlepk; bLow = bLow; bUpp = bUpp; adjmat = {adj = adjmat};}
    let mutable redpk2 : LibFS.TpReducePack2 = {edgelist = {edg = edgelist}; used = used; image = {ver = image}; redquestions = graphs}


3. F#側の、渡す変数の型をbyref<myRecord>にする

4. F#からC#に渡すところで&をつける

  let reduce (rP1   : byref<LibFS.TpReducePack1>)
             (rP2   : byref<LibFS.TpReducePack2>)
             (axles : LibFS.TpAxle)
               : LibFS.TpReduceRet =
    LibDischargeReduce.Reduce(&rP1, &rP2, axles)