bow-swift / bow

🏹 Bow is a cross-platform library for Typed Functional Programming in Swift
https://bow-swift.io
Other
645 stars 32 forks source link

["Bug"] Free foldMap is not stack safe #635

Open ferranpujolcamins opened 3 years ago

ferranpujolcamins commented 3 years ago

Description

The foldMap is stack safe test found in Arrow's Free is not present in Bow. Furthermore, the test fails if added.

I believe this is caused because the new Free implementation lacks the special flatMap case found in the old one. A possible solution is to try to generalize the trampoline implementation of #636 as shown in the paper linked below. Then we can make Trampoline<A> = Free<ForFunction0, A> like in Arrow.

Expected outcome

foldMap is stack safe

Observed outcome

foldMap is not stack safe

Code to reproduce the Bug

saferFree branch in my fork.

Bow modules, version, platform

Bow module, master branch.

Tooling

Other

Some explanation of the issue and possible solution can be found in this paper

truizlop commented 3 years ago

Is this fixed now? I don't remember if you already addressed it.

ferranpujolcamins commented 3 years ago

No, it's not fixed.