Hi,
It seems that unfoldrI doesn't completely (un)fold constants; instead, Clash would unfold it once and generate a circuit to do the rest. A minimal example looks like this:
```
module Example.Project (topEntity, plus) where
import Clash.Prelude
import Data.Tuple (swap)
plus :: Vec 3 (Signed 8) -> Vec 3 (Signed 8) -> Vec 3 (Signed 8)
plus = liftA2 (+)
topEntity :: Vec 3 (Signed 8) -> Vec 3 (Signed 8)
topEntity = plus $ map fromInteger $ unfoldrI (swap . flip divMod 128) 100000
```
We found that in the generated verilog, the constant 100000 is folded once as follows:
```
assign \Example.Project.topEntity1 = {{64'sd32, 64'sd781}, \Example.Project.topEntity2 };
```
And it seems that the rest of the work is done by a divModInteger circuit. Is this the expected behavior? Is it possible to completely (un)fold the constant at compile time and not generate any division circuits? Any comments or suggestions would be greatly appreciated.
All the Best,
Chen-Mou Cheng