Если у меня есть функция вроде следующегоHaskell: Вызов функции несколько раз в одной и той же линии
f x = if g x /= Nothing then g x else False
будет g
называться дважды f
или делает «кэш» Haskell результат g x
после первой инстанции для возможного последующего использования в одной строке? Я пытаюсь оптимизировать некоторый код, и я не знаю, являются ли функции в стиле выше, чем в два раза дороже вычислительных затрат, чем я хочу.
Заранее спасибо.
Кроме того, неважно, происходят ли вещи в одной строке. Это влияет на синтаксис, т. Е. Где начинается и заканчивается блок (который вы всегда можете писать явно с помощью '{}'), но кроме этого он ничего не влияет. – luqui