Вы неправильно поняли переменные в Haskell: как только они определены, они никогда не меняют своего значения, поэтому, если вы надеетесь выполнить присваивание внутри ветви, это не сработает.Однако может помочь следующее:
let x = if (cond) then .. else .. in f x
Будьте осторожны, чтобы не читать x
в if-then-else, если вы не знаете, что делаете :-) Еще одно напоминание: если вы используете другой let x = ..
внутри этой конструкции, она будет "затенять" внешнюю x
, поэтому она будет фактически новой, новой переменной.