引数として渡された関数を 2 つの異なる型に適用する方法はありますか? 不自然な例として、(Maybe Int, Maybe Bool)
式(Just 3, Just True)
で を作成できますが、関数でこの動作をより一般的にしようとすると
generic :: (a -> Maybe a) -> (Maybe Int, Maybe Bool)
generic f = (f 3, f True)
のようなことができるようにするには、型変数が定数であるgeneric Just
ため、コンパイラが文句を言います。a
これの使用例は、各ノードがタイプによってパラメーター化されているツリー構造にジェネリック関数を適用することです。