問題タブ [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 投票する
9 に答える
15256 参照

f# - パターン マッチングとスイッチの説明

switch ステートメントとパターン マッチング (F#) の違いを何人かの人に説明しようとしてきましたが、うまく説明できませんでした..ほとんどの場合、彼らは私を見て「なぜif..then..else だけを使用しないでください。

彼らにどのように説明しますか。

編集!すばらしい回答をありがとうございます。複数の正解をマークできればと思います。

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

macros - OCaml のレコード フィールドの更新を一般化できますか?

私は非常に初心者の OCaml プログラマーなので、これがばかげた/明白な質問である場合はご容赦ください。吸収すべきことがたくさんあり、ドキュメントでこれを見逃している可能性があります。

次のようになり始めているコードのベースがあります。

次のようなものを書きたいので、重複が私を悩ませ始めています:

この方法で x を更新すると、次のように簡単に呼び出すことができます。

これは「マクロ!」と呼びます。しかし、OCaml にマクロ システムがあるとは思えません。他に何ができますか?

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

installation - GODI インストール エラー

私は Fedora 9 x86_64 を実行しており、多かれ少なかれ Linux の初心者です (使用していませんが、インストールなど)。エラーは、ブートストラップの第 2 段階 (つまり、「./bootstrap_stage2」) で発生します。それは多くのことを行い、その後これらのエラーが発生し始めます:

私はそれを実行してメモリを監視しましたが、間違いなく不足していないと言えます(約500を使用して3を取得しました)。それで、誰が問題が何であるか知っていますか?私はネットを検索しましたが、私が見つけた唯一の他の同様のものは、ここの他のスレッドでした(ただし、別のエラーがありました)

前回インストールしたときは問題なく動作したので、どんな助けも大歓迎です。

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

ocaml - 私の SHA256 の OCaml 実装は正常ですか?

私は初心者の OCaml プログラマーであり、非常にトリッキーなアルゴリズムを実装しようとして、自分自身を深いところに投げ込むと思っていました。私は、文体、セキュリティ、またはパフォーマンスに関連するものであっても、大小を問わずすべての批判を受け入れます。

私がすでに認識している批判の 1 つは、アルゴリズムではメッセージ全体がメモリに収まる必要があるということです (一方、SHA256 の参照実装では一度に 1 つのブロックを処理できます)。

再帰関数のいずれかが末尾再帰でないかどうかが特に心配です。

コードをテストしたところ、x86_64 Linux で適切なメッセージ ダイジェストが生成されます。

ご検討いただきありがとうございます。

編集:

何も飛び出さない場合は、ここであまり時間をかけないでください。書き換えではなく、明らかに壊れた動作を探しています。

したがって、別のファイルで定義されているパック関数は次のとおりです。

0 投票する
13 に答える
16589 参照

ocaml - Pythonのrange関数に相当するOCamlのイディオムは何ですか?

1 から までの整数のリストを作成したいと思いますn。Python では を使用しrange(1, n+1)、Haskell では: を使用してこれを行うことができますtake n (iterate (1+) 1)

これに対する適切な OCaml イディオムは何ですか?

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

pattern-matching - OCaml: 別の式の中で式を一致させますか?

私は現在、OCaml を使用した小さなプロジェクトに取り組んでいます。単純な数式の簡略化。式の中に特定のパターンを見つけて、それらを単純化して、式内の括弧の数を減らすことになっています。これまでのところ、再帰的なパターン マッチングの「フィルター」関数を作成することにした 2 つのルールを除いて、ほとんどのルールを実装できました。実装する必要がある 2 つのルールは次のとおりです。

- a - (b + c) または類似の形式のすべての表現を a - b - c に変換します。

- a / (b * c) または類似の形式のすべての式を a / b / c に変換します。

...これはかなり単純だと思います。1 つを実装できたら、もう 1 つを簡単に実装できます。しかし、再帰的なパターンマッチング機能に問題があります。私の型式はこれです:

そして、私が主に問題を抱えているのは、マッチ式にあります。たとえば、次のようなことを試みています。

ただし、マークされた行の一致式は、「プリンシパル一致」ではなく、以前の「内部一致」の一部として認識されているようで、すべての「Quot(...)」式が認識されることはありません。このような他の一致式の中に一致式を含めることさえ可能ですか? そして、他の可能性とのマッチングを続けることができるように、内側のマッチングを終了する正しい方法は何でしょうか?

ロジックは無視してください。これはほとんど私が最初に思いついたものです。再帰性またはロジックは大歓迎です。

0 投票する
4 に答える
2986 参照

map - OCaml には一般的な map()/reduce() 関数がありますか?

Python map() では、シーケンス プロトコルに従うすべてのデータに対して機能します。文字列、リスト、またはタプルのいずれをフィードしても、正しいこと^TMを実行します。

私のケーキも OCaml に入れられませんか? 使用しているコレクション型を調べて、対応する List.map または Array.map または Buffer.map または String.map を見つける以外に、本当に他に選択肢はないのでしょうか? これらのいくつかは存在さえしません!私が求めているのは異常ですか?私は何かが欠けているに違いない。

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

parsing - 良いocamlパーサー?

flex/bisonの派生物ではない優れたocaml解析ライブラリを探しています。理想的には、パーセクの線に沿ったモナディックコンビネータライブラリが欲しいのですが、何も見つかりません。

私はhaskellを使用しますが、haskellのllvmバインディングを作成することは、私が当初考えていたよりも面倒です。

乾杯、

デュアン

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

macos - Mac OS X で ocaml を実行するとバス エラーが発生する

Mac OS X に Ocaml をインストールしたところ、ocaml プログラムを実行すると「バス エラー」が表示され、他に何が起こっているのか手がかりがありません。ここからどこへ行くべきかについて誰でも提案できますか?

編集:

パッケージ経由でインストールしました:

http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-3.10.2-ppc.dmg

(私は iBook G4 を持っているので、PPC が適切です)

ocaml を実行するには、次のように入力しました。

端末ウィンドウで

私も試しました

xterm ウィンドウから実行します。3つすべてが与えます:

README で要求されているように、Xcode と X11 をインストールしました。

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

lua - OCaml に Lua を埋め込む

OCaml に組み込まれた Lua の使用方法を示すコード スニペットを教えてください。

簡単な例としては、"Hello, World" バリアントが考えられます。OCaml でユーザーに名前の入力を求めるようにします。次に、その名前を Lua 関数に渡します。Lua に挨拶を出力させ、名前の長さを返します。次に、OCaml に名前の長さに関するメッセージを表示させます。

例:

user@desktop:~$ ./hello.opt

名前?ユーザー

こんにちは、ユーザーです。

あなたの名前は4文字です。

user@desktop:~$

[編集]

非 C プログラマーとして、Lua と OCaml の間でデータを渡すための中間 C プログラムを作成することなく、これを実装できますか?

以下は、私が試してみたいことの理論的な考えです。残念ながら、ocaml_hello.ml の 3 行目は、コードを有効にするために lua_hello.lua で定義された関数を呼び出す方法を知る必要があります。

lua_hello.lua 引数を出力してその長さを返す lua_hello を定義します。

ocaml_hello.ml OCaml は名前の入力を求め、Lua 関数を呼び出し、戻り値を出力します。