問題タブ [funscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - JVM 上で実行され、Java バイトコードを生成する F# コンパイラを構築する最も簡単な方法は何ですか?
現在の F# コンパイラは F# で書かれており、オープン ソースであり、.Net および Mono 上で動作し、Windows、Mac、Linux を含む多くのプラットフォームで実行できます。F# のコードクォーテーション メカニズムは、 WebSharper、Pit、FunScriptなどのプロジェクトで F# を JavaScript にコンパイルするために使用されています。JVM で F# コードを実行することにも関心があるようです。
OCaml コンパイラのバージョンは、もともとF# コンパイラのBootstrapに使用されていたと思います。
JVM で実行される F# コンパイラを構築したい場合は、次のようにする方が簡単です。
- 既存の F# コンパイラを変更してJava バイトコードを発行し、それを使用して F# コンパイラをコンパイルしますか?
- Yetiのような JVM ベースの ML コンパイラを使用して、JVMで最小限の F# コンパイラをブートストラップしますか?
- fjordプロジェクトが試みているように見えるので、Java で F# コンパイラをゼロから書き直しますか?
- 他の何か?
f# - 名前空間またはモジュール「Runtime」が定義されていません
ここの「Funscript」ページにサンプルがあります。サンプルを Visual Studio 2012 にロードしました。サンプル ページの最後の行は次のとおりです。
常にエラーをスローします。実際、Visual Studio IDE (コンパイラ) はランタイムを認識できないようです。
これが Java のような言語の場合、ライブラリをインポートしようとするので、System.Runtime を使用してみましたが、それでも Visual Studio IDE は認識せず、次のようなエラーがスローされます。
2 つの質問
- どうすればこれを回避できますか?
- 外部ライブラリのロードも含む、完全な初心者向けの F# を教えるリンクはありますか?
f# - 開始時の WebSharper の問題
そこで、F# を使用した RIA または MVC アプリケーションの開発を検討してきましたが、次の 2 つのオプションがあることがわかりました。
- ファンスクリプト
- WebSharper
私は Visual Studio 2012 バージョンを持っていますが、これは学生版です。だから私はここで開始リンクをたどっただけです
指示に従った後、テストページを取得できません。そのため、続行するにはいくつかの指示/ヘルプが必要です。これが起こることです:
新しいプロジェクトを使用して Web アプリケーション サイトレットを作成した後、Site.fs ページにエラーが表示されます。同じ「モジュールまたは名前空間が定義されていません」が表示されます。だから私がやろうとしているのは、Manage NuGet References を使用して WebSharper の参照をロードし、エラーを削除することです。これで、マシンに WebSharper がインストールされました。WebSharper ライブラリをリンクする簡単な方法はありませんか。もしそうなら、どうすればできますか?ここで私が間違っているのは何ですか。
問題を解決した後、開始コードをそのページの最後の行までたどると、次のコード サンプルでエラーが発生します。
let HomePage =
Template "HomePage" <| fun ctx ->
[ Div [Text "HOME"] Links ctx Div [new Controls.HelloControl()] ]
基本的に、ページは新しく追加されたものを好まないDiv [ new Controls.HelloControl()]
ため、エラーがスローされます。
私は Microsoft テクノロジと Visual Studio IDE の初心者です。私は Eclipse に慣れており、それがどのように機能するかを理解することは決して問題ではありませんでした。しかし、私はここでこれを機能させる方法について完全に無知です。
最後に、FunScript と WebSharper の両方の適切な紹介に関する更新されたドキュメントをどこで見つけることができるかについての質問もあります。
funscript - funscript の Async.RunSynchronously
この作品は、それを言ってコンパイラ例外をスローしています
「式をコンパイルできませんでした: Call (None, RunSynchronously, [arg00, NewUnionCase (None), NewUnionCase (None)])」
現在、RunSynchronously は funscript コンパイラに実装されていませんか?
reflection - オーバーロードされたメソッドを使用した F# Expr.TryGetReflectedDefinition
FunScript プロジェクト (F# から Javascript コンパイラーへ) のいくつかの拡張機能を作成しています。興味がある場合は、ここでソースを見つけることができます。
Tomas Petricekによる AwaitObservable 拡張機能をエミュレートしようとしていました。ただし、オーバーロードされたメソッドを使用AwaitObservable(w), AwaitObservable(w1,w2)...
すると、プロジェクトを Javascript にコンパイルしようとすると、次のエラーが発生します。
FunScript は、反映された定義のキャッシュ ディクショナリをプロジェクトに保持します。このエラーは、 を使用してキャッシュに新しい定義を追加しようとすると発生しExpr.TryGetReflectedDefinition
ます。オーバーロード ( ) の代わりに別の名前を使用すると、エラーは消えますAwaitObservable2, AwaitObservable3...
。それが私が現在使用している回避策ですが、拡張機能のユーザーがオーバーロードされたメソッドを正常に使用できるように、問題とそれを修正できるかどうかについて詳しく知りたいです。
Expr.TryGetReflectedDefinition
F# の Reflected Definitions はオーバーロードされたメソッドをサポートしておらず、引数の数だけでメソッドを区別できないことが想像できます ( fsharp GitHub ソース リポジトリでの実装が見つからなかったため、確認できませんでした)。ただし、私を困惑させているのは、 AwaitObservable を探しているときにエラーが発生しないことですが、次の方法です。
{System.IDisposable System-IObservable
1-Subscribe(System.IObserver
1[FunScript.TypeScript.MouseEvent])} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}
だから私の質問は:
- の代わりに
Expr.TryGetReflectedDefinition
失敗するのはなぜですか?IObservable.Subscribe
Async.AwaitObservable
Expr.TryGetReflectedDefinition
None を返す代わりに例外をスローするのはなぜですか?- これは F# Reflected Definitions のバグですか、それとも避けられない制限ですか? それを修正することは可能ですか?
ご協力いただきありがとうございます。