From: norman werner
Subject: relationship skill/common-lisp
Date: 
Message-ID: <b301fb47.0407290740.78a6bae7@posting.google.com>
Does anyone know of the relationship between Skill and Common Lisp?
May be even about the reason to develope Skill++?

just curious

Norman Werner

PS: 

Skill is the Language embedded into Cadence (Cadence is _the_
application for developing integrated circuits).

I wonder especially why it has dynamic scope (pre CL Lisp?)
and why they developed to Skill++ - which is said to be based on
scheme albeit no call/cc, tail-recursion, lexical scope but with
support of infix-notation.

From: Jim Newton
Subject: Re: relationship skill/common-lisp
Date: 
Message-ID: <2mvigfFrmhonU1@uni-berlin.de>
i've been using SKILL for about 15 year.  what would you like
to know about it?  the language is as you say  embedded into Cadence
tools.  I believe the language was defined some 20 years ago (maybe more???)
with dynamic scoping.

recently within the last 10 years SKILL++ was 99% backward compatible
has an object system (a simple one) based on CLOS and offers lexical
scoping.

why was SKILL++ developed?   i believe to offer an alternative
to dynamic scoping and to offer an object system.

yes it supports infix opperators.  e.g., the names of the
arithmetic functions are plus, difference, times and quotient,
not +, -, * and / as in common lisp.  the parser parses the following
expressions EXACTLY the same.

1 + 2 + 3 + 4 ;; implicit parentheses
( 1 + 2 + 3 + 4)
(plus 1 2 3 4)
( plus 1 2 3 4)
plus( 1 2 3 4) ;; notice no space between plus and the parenthesis.

you can specify when printing whether it should print with infix or
prefix notation.

what else would you like to know?

-jim


norman werner wrote:
> Does anyone know of the relationship between Skill and Common Lisp?
> May be even about the reason to develope Skill++?
> 
> just curious
> 
> Norman Werner
> 
> PS: 
> 
> Skill is the Language embedded into Cadence (Cadence is _the_
> application for developing integrated circuits).
> 
> I wonder especially why it has dynamic scope (pre CL Lisp?)
> and why they developed to Skill++ - which is said to be based on
> scheme albeit no call/cc, tail-recursion, lexical scope but with
> support of infix-notation.
From: norman werner
Subject: Re: relationship skill/common-lisp
Date: 
Message-ID: <b301fb47.0407310146.3af94f7f@posting.google.com>
> i've been using SKILL for about 15 year.  what would you like
> to know about it?  the language is as you say  embedded into Cadence
> tools.  I believe the language was defined some 20 years ago (maybe more???)
> with dynamic scoping.

I am young. For me common lisp is the only lisp. So i played around 
with skill and began wondering. But if it is that old it explains a lot.


> what else would you like to know?

How does the compiler/interpreter distinguish whether some code is skill or skill++?


norman
From: Jim Newton
Subject: Re: relationship skill/common-lisp
Date: 
Message-ID: <2n1aevFpcmq3U1@uni-berlin.de>
wll you can freely mix skill and skill++.
code that is defined in a file with a .il extension obeys
dynamic scoping and code in a .ils file obeys lexical scoping.
you can include any code in an (inScheme ...) form or an (inSkill ...)
form to force scoping and ignore the file extension.

once functions have been defined the function knows its scope and it
can be freely called from lexical or dynamic scope environment.

defclass/defgeneric/defmethod work in both scopings as well.

I belive you can even have some methods obey one scoping and
other methods of the same generic function obey the other
scoping.

there are a few things to be careful of.  SKILL has three types
of lambda "types" lambda/nlambda/mlambda.  lambda defines
normal functions.  the arguments of these functions get auto
evaluated by the skill engine before the function is called.
nlambda functions receives the list of arguments unevaluated.
the function is responsible to evaluate them if it wants to
or not eval if it does not want to.  you can implement functions
such as "and" and "or" with nlambda.  and mlambda functions
are macros.  macros are expanded at parse time and nlambdas
are evaluated everytime they are called.

i think it is a clever language.  some things would be
done different i think if it did not have to be backward
compatible.

-jim


norman werner wrote:
>>i've been using SKILL for about 15 year.  what would you like
>>to know about it?  the language is as you say  embedded into Cadence
>>tools.  I believe the language was defined some 20 years ago (maybe more???)
>>with dynamic scoping.
> 
> 
> I am young. For me common lisp is the only lisp. So i played around 
> with skill and began wondering. But if it is that old it explains a lot.
> 
> 
> 
>>what else would you like to know?
> 
> 
> How does the compiler/interpreter distinguish whether some code is skill or skill++?
> 
> 
> norman