Product Documentation
Cadence SKILL Language Reference
Product Version IC23.1, November 2023

Expressions

The following table describes the Scheme/SKILL++ equivalent expressions.

Scheme SKILL++ Comment

(improper lists),
such as (d ... . d)

Unsupported.

SKILL++ lists must end with nil.

(procedure calls),
such as (f e ...)

Same.

Can be written as f(e ...) in SKILL++ if f is a symbol (variable).

(and e ...)

Same.

(begin e ...)

Same.

Equivalent to progn in SKILL++.

(case ((d ...) e ...) ... [(else e ...)])

Same.

(cond (e ...) ... [(else e ...)])

Same.

(define x e)

(define (x v ...) body)

Same.

One can also use SKILL’s procedure syntax to define functions in SKILL++.

(do ((v e [e]) ...) (e ...) e ...)

Same.

(if e1 e2 e3)

Same.

SKILL++ allows extended if syntax (with then and else keywords) as in SKILL.

(lambda (x ...) body)

Same.

Improper variable list such as (x ... . y) can’t be used as formals in SKILL++. Use SKILL style @rest, @optional instead.

(let [x] ((v e) ...) body)

Same.

(let* ((v e) ...) body)

Supported.

Use letseq instead of let* in SKILL++.

(letrec ((v e) ...) body)

Same.

(or e ...)

Same.

(set! x e)

Supported.

Use setq or the infix = operator.

Related Topics

Scheme/SKILL++ Equivalents Tables

Lexical Structure

Functions


Return to top
 ⠀
X