1

現在、私のコードは次のようになっています。

fun gradImage () =
    let val iImg = Gdimage.image(640,480) (0,0,0);
        val void = mapi gradient iImg;
    in
        Gdimage.toPng iImg "gradient.png"
    end;

mapiは、int int-> int int * int->image->unit型の関数です。基本的に、提供された画像で動作します。

関数はvalvoid=..で見苦しく見えます

どうすればそれを排除できますか?

4

3 に答える 3

2

in式の間およびend式内に式のリストを含めることができますlet。したがって、コードを次のように書き直すことができます

fun gradImage () =
    let
        val iImg = Gdimage.image(640,480) (0,0,0)
    in
        mapi gradient iImg;
        Gdimage.toPng iImg "gradient.png"
    end;

コードはそのように書かれているように見えるので、私はその場でmapi変更を行うと思います。iImgそれはあまり機能的に聞こえません。mapi変更されたものを返す方が自然に感じますimageが、Gdimageインターフェースを見ると、そこでどのように行われているかのように見え、効率の観点からはおそらくより良いと思います。

于 2010-01-01T21:51:20.827 に答える
1

私は実際にによって提供される追加のタイプチェックを好みます

val () = mapi gradient iImg

これが醜いように見える場合は、そうする必要があります。あまり機能的ではなく、StandardMLは間違いなく関数型言語です。

于 2010-01-02T00:16:19.410 に答える
1

私がSMLを使用してから10年が経ちましたが、あなたが探しているのはこれだと思います。

fun gradImage () =
    let val iImg = Gdimage.image(640,480) (0,0,0)
    in
        ignore (mapi gradient iImg);
        Gdimage.toPng iImg "gradient.png"
    end;
于 2010-01-01T21:50:20.563 に答える