Getting errors and results back from spawned process

Started by cormullion, November 08, 2010, 09:37:24 AM

Previous topic - Next topic

cormullion

Playing with this area of newLISP. It seems to be not possible to communicate errors using catch.


> (catch (eval-string {(+ 2 2)}) 'result)
true
>
> result
4
> (catch (eval-string {(+ 2 2}) 'result)
nil
> result
"ERR: missing parenthesis in function eval-string : "...(+ 2 2                              ""
>
> ; so the basic idea works. Try it with spawn...
>
> (spawn 'p1 (catch (eval-string {(+ 2 2)}) 'result))
15789
> (sync 10)
true
> p1
true
> result
"ERR: missing parenthesis in function eval-string : "...(+ 2 2                              ""
>


Is there a way to get results and errors from a spawned process using catch? Or is it a job for send/receive?



(newLISP v.10.2.8 on OSX IPv4 UTF-8)

Lutz

the 'result' you ask for is not the 'result' from the spawned process but from the main process, where it had been set before.



Return 'result' from the spawned process to make it visible in 'p1':


> (spawn 'p1 (begin (catch (eval-string {(+ 2 3}) 'result) result))
39123
> (sync 1000)
true
> p1
"ERR: missing parenthesis in function eval-string : "...(+ 2 3


The only thing you get back from the spawned process is in 'p1'.

cormullion

Ah, yes! That works great.



As ever  - thanks Lutz!