[Haskell-cafe] Are there arithmetic composition of functions?

oleg at okmij.org oleg at okmij.org
Thu Mar 22 07:27:41 CET 2012


> At present we can easily express different flavors of conjunction, but
> expressing disjunction is hard. 

Disjunction is not particularly difficult. See, for example,

	http://okmij.org/ftp/Haskell/TTypeable/TTypeable.hs

and search for ORELSE. The code demonstrates higher-order type-level
programming (for example, higher-order function Member with
the equality predicate as the argument). The file implements
closed-world negation for type predicates. See
	http://okmij.org/ftp/Haskell/typeEQ.html
for explanations.

Incidentally, one application of that machinery is precisely your
original problem. The code
	http://okmij.org/ftp/Haskell/TTypeable/NotAFunctionT.hs

implements vector spaces as function spaces, so you can use the same
operation <+> :: Vspace v => v -> v -> v to add arguments of the type
(Num n =>n), Num n => a -> n, Num n => a -> b -> n, etc.
(there is also a scalar-vector multiplication).
 




More information about the Haskell-Cafe mailing list