Why a function should have at least one input?
There is no strong reason for this in verilog. I think this restriction isn't removed fin SystemVerilog. Some requirements where inputs are taken from global signal,those functions Don't need any input. A work around is to use a dummy input.