Hello, It is happening in practice that one wants to create a static pointer in a function and use some local definitions.
> f :: Static (Int -> Int) > f x = sf > where > body = (+1) > sf = Static body 'body' defines a closed expression, but this is currently rejected because desugaring the static form would produce a top-level binding of the form: > sf_top_level :: Int -> Int > sf_top_level = body where the local binding 'body' is not in scope. Barring inlining, which wouldn't work in more complex examples, one approach around this is to have the compiler move local definitions to the top level during desugaring when they are referenced by a static pointer. Two questions arise: 1) Would this interfere with other aspects of compilation? 2) Would anyone argue there is a better approach to accomplish this? Thanks, Facundo _______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
