Pure Arrow言語を使用できると思います。
Pure Arrow言語を使用できると思います。とても簡単に聞こえますが、何が問題なのでしょうか?本当に不足しているものを見てみましょう。いくつかの関数を、呼び出すべき関数として定義してみましょう。> function arrowA <G>(arg:G): G-> G def A =(arg)。A; def B =(arg)。B; def C =(arg)。C;> arrowA。F = 2;> arrowA。B = 7;> arrowA。C = 5;> arrowA。A = 10;> arrowA。A:G> arrowA:G-> G何が問題なのか?自分ですべてを定義しない限り、関数が返すものを宣言する方法はありません。 > myFunction:(G =)G-> G def A:G =(arg)。A; def B:G =(arg)。B; def C:G =(arg)。C;> myFunction。A = 4;> myFunction。C = 7;> myFunction。C:G = 4> myFunction。A = 4;> myFunction。B = 7;> myFunction。B:G = 3ジェネレーターを生成する関数よりも複雑なもの初期値とジェネレーターを受け取るジェネレーター関数を定義する場合、l etは、結果の定義方法を定義することから始めます。 >結果=(arg)。 G; >結果:(G =)G-> G def X <N>(n:N):G =(arg)。バツ ; def Y:G =(arg)。 Y; def U:G =(arg)。 U; > result // 2つの関数を持つジェネレーター。 //通常のジェネレーター関数でそれらを使用できます。 //ジェネレータに関数を渡します。 def GX <T>(arg:T):G return arg; def GY <T>(arg:T):G return arg;