自由モノイドプログラミング言語の作成(MonIter バージョン1.2 仕様(21))
MonIter コードから C# コードに変換して実行
「Roslyn for Scripting」で C# のコードを実行します。「自由モノイドのイテレーター(13) - エレファント・ビジュアライザー調査記録」に少しだけ説明を書いています。
「自由モノイドのイテレーター(30) - エレファント・ビジュアライザー調査記録」と同様に「Microsoft.CodeAnalysis.CSharp.Scripting」をインストールして
using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting;
と書くと使うことができます。
以下のようにすると C# コードを実行することができます。
/// <summary> /// C# コードを実行する /// </summary> /// <param name="src">C# コード</param> /// <returns>C# コードの結果</returns> private string Run(string src) { try { var options = ScriptOptions.Default.AddReferences("System.Core").AddImports("System", "System.Collections.Generic", "System.Linq"); var script = CSharpScript.Create(src, options); var result = script.RunAsync().Result; return result.ReturnValue.ToString(); } catch (Exception ex) { return ex.ToString(); } }
引数で渡すバージョン
MonIter のコードを C# のコードに変換して実行するには以下のようにします。InfiniteFibpnacciPrmsCSCode() は前回説明した MonIter のコードを C# のコードに変換する関数です。
/// <summary> /// フィボナッチ数列 C# コードに変換して実行(引数あり) /// </summary> /// <returns>フィボナッチ数列の文字列</returns> private string InfiniteFibpnacciPrmsCSRun() { string src = InfiniteFibpnacciPrmsCSCode(); return Run(src); }
Zip を使うバージョン
MonIter のコードを C# のコードに変換して実行するには以下のようにします。InfiniteFibpnacciZipCSCode() は前回説明した MonIter のコードを C# のコードに変換する関数です。
/// <summary> /// フィボナッチ数列 C# コードに変換して実行(Zip) /// </summary> /// <returns>フィボナッチ数列の文字列</returns> private string InfiniteFibpnacciZipCSRun() { string src = InfiniteFibpnacciZipCSCode(); return Run(src); }





