> If I used the overloaded call operator, all the functions would have to 
> inherit/derive from the base Function type?

No the call operator works just like any other `proc` it just has special 
syntax. If you didn't want to use that syntax in your exported module and just 
use it as an implementation detail, I wouldn't worry about it.

Also you could model it like this and avoid those unsafe pointer casts.
    
    
    type
      StateFn = object
        rep: proc(b: var bool): StateFn
    
    
    Run

Reply via email to