.NET用のJupyter。「パイソンのように」

数か月前、Microsoft.NETでJupyterについて話しました。しかし、このトピックに関する活動はほとんどなく、このトピックは非常に興味深いものです。しかし、何を考えるのがクールですか?Entityシンボリック代数ライブラリからクラスを便利に派生させることにしました







。Pythonよりもクールに見えます。やりやすいし、とても楽しいです。カットの下であなたを招待します!



ジュピターについて



インタラクティブなノートブックを作成するためのIDEのようなものです。使い慣れた環境ですべてのコードを一度に実行する代わりに、ここではチャンクで実行し、変数の状態を保存します。研究や簡単なスクリプトで「何かを計算する」のは非常に便利です。



dotnet /インタラクティブについて



このプロジェクトでは、DotnetをJupiterに埋め込むことができます。つまり、文字通り



コードを記述して、すぐに結果を取得できます



そして、いくつかのチップは箱から出して動作します





AngouriMathについて



これは、数式を操作するための.NET用の比較的小さなシンボリック代数ライブラリです。もちろん、数式を1行で操作することもできますが、これは必ずしも便利で美しいとは限りません。



すべての数式は、文字列を返すEntityメソッドLatexise持つクラスから何らかの形で継承されます。したがって、残っているのはそれをレンダリングすることだけです。



埋め込み遅延



私たちは自分のタイプに対して独自の推論を登録することができます。



let magic() =
    let register (value : ILatexiseable) = $@"
            <script src='https://polyfill.io/v3/polyfill.min.js?features=es6'></script>
            <script id='MathJax-script' async src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
            \[{value.Latexise()}\]
            "

    Formatter.Register<ILatexiseable>(register, "text/html")


(Habrは何らかの理由でF#をサポートしていません)



つまり、タイプILatexiseableをhtml形式で表示するように登録するだけで、コード自体が関数によって生成されます。レンダリングにはMathJaxを使用しましたが、jsスクリプトをキャッシュすることはおそらく理にかなっていますが、これは将来の更新用です。



これで、このインターフェイスから継承されたすべての式が美しくレンダリングされます。これはC#でどのように見えるかです:







ここで何が起こっているのですか?
1. extension- ToEntity(),

2.

3.





Jupiterは、設計要件に従う必要のない小さなコードチャンクを対象としているため、F#の方が適しています。したがって、記事の冒頭のスクリーンショットから明らかなように、それもサポートされています。たとえば、これは学校の方程式の解がどのように見えるかです:







今後の計画



私は.NETの大ファンですが、Jupyterも大好きです。そのため、Interactiveは私をとても幸せにし、LaTeXで式を表示するためのAngouriMathのInteractiveサポートを急いで作成しました。しかし、さらに-もっと興味深い。Entity.Plot()関数のグラフをすぐに表示するようなことを考えています。単純なユースケースの場合、それは本当に必要だと思います。



必要なものを何もインストールせずに試してみたい場合は、ここをいじってみてください:(アラーム:何らかの理由でロードに時間がかかるため、待つ



必要がありますご清聴ありがとうございました!これは短いメモです。



リンク



1. Jupyter -インタラクティブなプログラミングのための便利なブラウザ環境

2. .NETインタラクティブあなたが木星にDOTNETを使用することができ感謝していることが非常に鮮やかなもの-

3 AngouriMath私が書いたために、数学ライブラリ-ラッパーlatechための

4 MyBinderを-怠惰のデモ



All Articles