私はの簡単なのエンドユーザ向けスクリプト言語が必要な計算型アプリケーションの言語を評価しています。私はScalaを主な基盤言語として、Jythonをスクリプトインターフェースとして使用することを考えてきました。 Scalaの魅力は、行列オブジェクトの要素ごとの乗算のために:*
のようなメソッドを定義し、それをインフィクス構文a :* b
と一緒に使うことができるということです。しかし:*はPythonでは有効なメソッド名ではありません。 Jythonはこれをどのように処理しますか?ScalaとJythonのインフィックス演算子
スクリプト言語としてScalaを柔軟に使用することを検討します。しかし、タイプ推論でも、val
とvar
と必須のタイプ定義は、matlabのような動的言語に使用される一般ユーザにとってはあまりにも多い。これとは対照的に、Booにはオプション-ducky
がありますが、.NETよりもJVMを使いたいと思っています。私はScalaのための-ducky
がないと仮定します。
より一般的には、潜在的ディリクレ配分をモデル化するために(http://www.cs.utah.edu/~hal/HBC/から)以下のDSLを考慮してください。
model {
alpha ~ Gam(0.1,1)
eta ~ Gam(0.1,1)
beta_{k} ~ DirSym(eta, V) , k \in [1,K]
theta_{d} ~ DirSym(alpha, K) , d \in [1,D]
z_{d,n} ~ Mult(theta_{d}) , d \in [1,D] , n \in [1,N_{d}]
w_{d,n} ~ Mult(beta_{z_{d,n}}) , d \in [1,D] , n \in [1,N_{d}]
}
result = model.simulate(1000)
この構文は、階層ベイズモデリングに精通しているユーザーのための(例えばPyMCMCに比べて)素晴らしいです。 JVMには、Pythonのような基本的なスクリプト言語にアクセスできるだけでなく、そのような構文を簡単に定義できる言語がありますか?
感謝しています。
ここでの議論を読んだ後、自分のカスタムメイドのDSLを使用して解析する答えを改訂しました。問題のドメインに基づいて、これが最良の方法だと思います。 –