[eeps] allow external function as literals
    Tony Rogvall 
    tony@REDACTED
       
    Wed Oct  1 23:55:36 CEST 2014
    
    
  
Hi eep.
In a toy project I am doing I generate code on form:
-module(foo).
-export(['_ffe_sqr'/0,'_ffe_sum'/0]).
'_ffe_sqr'() ->
    { 0, <<"sqr">>, fun ffe:docol/4,
      fun ffe:dupe/0, fun ffe:star/0, 
      fun ffe:semis/0 }.
'_ffe_sum'() ->
    { 0, <<"sum">>, fun ffe:docol/4,
      fun ffe:lit/0,  1,
      fun ffe:pqdo/0, 4,
        fun ffe:plus/0, 
      fun ffe:ploop/0, -2, 
      fun ffe:semis/0 }.
To my (mild) surprise I discovered that the tuples above where NOT generated as literals!
So of course I checked if there was any particular reason for this.
I developed a patch produced to patch function return values:
'__ffe_sqr'() -> <<"sqr">>.
here I replaced <<"sqr">>.
with
 { 0, <<"sqr">>, fun ffe:docol/4, fun ffe:dupe/0, fun ffe:star/0, fun ffe:semis/0 }.
in the literal section of the beam file using beam_lib and a simple match.
The loader worked and the code now return constant tuples with functions in them.
Question: 
1. Is my code going to crash later ?  :-)
2. if so can I do anything about it ?
3. if not can we get external funs as supported literals ?
/Tony
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/eeps/attachments/20141001/eeef73a6/attachment.htm>
    
    
More information about the eeps
mailing list