私は最近smlを学んで、それをJavaと比較して使い方を混乱させました。だから私は、連続した値のペアをとり、それらを加えて新しいリストに合計を挿入するコードを作ってくれたと言われました。 元のリストの長さが奇数の場合、最初のn-1アイテムはペアごとに追加され、n-thアイテムは新しいリストの最後にそのままコピーされます。 だから私のコードは、これまでのところです: fun sumpairs x =
任意のタイプのリストを取り、リストが実数のリストである場合にのみhead要素を返すサンプル関数を書きたいと思います。 これ以外の場合は、エラーメッセージ が表示されます。 。 。オペレーターとオペランドはありません。 。 。 datatype typeR = Real of real
fun head(xs) =
case xs of
[] => raise List.Em
私はここですべてをやろうとしていましたが、何も起こりませんでした。空のリストで呼び出すと、コードは正常に動作していますが、空のリスト[]を入れるとすぐに問題が起こります。それはダミーの種類 '警告し、次のコードにいくつかのエラーでポップアップ表示されます: fun zip(xs1, x2) =
case xs1 of
[] => []
| (h1::t1) =>
私はSML(Javaの世界から来ている)と私が理解しているところから比較的新しいです 構造体はJavaクラスと似ています&署名はJavaインタフェースです。 SML構造のすべてが不変です。値を設定できる変数を持つ可能性はありますか? functor Make(M : sig
type data
val callback : _
end) = struc
私はMLを使い慣れていますので、私は理解するために最善を尽くしています。 alternate : 'a list -> 'a listというML関数を作成します。この関数は、同じ長さの2つのリストを入力として取り、1番目と2番目の入力リストから要素を交互に取った出力リストを生成します。 例 alternate ([1,3,5],[2,4,6]) = [1,2,3,4,5,6]
これが私の仕事で
これらの戻り値の型違いは何ですか? val fn1 : int −> (int −> (int −> int))
val fn2: (int −> int) −> (int −> int)
これはタイプ int -> int -> int meaning int -> (int -> int)
の関数を作成し、その右にありますか?彼らはブラケットなしで同じ意味を持っています!
SMLラムダの微積分変換関数を作成していますが、いくつかのエラーが発生しましたが、修正方法はわかりません。 cfunf id (CAPP(e1,e2))=
if not(cfree id (CAPP(e1,e2)))
then CAPP(CK,CAPP(e1,e2))
else
if ((CID id) = e2) andalso not(c