process_release/1 and process_wait/2 api cleanup
From [swi-prolog](https://www.swi-prolog.org/pldoc/doc_for?object=process_release/1) version of process module:
> process_release(+PID)
Release process handle. In this implementation this is the same as process_wait(PID, _).
in swi-prolog:
```prolog
?- process_create(path(true), [], [process(P)]), process_wait(P, R), process_id(P, ID).
P = ID, ID = 337330,
R = exit(0).
?- process_create(path(true), [], [process(P)]), process_release(P), process_id(P, ID).
P = ID, ID = 337333.
```
in scryer:
```prolog
?- process_create("true", [], [process(P)]), process_wait(P, R), process_id(P, ID).
P = '$process'(337810), R = exit(0), ID = 337810.
?- process_create("true", [], [process(P)]), process_release(P), process_id(P, ID).
error(existence_error(process,'$dropped_value'),[predicate-process_id/2|process_id/2]).
```
I think `process_wait/2` should do all the cleanup. Also, is there any reason to wrap a process in a custom struct? Why not just pass the process id around like swi does it?
22 条评论