Alexander Burger wrote:
> Hi Cle,

Hi Alex,


>> The most languages
>> try the hell to avoid such ugly things like a SIGSEGV or SIGBUS ;-)
> PicoLisp doesn't want to do that. After all, these are "error messages",
> resulting from hardware runtime tests, optimal in terms of efficiency
> and reliability. A language cannot check for every possible error
> situation anyway (think of the halting problem).

This is ok, I think! Only it would be nice, if the reference manual
would describe more clearly what is going on and what is dangerous. But
perhaps with time I get more used to picoLisp, I can help a bit with the

> And PicoLisp can't do that without losing flexibility or efficiency. In
> this regard it behaves like C. You can easily crash PicoLisp, for
> example, by jumping to an arbitrary memory location (function pointer).
> I think this is acceptable, and not a problem in practical work.

Not meant as critique, but jumping to a non-sense function pointer
thereby killing the picoLisp process has another quality for me, than
calling 'unify' for instance outside a Pilog clause and get a SEGFAULT
for that blasphemy. The latter could be detected by the interpreter,
IMO. But this does not mean, I write a ticket against this "feature". I
will learn to cope with it :-)))

> Instead, PicoLisp encourages a defensive interactive development style,
> with tracing, debugging and introspection tools.

So does Erlang, Smalltalk, Ruby and a lot of other languages as well
IMO! So perhaps you would state, that picoLisp "require" a defensive
style? ;-)

>>> But the above version ('make' or 'solve') also calls Lisp ;-)
>> Yeah! But this is only one place, where Lisp is being used. And the
>> whole Pilog will get the the possibility to search for all solutions of
>> a query without implementing the query in Lisp :-)
> Ah, I see. I was thinking to implement 'findall' via the 'T' property.
> This seemed easier, and more efficient, because the requested list is
> already there without any further processing.

Ok, I see! But this was only for explanation purposes of 'findall'. In
reality the query to 'findall' could be as well something like:

   All ways from this certain signal backwards until a end-of-tracknet
was reached.

Once got those ways, something could be done with them, e.g. check, that
there will be a preceding signal on every way announcing that certain
signal in question.

So it would not only be a query like that I formulated in my ascii
example, but a much more complicated one!

>> Ah, this is understandable. I fear I was unclear, though! My question
>> should be, if 'findall' has a chance to get into the official picoLisp
>> implementation ("misc/pilog.l" would be ok), or whether I have to reside
>> the implementation in my own library?
> If you collect more such useful predicates, we should think about the
> name of such a library. I wouldn't use "misc/pilog.l", because in
> "misc/" there are simple tests and arbitrary little projects, but no
> libraries. It should better be some "lib/xxx.l" for Pilog extensions.

Yeah, I think you are right! But what could be the name of such a lib?
Until now, we have two such clauses gotten 'retract' and 'findall'.
Those would be Prolog compatibility functions. But calling it "prolog.l"
.. :-/

> Cheers,
> - Alex



Reply via email to