File tree 1 file changed +11
-5
lines changed
1 file changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ export const exp = api => exp => {
22
22
}
23
23
24
24
// evaluate a list (AST)
25
- export const evalAst = api => ast => {
25
+ export const evalAst = api => async ast => {
26
26
// () = null
27
27
if ( ast . length === 0 ) {
28
28
return [ 'atom' , null ]
@@ -42,12 +42,18 @@ export const evalAst = api => ast => {
42
42
}
43
43
}
44
44
let fn = api . getValue ( op )
45
- if ( fn !== undefined && fn [ 0 ] === 'fn' ) {
46
- return evaluateFn ( api , op , fn [ 1 ] , args )
45
+ if ( fn !== undefined ) {
46
+ if ( fn [ 0 ] === 'fn' ) {
47
+ return evaluateFn ( api , op , fn [ 1 ] , args )
48
+ } else if ( typeof fn === 'function' ) {
49
+ return await fn ( api , args )
50
+ } else {
51
+ return api . evalAst ( [ 'throw' , `'The operation is not valid: ${ op } '` ] )
52
+ }
47
53
} else if ( api . env [ op ] ) {
48
- return api . env [ op ] ( api , args )
54
+ return await api . env [ op ] ( api , args )
49
55
} else if ( atoms [ op ] ) {
50
- return atoms [ op ] ( api , args )
56
+ return await atoms [ op ] ( api , args )
51
57
} else {
52
58
return api . evalAst ( [ 'throw' , `'The operation is not defined: ${ op } '` ] )
53
59
}
You can’t perform that action at this time.
0 commit comments