Я хочу иметь возможность составлять числовые функции в haskell, используя двоичные операторы. Так, например, с унарными числовыми функциями:
f*g
следует перевести на:
\x -> (f x)*(g x)
и аналогично для сложения. Создание собственного оператора для этого довольно просто, но мне бы очень хотелось просто сделать Num a => a -> a
функции экземпляром Num, но я не уверен, как это сделать.
Я бы также хотел, чтобы эта ария была родовой, но это может быть слишком большой проблемой для того, насколько сложно выполнять общие функции arity в Haskell, поэтому было бы лучше определить отдельный Num a => a -> a -> a
, Num a => a -> a -> a -> a
, и т.д. экземпляры до некоторого достаточно большого количества.