Если c
- это что-то вроде (1+)
, то это может привести к утечке, когда вы создаете цепочку громов (1+(1+(1+...)))
. Чтобы избежать этого, используйте seq
:
let k' = c u in k' `seq` a k' f l
seq
вызовет оценку k'
, прежде чем можно будет оценить a k' f l
, поэтому во многих случаях это устранит утечку пространства.
Тем не менее, seq
не является панацеей, и вы должны прочитать о правильном использовании и избегать неправильного использования .