Core Language

2012-01-26 Thread Jakob Eriksson


On January 26, 2012 at 1:34 AM Alex Gilding alex.gild...@talktalk.net wrote:


 2) Related to that, the download page describes miniPicoLisp as pure
 PicoLisp, supporting the full language. Is there any kind of
 established definition of what specifically constitutes the PicoLisp 
 
 
Good initiative!
I suggest we create such a list, for several reasons. We could prototype on
some wiki the definitions. My suggestions:
 
 
 
 - Virtual machine specification
 
   * Coding of cells and S-expressions in memory
   * how eval loop must run
 
   (Right now there are three standards, the miniPicoLisp,
    the 32-bit PicoLisp, and the x86_64 PicoLisp.)
 
 
 
 - Core language specification
 
   * list and data manipulating
   * very basic I/O, like stdin and stdout
 
 
 - Full PicoLisp Runtime Specification:
 - all of the above
 - PicoLisp database
 - networking
 - whatever is in the current PicoLisp download
 
 
 
Rationale for virtual machine specification:
 interoperability with (potential) 3rd party implementations,
 and ease implementation in PicoLisp in hardware. (FPGA: VHDL/Verilog/MyHDL.)
 
 
Rationale for Core Language Specification:
 make it easier to embed the language in embedded systems or in other
programs, like
 eLua and Lua, and also help 3rd party implementors.
 
Rationale for Full PicoLisp Runtime Specification:
 specify a core set of services, like how the JRE has also a has set of JDBC
connectors,
 network helpers, like how C the language also has it's standard C library and
so on.
 
 
This separation will also help new students to better understand how the
language works
and everything fits together.
 
 
On top of all of that, I am open to creating a 3rd party repository of
PicoLisp
libraries like CPAN for Perl or PEAR for PHP. These could live on a separate
server,
I could host it.
 
 
 
Pilog I don't know where to put in the lists above... can it be had separate
from the DB?
 
 
best regards,
Jakob
 
--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: Implementation differences

2012-01-26 Thread Alexander Burger
Hi Tomas,

 Alex Gilding alex.gild...@talktalk.net writes:
  Is there any kind of established definition of what specifically
  constitutes the PicoLisp language? i.e. what must, and what should, a
  third party Lisp implementation provide in order to be able to call
  itself a PicoLisp?
 ...
 The only definition for picolisp is whatever Alex thinks it's picolisp.

Nono. I'm not the owner of PicoLisp, just the discoverer.


What I probably meant with the pure language is everything which deals
with plain Lisp data like symbols and lists -- as opposed to the
system dependent parts like I/O, networking, process control etc.

In this aspect, mini, ersatz, the C and the assembler versions of
PicoLisp should all be compatible. A major difference, though, is that
mini supports only small numbers.


 For Alex, the data representation described in one of the text files in
 the repository is the core idea of picolisp.  The rest is mostly
 examples.

Right. It is the structures file in the doc/ directories.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: Implementation differences

2012-01-26 Thread Alexander Burger
Hi Alex,

 1) Is there a definitive list somewhere of which features are
 present in the different versions of PicoLisp?

Well, you can generate it easily ;-)

: (diff (all) (in '(mini/pil -println (all) -bye) (read)))


 (Speaking of which, are we permitted to redistribute the
 documentation?)

Sure. Why not?

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: miniPicoLisp Trasnients

2012-01-26 Thread Alexander Burger
Hi Doug,

 (de foo (x) x)
 ...
 (de baz (X) X)

Hmm, this looks very much as if the call

   isIntern(tail(y), Transient)

doesn't work for some reason. It seems that the two X symbols are not
the same.

Strange that it works for 'Internal' symbols.


 (setq V 456)
 at the top level (not in a definition) that works as expected

Again strange. It shouldn't matter how the symbol is used (globally or
bound locally).


 I wonder why it might not see X as a transient? (Er, I'm not even
 sure if transient is the the right terminology here.)

Yes, transient is correct.

I suspect that the above effects are partially random. The reason must
have to do with the index tree handling in isIntern() and intern().
Perhaps again some alignment or pointer-tag problem?

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: Core Language

2012-01-26 Thread Alexander Burger
Hi Jakob,

    (Right now there are three standards, the miniPicoLisp,
     the 32-bit PicoLisp, and the x86_64 PicoLisp.)

Please let me point out that the 64-bit version is in no way restricted
to the x86_64 architecture. It just happens to be the first (and
probably most useful) implementation. The Ppc64 port was done last year,
and at least Sparc9 and ARMv8 versions are planned.

The fourth standard would be ErsatzLisp.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: Implementation differences

2012-01-26 Thread Alex Gilding
OK. Combining that idea with the evaluation rules described in the 
Reference sounds like it ought to be enough for the moment. (I guess 
there's always the So is this still PicoLisp? test later on, if it 
ever comes to that!)


Thanks,

Alex G


On 26/01/2012 08:54, Alexander Burger wrote:

Hi Tomas,


Alex Gildingalex.gild...@talktalk.net  writes:

Is there any kind of established definition of what specifically
constitutes the PicoLisp language? i.e. what must, and what should, a
third party Lisp implementation provide in order to be able to call
itself a PicoLisp?

...
The only definition for picolisp is whatever Alex thinks it's picolisp.

Nono. I'm not the owner of PicoLisp, just the discoverer.


What I probably meant with the pure language is everything which deals
with plain Lisp data like symbols and lists -- as opposed to the
system dependent parts like I/O, networking, process control etc.

In this aspect, mini, ersatz, the C and the assembler versions of
PicoLisp should all be compatible. A major difference, though, is that
mini supports only small numbers.



For Alex, the data representation described in one of the text files in
the repository is the core idea of picolisp.  The rest is mostly
examples.

Right. It is the structures file in the doc/ directories.

Cheers,
- Alex

--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: miniPicoLisp Transients

2012-01-26 Thread Doug Snead
--- On Thu, 1/26/12, Alexander Burger a...@software-lab.de wrote:
  (setq V 456)
  at the top level (not in a definition) that works as
 expected
 
 Again strange. It shouldn't matter how the symbol is used
 (globally or bound locally).

Hi Alex,

Thanks for the guidance!

On second look, I was wrong about  (setq V 456)  ... it returns V from the 
top level on the (incomplete) android arm port.  Close, though.  :-)

Cheers,

Doug



-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe