関数型プログラミング言語の多くは、カリー化されたパラメーターをサポートしています。カリー化関数をサポートするために、関数へのパラメーターは本質的にタプルであり、最後のパラメーターを省略して、より小さなタプルを必要とする新しい関数を作成できます。
関数パラメーターに常にレコード (名前付きパラメーター) を使用する言語を設計することを考えています。
したがって、私の偽物の言語の単純な数学関数は次のようになります。
add { left : num, right : num } = ...
minus { left : num, right : num } = ..
これらの 2 つの名前付きパラメーターがある限り、これらの関数に任意のレコードを渡すことができます (「左」と「右」だけを使用することもできます)。
名前付きパラメーターが 1 つしかない場合は、新しい関数が作成されます。
minus5 :: { left : num } -> num
minus5 = minus { right : 5 }
上記の Haskell の表記の一部をお借りしています。
これを行う言語を見た人はいますか?