shithub: sl

ref: f4eca39822c7c76bd36b15dcfaf2a8641cffa9f5
dir: /syntax.md/

View raw version
# Syntax differences

<table style="width:100%">
<tr>
	<th>StreetLISP</th>
	<th>Scheme</th>
</tr>
<tr>
	<td>	(help help)						</td><td>	(help help) (in Racket)		</td>
</tr>
<tr>
	<td>	(def (f x y) ...)				</td><td>	(define (f x y) ...)		</td>
</tr>
<tr>
	<td>	(defmacro (f x y) ...)			</td><td>	(define-syntax f ...)		</td>
</tr>
<tr>
	<td>	<a href="https://lisp-docs.github.io/cl-language-reference/chap-8/i-b-dictionary/defstruct_macro">(defstruct ...)</a>				</td><td>	(define-record-type ...)	</td>
</tr>
<tr>
	<td>	(if cond if-true if-else)		</td><td>	(if cond if-true if-else)	</td>
</tr>
<tr>
	<td>	(when cond expr)				</td><td>	(if cond expr)				</td>
</tr>
<tr>
	<td>	(unless cond expr)				</td><td>	(if (not cond) expr)		</td>
</tr>
<tr>
	<td>	NIL, ()							</td><td>	null, '()					</td>
</tr>
<tr>
	<td>	NIL, T (case-sensitive)			</td><td>	#f, #t						</td>
</tr>
<tr>
	<td>	(not x)							</td><td>	(null? x)					</td>
</tr>
<tr>
	<td>	(car ()) → NIL					</td><td>	(car '()) → ERROR			</td>
</tr>
<tr>
	<td>	(cdr ()) → NIL					</td><td>	(cdr '()) → ERROR			</td>
</tr>
<tr>
	<td>	(cons? v)						</td><td>	(pair? v)					</td>
</tr>
<tr>
	<td>	(str sym)						</td><td>	(symbol->string sym)		</td>
</tr>
<tr>
	<td>	(str ...)						</td><td>	(string ...)				</td>
</tr>
<tr>
	<td>	(sym str)						</td><td>	(string->symbol str)		</td>
</tr>
<tr>
	<td>	(num->str n :base radix)		</td><td>	(number->string n radix)	</td>
</tr>
<tr>
	<td>	(str->num str)					</td><td>	(string->number str)		</td>
</tr>
<tr>
	<td>	(subseq str start end)			</td><td>	(substring str start end)	</td>
</tr>
<tr>
	<td>	(length str)					</td><td>	(string-length str)			</td>
</tr>
<tr>
	<td>	(str-rune str i)				</td><td>	(string-ref str i)			</td>
</tr>
<tr>
	<td>	(map rune-upcase str)			</td><td>	(string-upcase str)			</td>
</tr>
<tr>
	<td>	(rune-whitespace? r)			</td><td>	(char-whitespace? r)		</td>
</tr>
<tr>
	<td>	(rune-upcase r)					</td><td>	(char-upcase r)				</td>
</tr>
<tr>
	<td>	(rune codepoint)				</td><td>	(integer->char codepoint)	</td>
</tr>
<tr>
	<td>	(rune->codepoint r)				</td><td>	(char->integer r)			</td>
</tr>
<tr>
	<td>	(bool? v)						</td><td>	(boolean? v)				</td>
</tr>
<tr>
	<td>	(int? v)						</td><td>	(integer? v)				</td>
</tr>
<tr>
	<td>	(num? v)						</td><td>	(number? v)					</td>
</tr>
<tr>
	<td>	(rune? v)						</td><td>	(char? v)					</td>
</tr>
<tr>
	<td>	(str? v)						</td><td>	(string? v)					</td>
</tr>
<tr>
	<td>	(sym? v)						</td><td>	(symbol? v)					</td>
</tr>
<tr>
	<td>	(vec? v)						</td><td>	(vector? v)					</td>
</tr>
<tr>
	<td>	(equal? a b)					</td><td>	(string=? a b)				</td>
</tr>
<tr>
	<td>	(vec->list v)					</td><td>	(vector->list v)			</td>
</tr>
<tr>
	<td>	(list->vec lst)					</td><td>	(list->vector lst)			</td>
</tr>
<tr>
	<td>	(length v)						</td><td>	(vector-length v)			</td>
</tr>
<tr>
	<td>	(aref v i)						</td><td>	(vector-ref v i)			</td>
</tr>
<tr>
	<td>	(aset! v i x)					</td><td>	(vector-set! v i x)			</td>
</tr>
</table>