Пара вопросов
1. Всегда ли чистые функции для одинаковых аргументов выполняются один раз? То есть
f yy = (yy, myCalc $ head yy)
g = (myCalc y, f [y])
и
f yy x = (yy, x)
g = let x = myCalc y
    (x, f [y] x)
2. Какой аналог для i++ в IORef?
   x <- readIORef i
   let y = x + 1
   writeIORef i y
   return y
можно сделать короче?






