問題タブ [ocaml]

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.

0 投票する
2 に答える
10377 参照

ocaml - ocaml の {X with value}

Yacfeの例で次の関数呼び出しを見ました。

最初の引数と 2 番目の引数としてレコードが初期化された関数呼び出しを確認できastます。

私がよく知らないのは、フォームの構文です:

これはどういう意味ですか?レコードを のように初期化できることは知っていますが{name=value;name=value;...}、 については詳しくあり{X with name=value}ません。意味を教えてください。

Ocaml マニュアルには、以下以外の正当なレコード値の初期化については何も見つかりません。

6.2.3 記録

レコード値は、値のタプルにラベル付けされています。書き込まれたレコード値 { field1 = v1; …; fieldn = vn } は、i = 1 … n の場合、値 vi をレコード フィールド fieldi に関連付けます。現在の実装では、最大 222 − 1 フィールド (4194303 フィールド) のレコードがサポートされています。

OCamlマニュアルの関連セクションへの参照を回答に含めていただければ幸いです。

0 投票する
2 に答える
520 参照

ocaml - なぜ "**" は OCaml の否定より強く結合しないのですか?

この質問の後、私は何を考えるべきかわかりません。

OCaml では、-1.0**2.0 のようなことをすると (浮動小数点数が必要なので)、1.00 が得られます。操作の標準的な順序によると、結果は -1 になるはずです (Python の場合と同様)。

OCaml での演算子の優先順位の理由や明確な定義を見つけることができませんでした...

これは型システムのせいですか?または、下に pow のバインディングがあるという事実ですか?

0 投票する
8 に答える
1734 参照

regex - エキゾチックな解析手法にはどのようなものがありますか?

私はこの 1 年間、ポーカー ハンドの歴史を解析してきましたが、解析全般についてかなりのことを学びました。

私たちは正規表現から始めましたが、すぐに拡張が容易ではないことに気付きました。Ruby から C++ へと言語を飛ばして、最終的には変更しなければならないのはアルゴリズムであることに気づきました。

Boost::Spirit を手に取ったところ、元の速度の 10 倍以上のオーダーで速度が劇的に上昇するのがわかりました。その後、Java にスキップし、現在、antlr を使用して各サイトの文法を作成しています。これは間違いなくこれまでで最速の方法であり、「完全な」文法の観点から自分がどこに立っているかを正確に知ることができるため、非常に徹底的です。残念ながら、私はこれらの文法を扱うのに信じられないほどの時間を費やしてきました。

とにかく、当面の質問の背景については十分です-私が気付いていない「エキゾチックな」またはあまり知られていない解析手法はありますか? 私は、文法の字句解析/解析と、他の劣った正規表現/ループ方法しか知りません。

ポーカー ハンドの歴史に詳しくない方のために、構造がどのようなものかわかるように投稿します。

情報を収集する他の方法 (スクリーンスクレイピングや dll インジェクションなど) についてはよく知っていますが、ハンド履歴を構造化データに変換する必要性がまだ残っているため、次のような情報を取得する方法のみを調べています。正規表現/文法...

何か見つからない場合は、文法を ocamllex/ocamlyacc で書き直そうと思います。

アップデート

fyi: 正規表現の速度は ~60 ハンド/秒でしたが、文法は 600 ハンド/秒を処理していました... データがすべて整理された後、ハンド全体が xml に変換されます... 20 ~ 30 の正規表現が必要です (最後のカウント) 解析したいサイトごとに....文法側の各サイトには、非常に多くのレクサー/パーサールールを備えた独自の文法があります(ただし、コードサイズはまだ小さいです)

私はドラゴンブックを持っていて、それを読んでいます-これにより、ocamllex/ocamlyacc を使用することに興味がなくなりました....ここでのゲームの名前はスピードです..

0 投票する
2 に答える
322 参照

graphics - Gdk.imageをコピーする方法は?

Ocaml用のlablgtk2を使用してGdk.imageオブジェクトのコピーを作成することは可能ですか?'copy'または'clone'メソッドを見つけようとしましたが、失敗しました。

0 投票する
1 に答える
617 参照

c - 巨大な配列を効率的に渡して OCaml から C 関数を呼び出すことは可能ですか?

新しいアプリケーションで OCaml と C コードを組み合わせて使用​​することを検討しています。Ocaml から C コードを呼び出すのは簡単なようです。

しかし、その逆 (C から OCaml を呼び出す) はより複雑なようです:

(このページの例)

特に、それにはコピーが含まれます。

両方の言語からデータ構造へのアクセスを許可できるかどうか、誰か教えてもらえますか? したがって、関数は構造体へのポインターのみを渡すことができますが、どちらの言語でもそれを読み取ることができます。

目的は、すべての操作を OCaml で行い、データを効率的な方法で C 環境に渡すことです。

ありがとう!

0 投票する
2 に答える
839 参照

opengl - ウィキペディアの Ocaml OpenGL の例がコンパイルに失敗する

基本的な Ocaml プログラミングを始めようとしています。まず、ウィキペディアの実行から OpenGL の例を取得したいと思いました。 http://en.wikipedia.org/wiki/Ocam l

指定されたコンパイラ ディレクティブ

Glut.init がバインドされていないと言って、2 行目のエラーが発生します。

これを cygwin で実行していますが、これが問題の原因である可能性があります。しかし、誰もそれを修正する方法を知っていますか?

0 投票する
3 に答える
378 参照

ocaml - 純粋関数型 ML で N 次元ウォークを実行しますか?

アイデアは、それぞれが範囲として定義された複数の次元を歩くことです

そのため、四角形 X Y または立方体 X Y*Zのような関数を適用したり、それらに適用しfun foo y xたりできます。fun foo z y x

SML/NJ は以下の私の実装を好まない:

コードは次のとおりです。

この種の構成は可能ですか?

どんなポインタも歓迎します。

0 投票する
16 に答える
14805 参照

programming-languages - 何を学ぶ?LispかOCamlか…?

Python、C、C++、PHP、Javascript、Haskell、Java、MIPS、x86 アセンブラーです。でも、新しいものを覚えてからもうすぐ2年が経ち、かゆみが出始めています. 私にはいくつかの基準があります:

  1. 必須 (繰り返し: 必須) 無料の Linux 実装が必要
  2. 私がすでに知っている言語とは異なるはずです。言い換えれば、新しい方法で問題を解決することについて考えさせる機能が必要です。
  3. 実用化の可能性を秘めているはずです。次の Java である必要はありませんが、これは Brainf* と Shakespeare を除外します :) 求人情報がいくつあるかはあまり気にしませんが、現実世界のアプリとライブラリはプラスです。
  4. 少なくとも、私がそれを始めるのに十分な無料の教材が必要です.

私はLisp(CL?何か他のもの?)またはOCamlを考えていました。Haskell を使用した関数型言語の経験はすでにあります (はい、Lisp/OCaml がマルチパラダイムであることは知っています)。私は専門家ではありません - たとえば、実世界の Haskell のコードの一部は私の脳をゆがめますが、基本的な概念といくつかの高度な概念 (ファンクター、モナド) は理解しています。

どちらを選ぶ?私が見落とした他の言語はありますか?また、良い本/チュートリアルなどへの便利なリンクをいくつか含めてください.

0 投票する
1 に答える
413 参照

winapi - Windows の ocamlopt が実行可能ファイルを生成しない

簡単な OCaml プログラムは次のとおりです: helloworld.ml

OCaml 3.11.0 (MSVC ビルド)、VS 2008、そしてもちろんFlexDLLを使用しています。

コンパイル方法は次のとおりです (VS 2008 シェルから実行): ocamlopt helloworld.ml -o helloworld

実行可能ファイルは作成されません。何か問題がありますか?ただし、プログラムは Linux 上でコンパイルおよび実行されました。

0 投票する
2 に答える
1756 参照

iphone - OCamlをiPhoneAPIとインターフェースするにはどうすればよいですか?

iPhone用のアプリケーションの開発を始めたいのですが、Objective-CではなくOCamlを使いたいです。少しグーグルした後、これは間違いなく可能であるように見えますが、実際にコンパイルされるコードスニペットは見つかりませんでした。

OCamlを使ってiPhoneアプリを書くことは可能ですか?もしそうなら、OCamlからCocoa APIを呼び出す方法を示すスニペットを提供できますか?