1
ラスカルのリストに対する再帰関数の書き方は? 私は仕事に次のようなものを期待していますが、このスタイルでそれを書きたい場合には、これは動作しますしませラスカル関数定義でのリスト再帰の使い方
list[int] inc([]) = [];
list[int] inc([int H, *int T]) = [H+1,inc(T)];
ラスカルのリストに対する再帰関数の書き方は? 私は仕事に次のようなものを期待していますが、このスタイルでそれを書きたい場合には、これは動作しますしませラスカル関数定義でのリスト再帰の使い方
list[int] inc([]) = [];
list[int] inc([int H, *int T]) = [H+1,inc(T)];
ん:目の前で*
を
list[int] inc([]) = [];
list[int] inc([int H, *int T]) = [H+1, *inc(T)];
注意inc
への再帰呼び出しでは、結果をリストにスプライスする必要があります。inc
はリスト自体を返します。代替は、次のようにリストconcatentationため+
を使用しており、この第2の機能を記述するために、次のようになります。
list[int] inc([int H, *int T]) = (H+1) + inc(T);
ラスカルでこれを書くために、より標準的な方法として、リスト内包して次のようになります。
list[int] inc(list[int] xs) = [ x + 1 | x <- xs ];
List
ライブラリには、mapper
という関数もあります。この関数を使用すると、関数をリストにマップすることができます。それを使って、これを書くことができます:
mapper(xs, int(int x) { return x + 1; });
ここで、xs
は整数のリストです。