問題タブ [ml]
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.
haskell - 関数型プログラミングの機能を実装する言語は?
Lisp は学術界で非常に早い段階で一連の興味深い言語機能を開発しましたが、それらのほとんどは本番環境で普及することはありませんでした。
JavaScript などの一部の言語は、ガベージ コレクションやレキシカル クロージャーなどの基本的な機能を採用しましたが、強力なマクロ、データとしてのコード、カスタム制御構造など、大規模なプログラムの作成方法を実際に変更する可能性のあるすべてのものは、他の関数型言語内に広まっているようですが、重要なプロジェクトに使用するのに実用的な言語はありません。
関数型プログラミング コミュニティは、参照透過性、一般化されたケース式 (つまり、パターン マッチング、C/C# スイッチのように不自由ではない)、カリー化された関数など、(関数型プログラミング自体とは別に) 他にも多くの興味深いアイデアを思いつきました。通常のプログラミングでは明らかに有用であり、既存のプログラミングの実践と簡単に統合できるように思われますが、何らかの理由で、学問の世界で永遠に立ち往生しているようです.
なぜこれらの機能が採用されるのにこれほど苦労するのでしょうか? 「ファーストクラス関数」を中途半端にコピーするのではなく、Lisp から実際に学ぶ現代的で実用的な言語はありますか?それとも、これを不可能にする固有の競合があるのでしょうか?
queue - SML/NJでキューライブラリを使用するにはどうすればよいですか
SML/NJにキュー構造が含まれていることがわかります。使い方がわかりません。SML / NJが提供する追加のライブラリを使用するにはどうすればよいですか?
haskell - 型エラーの理解: 「期待されるシグネチャ Int*Int->Int but got Int*Int->Int」
サーバーサイド Javascriptに関するSteve Yeggeの投稿へのコメントは、言語における型システムのメリットについての議論を開始し、このコメントは次のように説明しています。
...次のようなものを取得できるHMスタイル システムの例:
そのエラーを生成する関数定義 (または 2 つ) と関数呼び出しの例を挙げていただけますか? 大規模なプログラムでデバッグするのはかなり難しいようです。
また、ミランダで同様のエラーが発生した可能性がありますか? (15年以上使っていないので記憶があいまいです)
ocaml - 純粋関数型 ML で N 次元ウォークを実行しますか?
アイデアは、それぞれが範囲として定義された複数の次元を歩くことです
そのため、四角形 X Y または立方体 X Y*Zのような関数を適用したり、それらに適用しfun foo y x
たりできます。fun foo z y x
SML/NJ は以下の私の実装を好まない:
コードは次のとおりです。
この種の構成は可能ですか?
どんなポインタも歓迎します。
ide - Windows で ML をプログラミングするためのエディター?
Emacs を使用できることはわかっていますが、これまで使用したことがありません...他に代替手段はありますか??
ありがとう
user-interface - Standard MLのGUI?
私は最近、好奇心からStandardMLを学び始めました。だから私が知っているのは、パフォーマンスを気にせずに抽象化を自由に使用できる効率的なコンパイラ(MLton)があるということです。
StandardMLでGUIプログラミングもできるといいですね。Standard ML用のGtk、Qt、またはWxWidgetsバインディングのようなものはありますか?
どうもありがとうございます。
functional-programming - 標準 ML の概要
ある種の「初心者向け ML」ガイドを探しています。これまでのところ、Google のおかげで、あいまいなメーリング リストや頭のおかしいテキストにたどり着きました。
問題は、これまで関数型プログラミングの経験がまったくなく、概念に頭を悩ませることが、予想よりもはるかに困難であることが判明したことです。たとえば、私が今やろうとしているタスク (はい、大学 :)) は、2 つのリスト (a,b) と (c,d) の間のマッピングを行うことで、結果は (a,d) のリストになります) b = c のペアから。
私が通常行うことは次のとおりです。
しかし、私はそのようなものを SML で実装することを始めることさえできません。たとえば、ネストされたリストを反復処理できることを知っていますmap f list
。ただし、ランタイム (SML/NJ) は、パラメーターとしてリスト要素のみを取る関数に対してのみこれを受け入れます。しかし、一度に 2 つのリストの 1 つしか操作できない場合、どの要素を返す必要があるかを知るにはどうすればよいでしょうか?
私は、この種のことを、できれば大きな親しみやすい文字と多くのコード例で説明するリソースを切実に必要としています:/
ml - この標準 ML コードは正確に何をしますか?
私は Chris Okasaki の純粋関数型データ構造を読んでいますが、問題を抱えている例が 1 つあります。ここにあります。rotate
特に、関数とexec
関数がどのように機能するかわかりません。
誰かがこれを愚かな人々の言葉で表現できますか? 私はまだ ML ベースの言語を学んでいます。:-)
haskell - 推論された型は無限ループを検出しているように見えますが、実際には何が起こっているのでしょうか?
Andrew Koenig のAn anecdote about ML type inferenceで、著者はマージ ソートの実装を ML の学習演習として使用し、「正しくない」型推論を発見して喜んでいます。
驚いたことに、コンパイラは次のタイプを報告しました。
つまり、このソート関数は、あらゆるタイプのリストを受け入れ、整数のリストを返します。
それは不可能です。出力は入力の順列でなければなりません。どのように異なるタイプを持つことができますか? 読者はきっと、私の最初の衝動に親しみを覚えるでしょう。コンパイラのバグを発見したのではないかと思ったのです!
もう少し考えてみたところ、関数が引数を無視する別の方法があることに気付きました。確かに、私が試してみたところ、まさにそれが起こったのです:
sort(nil)
return でしたnil
が、空でないリストを並べ替えると、無限再帰ループに入ります。
Haskellに翻訳すると
GHC は同様の型を推論します:
Damas-Hindley-Milner アルゴリズムはどのようにこの型を推測しますか?