wording
This commit is contained in:
1 parent
59b752e6c9
commit
063a1735a0
1 file changed
+3
-4
@@ -167,7 +167,7 @@ test() -> callme('foo' , 5);
|
|||||||
callme(fun, arg) -> call(fun, arg);
|
callme(fun, arg) -> call(fun, arg);
|
||||||
```
|
```
|
||||||
|
|
||||||
In this case `'foo'` will not dereferenced in `lib` is not visible by name. In tightly coupled modules, where `lib` is just
|
In this case `'foo'` will fail to dereference in `lib` as it is not visible by name. In tightly coupled modules, where `lib` is just
|
||||||
a component of your `app` you can use circular import to acknowledge the symbol from the other module (pretty much like
|
a component of your `app` you can use circular import to acknowledge the symbol from the other module (pretty much like
|
||||||
imports in Java classes), and that solves the issue but makes the library dependent on the main app:
|
imports in Java classes), and that solves the issue but makes the library dependent on the main app:
|
||||||
```
|
```
|
||||||
@@ -175,7 +175,7 @@ imports in Java classes), and that solves the issue but makes the library depend
|
|||||||
import('app','foo');
|
import('app','foo');
|
||||||
callme(fun, arg) -> call(fun, arg);
|
callme(fun, arg) -> call(fun, arg);
|
||||||
```
|
```
|
||||||
But you can circumvent that issue by explictly dereferencing the local function where it is used as a lambda argument created
|
You can circumvent that issue by explicitly dereferencing the local function where it is used as a lambda argument created
|
||||||
in the module in which the requested function is visible:
|
in the module in which the requested function is visible:
|
||||||
```
|
```
|
||||||
//app.sc
|
//app.sc
|
||||||
@@ -187,7 +187,7 @@ test() -> callme(_(x) -> foo(x), 5);
|
|||||||
//lib.scl
|
//lib.scl
|
||||||
callme(fun, arg) -> call(fun, arg);
|
callme(fun, arg) -> call(fun, arg);
|
||||||
```
|
```
|
||||||
Or passing an explicit reference to the function, not calling it by name:
|
Or by passing an explicit reference to the function, instead of calling it by name:
|
||||||
```
|
```
|
||||||
//app.sc
|
//app.sc
|
||||||
import('lib', 'callme');
|
import('lib', 'callme');
|
||||||
@@ -195,7 +195,6 @@ global_foohandler = (foo(x) -> x*x);
|
|||||||
test() -> callme(global_foohandler, 5);
|
test() -> callme(global_foohandler, 5);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Little technical note: the use of `_` in expression passed to built in functions is much more efficient due to not
|
Little technical note: the use of `_` in expression passed to built in functions is much more efficient due to not
|
||||||
creating new call stacks for each invoked function, but anonymous functions is the only mechanism available for
|
creating new call stacks for each invoked function, but anonymous functions is the only mechanism available for
|
||||||
programmers with their own lambda arguments
|
programmers with their own lambda arguments
|
||||||
|
|||||||
Reference in new issue
Block a user