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