問題タブ [sml]

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 に答える
769 参照

sml - SML 関数呼び出しが引数を引数として解析しない

SML 関数を呼び出す際の優先順位の問題と思われるものを取得しています。

そして、私は別の関数からこれを呼び出しています:

しかし、私はエラーが発生します:

これは、(代わりに v) を呼び出し、その呼び出しの結果を引数 new_var で呼び出そうとしていることを示唆しているようです。

全体に括弧を追加しようとしましたが、それは役に立ちません。引数の周りに括弧を追加する(v new_var...)と、v が new_var の関数アプリケーションであると見なされるようになります。この関数呼び出しで何が起こっているのでしょうか?

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

sml - SML で型情報を出力するにはどうすればよいですか?

SML でコマンドが実行された後、コマンドから返されたデータと型を持つ "it" が返されます。例えば:

次のようなプログラムにバインディングがあるとしましょう。

「argsToOutput」の値とデータ型を(プログラムの途中で)「it」が出力される方法と同様の方法で出力する方法はありますか?

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

haskell - 初心者向けの Haskell または標準 ML?

私は個別の構造で下位部門のコースを教えるつもりです。私がテキスト ブックDiscrete Structures, Logic, and Computabilityを選択した理由の 1 つは、関数型プログラミング言語での実装に役立つ例と概念が含まれているためです。(私も良い教科書だと思います。)

DS の概念を説明し、学生が使用できる、わかりやすい FP 言語が必要です。ほとんどの学生は、せいぜい 1 学期か 2 学期の Java プログラミングしか経験していません。Scheme、Erlang、Haskell、Ocaml、SML を検討した結果、Haskell または標準 ML のいずれかに落ち着きました。以下に概説する理由から、私は Haskell に傾倒していますが、いずれかのアクティブなプログラマーの意見を求めています。

  • Haskell と SML の両方にパターン マッチングがあり、再帰アルゴリズムの記述が簡単になります。
  • Haskell には、そのようなリストを数学的に表現する方法とうまく一致する優れたリスト内包表記があります。
  • Haskell には遅延評価があります。リスト内包表記法を使用して無限リストを構築するのに最適です。
  • SML には、関数の定義と使用の両方が可能な真にインタラクティブなインタープリターがあります。Haskell では、関数は別のファイルで定義し、対話型シェルで使用する前にコンパイルする必要があります。
  • SML は、理解しやすい構文で関数の引数と戻り値の型を明示的に確認します。例: val foo = fn : int * int -> int. Haskell の暗黙のカリー構文はもう少し鈍いですが、完全に異質というわけではありません。例: foo :: Int -> Int -> Int。
  • Haskell はデフォルトで任意精度の整数を使用します。SML/NJ の外部ライブラリです。また、SML/NJ はデフォルトで出力を 70 文字に切り捨てます。
  • Haskell のラムダ構文は巧妙で、単一のバックスラッシュを使用します。SML はより明示的です。ただし、このクラスでラムダが必要になるかどうかはわかりません。

基本的に、SML と Haskell はほぼ同等です。Haskell のリスト内包表記と無限リストが大好きなので、Haskell に傾倒しています。しかし、Haskell のコンパクトな構文の膨大な数のシンボルが学生に問題を引き起こすのではないかと心配しています。SOに関する他の投稿を読んで集めたものから、HaskellはFPから始める初心者にはお勧めできません。ただし、本格的なアプリケーションを構築するつもりはなく、単純なアルゴリズムを試すだけです。

どう思いますか?


編集:あなたの素晴らしい回答のいくつかを読んで、私の箇条書きのいくつかを明確にする必要があります.

SML では、インタープリターでの関数の定義と外部ファイルでの関数の定義の間に構文上の違いはありません。階乗関数を書きたいとしましょう。Haskell では、この定義をファイルに入れ、GHCi にロードできます。

私にとって、それは明確で簡潔であり、本の数学的定義と一致しています。しかし、GHCi で関数を直接書きたい場合は、別の構文を使用する必要があります。

対話型インタープリターを使用する場合、教育の観点からは、学生がファイルとコマンド ラインの両方で同じコードを使用できると非常に便利です。

「関数の明示的な確認」とは、関数を定義すると、SML がすぐに関数の名前、引数の型、および戻り値の型を通知することを意味します。Haskell では、:typeコマンドを使用する必要があり、やや混乱するカレー表記が表示されます。

Haskell のもう 1 つの優れた点 - これは有効な関数定義です。

繰り返しますが、これは彼らが教科書で見つけるかもしれない定義と一致します。SML ではできません。

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

functional-programming - SML/NJのループ

私はSNL/NJに非常に慣れていないので、どうすれば次のことを達成できるのか疑問に思いました。

このようなものですが、どのようにデクリメントしますか?:

0 投票する
6 に答える
551 参照

functional-programming - 機能: 整数 1..n のリストを作成する

これは宿題ではありません。Standard ML を独学で学んでいます。私はSchemeも少し知っているので、この質問はどちらの言語でも答えられるはずです.

私の自主的な課題は、1 から n までの整数のリストを作成する関数を作成することです。たとえば、list(7) は [1,2,3,4,5,6,7] を返す必要があります。O(n) ソリューションが理想的です。

リストを逆に (すなわち [n,n-1,..,1]) 線形時間で構築するのは簡単です:

追加操作は線形であるため、今後リストを作成しようとすると O(n^2) になります。

私の次の試みは、nil から始めて n を先頭に付け、逆方向に 1 に再帰することで、最後から先頭 (右から左) へのリストを作成することでした。しかし、それはまったく機能しませんでした。

再帰で使用する終了していないリストを作成するヘルパー関数が必要だと思うのですが、困惑しています。

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

integer - MLの数の素数除数

MLでは、数の素数の約数を取得したいと思います。どうすればこれができますか、私は初心者です。

0 投票する
5 に答える
1537 参照

compiler-construction - 「現実世界」のアプリケーションで ML を使用する

大学で ML を学ぶのがとても好きでした。関数型プログラミングは、特定のアルゴリズムを作成するための爽快でエレガントな方法であることがよくあります。F# について聞いたことがあり、少し遊んでみました。それでも、私は ML でいくつかの興味深い関数を作成しており、他のアプリケーションで使用できるライブラリとしてそれらを統合したいと考えています。

通常、関数を SMLnj インタープリターに貼り付けます。それらをコンパイルする方法はありますか?

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

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

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

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

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

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

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

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

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

sml - SMLで特定のタイプの結果を保証する

タイプ「ポイント」の要素を返す関数を作成しようとしています。

しかし、SMLNJは、結果も「ポイント」タイプである必要があるという私の意図を理解していないようです。

0 投票する
5 に答える
1635 参照

functional-programming - 標準 ML/NJ の BigInt

標準 ML に相当する Java BigInt はありますか? 通常の int 型は、オーバーフローすると例外がスローされます。