ml

    1

    2答えて

    私はSMLで関数を定義する2つの方法があることに気付きました。アドイン機能を取る場合例えば、これらは2つの方法があります。 :秒1のように、関数型を作成し val add = fn : int -> int -> int :として fun add x y = x+y; fun add(x,y) = x+y; は、第一の方法は、関数型を作成します val add = fn : int *

    2

    1答えて

    空リストのタイプがSML(私はPolyMLを使用しています)に何であるのでしょうか? 私は通訳に[]を入力すると、私が出る: val it = []: 'a list 私が期待するものです。しかし、その後、私が入力した場合は言う: fun f a = if a = 0 then [] else [[]]; が、私は得る: val f = fn: int -> 'a list list

    1

    1答えて

    の値の制限では、タイプの安全性を損なう可能性のあるコンテキストでのタイプの一般化が防止されます。コアの問題は、このOCamlのコードで、例えばように、配列決定、突然変異および多型の種類を組み合わせることから生じると思われる: let x = ref [];; (* value restriction prevents generalization here *) x := 1::!x;; (

    1

    1答えて

    は三木の種類が定義されます。私は、関数は三元ツリーに一致するように& foldlのをマップ変更する必要が datatype ’a tree = Leaf of ’a | Node of ’a tree * ’a tree * ’a tree ... fun tree_map (f : ’a -> ’b) (t : ’a tree) : ’b tree = f,nil) = nil |

    5

    2答えて

    次の関数: fun fac (0 : int) : int = 1 | fac (n : int) : int = n * fac (n - 1) または関数で: fun even 0 = true | even x = odd(x-1) and odd 0 = false | odd x = even(x-1); 私はMLで少し経験を持っていると私はちょう

    3

    2答えて

    MLで変数に複数の型を持たせることは可能ですか? たとえば、ツリー内のノードをintまたは文字列にしたい場合。 Node of int * string これを試しましたが、タプルタイプ(int、string)になります。私はそれがタプル、intまたは文字列のいずれかになりたくない。これは許可されていますか?

    1

    1答えて

    のは、私は次のツリーデータ型を持っているとしましょう:ここ datatype 'a tree = Empty | Node of 'a * 'a tree * 'a tree; val x = Node(10, Node(20, Empty, Empty), Node(30, Empty, Empty)); 、xはint型の木の変数です。私が知りたいのは、与えられた木のさまざまな部分を解剖し

    0

    1答えて

    私は機能を構築しています:文字列とそのサイズを取得し、それが逆に戻る val recur = fn : string * int -> string; を。 しかし、多少、私はそれを建てたとして、それは、私のために動作しません。誰が私に問題を指すことができますし、多分少し修正を与える: fun recur (s:string, sz:int) = if sz = 1 then substrin

    1

    2答えて

    ケースの表現(クラスの次のセクションにあります)を使用せずに、私はクイックソートをやっていない理由を理解できません。それはどこかのループに入り、決して終わらない。 splitAtとappendは既に厳しくテストされていますが、ここではそれらのコードがあります。 fun append(xs, ys) = if null xs then ys else (hd xs) :: append(tl