Scheme 语法备忘录

  1. 定义变量或函数:语法 (define <name> <value>)
  2. 定义宏:语法 (define-macro <name parameters> <body>)。不同于函数,宏不会计算值,而是实现代码的替换,可以实现很多奇妙的功能,例如实现 for 循环:
    (define-macro
     (list-of map-expr for var in lst if filter-expr)
     `(map (lambda (,var) ,map-expr)
    	   (filter (lambda (,var) ,filter-expr) ,lst)))
    
  3. 运算符:加减乘正常,除法 quotient,取模 remainder;语法 (+ a b)
  4. 数学运算:平方根 sprt,乘方 expt,自然对数 log,三角函数 sin, cos,tan, asin, acos等;
  5. 布尔值:#t #f;
  6. 条件语句:if 句语法 if <condition> <suite-1> <suite-2>,为真执行 suite-1,为假执行 suite-2;cond 句语法为
    cond
    	<condition-1> <suite-1>
    	<condition-2> <suite-2>
    	<condition-3> <suite-3>
    ...
    
    不同于 switch,cond 会判断每一个条件;如果 conditions 全为简单变量,可以用 case 代替 cond;
  7. 数据结构:用 cons 建立 Pair 表示树形结构,必须以 nil 结束,语法为 (cons 1 (cons 2 (cons 3 nil)));用 car 取首元素,用 cdr 取除了首元素外的其他元素;
  8. quote:用 ' 标记的表达式不计算值,只返回字面内容,'(1 2 3) 返回一个 list;
  9. quasi-quotation:类似 quote,但用 ` 表示,内部可以通过在变量前加 , 选择将其作为值处理,整体上类似 Python 的 .format() 方法。
  10. 内建函数:参考该网页
  11. lambda 表达式:语法 (lambda <parameter list> <body>)
posted @   XYukari  阅读(200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示