Some level of lazyness is nessasary for Haskell to work. For example, you can do:
a=1:a
main = show $ head a
With lazy evaluation, this will print "1", but with strict evaluation, this program will never terminate as it attempts to fully evaluate "a=1:a", which creates an infinite list.
>But realistically, an unused parameter should probably be removed.
You also have cases where a parameter is only used some of the time.
>But realistically, an unused parameter should probably be removed. You also have cases where a parameter is only used some of the time.